Compare commits

...

28 Commits

Author SHA1 Message Date
Syoyo Fujita
7b0bbc6570 Merge branch 'devel' into Selmar-generic_extension_support 2018-04-05 01:27:03 +09:00
Selmar Kok
9eae110946 serialize texture extensions 2018-04-04 18:10:37 +02:00
Selmar Kok
fa7022f364 Changed ExtensionMap to use Value instead of ParameterMap 2018-04-04 18:10:20 +02:00
Syoyo Fujita
6c67da478f Merge pull request #62 from bowald/feature/serializer-handle-image-output
small bugfix, serializer skipped texture samplers refering to first index.
2018-04-02 15:24:04 +09:00
johan bowald
b97d34cfee bugfix, serializer skipped texture samplers refering to first index. 2018-04-02 07:29:29 +02:00
Syoyo Fujita
142aed7499 Merge pull request #61 from bowald/fix/readme-update
Updated readme
2018-04-02 12:42:49 +09:00
johan bowald
ca80a591e0 updated readme: fixed example, fixed dead links to stb_image/stb_image_write 2018-04-01 22:57:07 +02:00
Syoyo Fujita
dc4bb86bf1 Suppress clang warnings. 2018-04-02 02:04:24 +09:00
johan bowald
ef151a4fed update examples with new defines 2018-04-01 14:08:45 +02:00
johan bowald
0894de77f9 added stb_image_write.h 2018-04-01 13:31:09 +02:00
johan bowald
642a343684 output both embedded and image files, small fix to serializer. 2018-04-01 12:37:18 +02:00
Syoyo Fujita
719d7e4a74 Suppress clang warnings.
Apply clang-format.
2018-03-30 19:26:35 +09:00
Syoyo Fujita
13fd7152ee Merge pull request #59 from bowald/feature/serializer-embed-buffer
Added embed buffers as an option in serializer
2018-03-30 19:17:18 +09:00
johan bowald
30c5347afe added embed buffers as an option in serializer 2018-03-30 11:52:56 +02:00
Syoyo Fujita
841c858bfd Merge pull request #58 from bowald/Bowald-serializer-fixes
Serializer skips null values
2018-03-28 22:09:08 +09:00
Johan Bowald
faa2722f45 Serializer skips null values 2018-03-28 14:54:22 +02:00
Syoyo Fujita
ae751c4882 Merge pull request #57 from Squareys/patch-1
Add Magnum's TinyGltfImporter plugin to projects
2018-03-28 19:23:39 +09:00
Jonathan Hale
6a04c87807 Add Magnum's TinyGltfImporter plugin to projects 2018-03-28 12:19:42 +02:00
Selmar Kok
5210f1539e Merge remote-tracking branch 'origin/devel' into generic_extension_support 2018-03-26 16:22:18 +02:00
Selmar Kok
35c798ed28 Merge remote-tracking branch 'origin/Selmar-generic_extension_support' into generic_extension_support 2018-03-26 16:20:44 +02:00
Syoyo Fujita
5e379693cb Merge pull request #55 from Ybalrid/pr_add_ogre_gltf_to_readme
Add Ogre_glTF to the list of projects using the lib
2018-03-22 02:09:49 +09:00
Arthur Brainville (Ybalrid)
a403cd8736 Add Ogre_glTF to the list of projects using the lib
Signed-off by: Arthur Brainville (Ybalrid) <ybalrid@ybalrid.info>
2018-03-21 18:02:36 +01:00
Syoyo Fujita
d1f8bae89c Print extensions. 2018-03-21 18:48:03 +09:00
Selmar Kok
85b3cbc44d Merge branch 'devel' into generic_extension_support 2018-03-19 16:15:22 +01:00
Syoyo Fujita
d5b0244e2c Serialize lights under as KHR_lights_cmn extension. 2018-03-17 16:12:42 -05:00
Selmar Kok
2a15f387bc Merge branch 'devel' into generic_extension_support
# Conflicts:
#	tiny_gltf.h
2018-03-16 12:32:52 +01:00
Selmar
7d8cbba8e4 removed code from another issue 2018-03-15 17:32:27 +01:00
Selmar
09d2ff12d8 generic extension support
Two issues remaining:
- The lights data exists twice on export; once outside of the gltf specification and once in the extensions.
- A lot of objects are still missing the extensions property.
2018-03-15 17:30:42 +01:00
6 changed files with 2489 additions and 262 deletions

View File

@@ -50,7 +50,9 @@ If you are looking for old, C++03 version, please use `devel-picojson` branch.
## Projects using TinyGLTF ## Projects using TinyGLTF
* Physical based rendering with Vulkan using glTF 2.0 models https://github.com/SaschaWillems/Vulkan-glTF-PBR * Physical based rendering with Vulkan using glTF 2.0 models https://github.com/SaschaWillems/Vulkan-glTF-PBR
* Your projects here!(Plese send PR) * GLTF loader plugin for OGRE 2.1. Support for PBR materials via HLMS/PBS https://github.com/Ybalrid/Ogre_glTF
* [TinyGltfImporter](http://doc.magnum.graphics/magnum/classMagnum_1_1Trade_1_1TinyGltfImporter.html) plugin for [Magnum](https://github.com/mosra/magnum), a lightweight and modular C++11/C++14 graphics middleware for games and data visualization.
* Your projects here! (Please send PR)
## TODOs ## TODOs
@@ -70,12 +72,13 @@ TinyGLTF uses the following third party libraries.
* json.hpp : Copyright (c) 2013-2017 Niels Lohmann. MIT license. * json.hpp : Copyright (c) 2013-2017 Niels Lohmann. MIT license.
* base64 : Copyright (C) 2004-2008 René Nyffenegger * base64 : Copyright (C) 2004-2008 René Nyffenegger
* stb_image.h : v2.08 - public domain image loader - http://nothings.org/stb_image.h * stb_image.h : v2.08 - public domain image loader - [Github link](https://github.com/nothings/stb/blob/master/stb_image.h)
* stb_image_write.h : v1.09 - public domain image writer - [Github link](https://github.com/nothings/stb/blob/master/stb_image_write.h)
## Build and example ## Build and example
Copy `stb_image.h`, `json.hpp` and `tiny_gltf.h` to your project. Copy `stb_image.h`, `stb_image_write.h`, `json.hpp` and `tiny_gltf.h` to your project.
### Loading glTF 2.0 model ### Loading glTF 2.0 model
@@ -83,6 +86,7 @@ Copy `stb_image.h`, `json.hpp` and `tiny_gltf.h` to your project.
// Define these only in *one* .cc file. // Define these only in *one* .cc file.
#define TINYGLTF_IMPLEMENTATION #define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
// #define TINYGLTF_NOEXCEPTION // optional. disable exception handling. // #define TINYGLTF_NOEXCEPTION // optional. disable exception handling.
#include "tiny_gltf.h" #include "tiny_gltf.h"
@@ -108,10 +112,17 @@ if (!ret) {
* `TINYGLTF_NOEXCEPTION` : Disable C++ exception in JSON parsing. You can use `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION` and `TINYGLTF_NOEXCEPTION` to fully remove C++ exception codes when compiling TinyGLTF. * `TINYGLTF_NOEXCEPTION` : Disable C++ exception in JSON parsing. You can use `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION` and `TINYGLTF_NOEXCEPTION` to fully remove C++ exception codes when compiling TinyGLTF.
* `TINYGLTF_NO_STB_IMAGE` : Do not load images with stb_image. Instead use `TinyGLTF::SetImageLoader(LoadimageDataFunction LoadImageData, void *user_data)` to set a callback for loading images. * `TINYGLTF_NO_STB_IMAGE` : Do not load images with stb_image. Instead use `TinyGLTF::SetImageLoader(LoadimageDataFunction LoadImageData, void *user_data)` to set a callback for loading images.
* `TINYGLTF_NO_STB_IMAGE_WRITE` : Do not write images with stb_image_write. Instead use `TinyGLTF::SetImageWriter(WriteimageDataFunction WriteImageData, void *user_data)` to set a callback for writing images.
### Saving gltTF 2.0 model ### Saving gltTF 2.0 model
* [ ] Buffers.
T.B.W. * [x] To file
* [x] Embedded
* [ ] Draco compressed?
* [x] Images
* [x] To file
* [x] Embedded
* [ ] Binary(.glb)
## Running tests. ## Running tests.

View File

@@ -3,6 +3,7 @@
#include <iostream> #include <iostream>
#include <memory> // c++11 #include <memory> // c++11
#define TINYGLTF_IMPLEMENTATION #define TINYGLTF_IMPLEMENTATION
#define TINYGLTF_NO_STB_IMAGE_WRITE
#include <tiny_gltf.h> #include <tiny_gltf.h>
namespace example { namespace example {

View File

@@ -3,11 +3,21 @@
#define TINYGLTF_IMPLEMENTATION #define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
//#define TINYGLTF_NO_STB_IMAGE_WRITE
#ifndef TINYGLTF_NO_STB_IMAGE_WRITE
#define STB_IMAGE_WRITE_IMPLEMENTATION
#endif
// If using a modern Microsoft Compiler, this define supress compilation
// warnings in stb_image_write
//#define STBI_MSC_SECURE_CRT
#include "tiny_gltf.h" #include "tiny_gltf.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[]) {
{ if (argc != 3) {
if (argc != 3) {
std::cout << "Needs input.gltf output.gltf" << std::endl; std::cout << "Needs input.gltf output.gltf" << std::endl;
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@@ -17,6 +27,8 @@ int main(int argc, char *argv[])
std::string err; std::string err;
std::string input_filename(argv[1]); std::string input_filename(argv[1]);
std::string output_filename(argv[2]); std::string output_filename(argv[2]);
std::string embedded_filename =
output_filename.substr(0, output_filename.size() - 5) + "-Embedded.gltf";
// assume ascii glTF. // assume ascii glTF.
bool ret = loader.LoadASCIIFromFile(&model, &err, input_filename.c_str()); bool ret = loader.LoadASCIIFromFile(&model, &err, input_filename.c_str());
@@ -28,6 +40,10 @@ int main(int argc, char *argv[])
} }
loader.WriteGltfSceneToFile(&model, output_filename); loader.WriteGltfSceneToFile(&model, output_filename);
return EXIT_SUCCESS; // Embedd buffers and images
#ifndef TINYGLTF_NO_STB_IMAGE_WRITE
loader.WriteGltfSceneToFile(&model, embedded_filename, true, true);
#endif
return EXIT_SUCCESS;
} }

View File

@@ -1,5 +1,6 @@
#define TINYGLTF_IMPLEMENTATION #define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "tiny_gltf.h" #include "tiny_gltf.h"
#include <cstdio> #include <cstdio>
@@ -210,6 +211,19 @@ static std::string PrintParameterValue(const tinygltf::Parameter &param) {
} }
} }
#if 0
static std::string PrintParameterMap(const tinygltf::ParameterMap &pmap) {
std::stringstream ss;
ss << pmap.size() << std::endl;
for (auto &kv : pmap) {
ss << kv.first << " : " << PrintParameterValue(kv.second) << std::endl;
}
return ss.str();
}
#endif
static std::string PrintValue(const std::string &name, static std::string PrintValue(const std::string &name,
const tinygltf::Value &value, const int indent) { const tinygltf::Value &value, const int indent) {
std::stringstream ss; std::stringstream ss;
@@ -287,6 +301,15 @@ static void DumpPrimitive(const tinygltf::Primitive &primitive, int indent) {
<< PrintValue("extras", primitive.extras, indent + 1) << std::endl; << PrintValue("extras", primitive.extras, indent + 1) << std::endl;
} }
static void DumpExtensions(const tinygltf::ExtensionMap &extension, const int indent)
{
// TODO(syoyo): Print extensions
for (auto &e : extension) {
std::cout << Indent(indent) << e.first << std::endl;
//std::cout << Indent(indent+1) << PrintParameterMap(e.second);
}
}
static void Dump(const tinygltf::Model &model) { static void Dump(const tinygltf::Model &model) {
std::cout << "=== Dump glTF ===" << std::endl; std::cout << "=== Dump glTF ===" << std::endl;
std::cout << "asset.copyright : " << model.asset.copyright std::cout << "asset.copyright : " << model.asset.copyright
@@ -307,6 +330,7 @@ static void Dump(const tinygltf::Model &model) {
for (size_t i = 0; i < model.scenes.size(); i++) { for (size_t i = 0; i < model.scenes.size(); i++) {
std::cout << Indent(1) << "scene[" << i std::cout << Indent(1) << "scene[" << i
<< "] name : " << model.scenes[i].name << std::endl; << "] name : " << model.scenes[i].name << std::endl;
DumpExtensions(model.scenes[i].extensions, 1);
} }
} }
@@ -530,6 +554,12 @@ static void Dump(const tinygltf::Model &model) {
} }
} }
} }
// toplevel extensions
{
std::cout << "extensions(items=" << model.extensions.size() << ")" << std::endl;
DumpExtensions(model.extensions, 1);
}
} }
int main(int argc, char **argv) { int main(int argc, char **argv) {

1831
stb_image_write.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff