mirror of
https://git.mirrors.martin98.com/https://github.com/syoyo/tinygltf.git
synced 2025-08-14 03:46:03 +08:00

* Add the child_value parsed by ParseObjectProperty to the return value The omission of adding child_value to the return object appears to have been an oversight, as it is the only case where the parsed value is not added, and because child_value is otherwise unreferenced. This change also does give us the value that we are expecting in our use case after loading our glTF. Was this an oversight or an intentional omission?
Tiny glTF loader, header only C++ glTF parsing library.
TinyGLTFLoader
is a header only C++ glTF https://github.com/KhronosGroup/glTF parsing library
Features
- Portable C++. C++-03 with STL dependency only.
- Moderate parsing time and memory consumption.
- glTF specification v1.0.0
- ASCII glTF
- Binary glTF(https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_binary_glTF)
- Buffers
- Parse BASE64 encoded embedded buffer fata(DataURI).
- Load
.bin
file.
- Image(Using stb_image)
- Parse BASE64 encoded embedded image fata(DataURI).
- Load external image file.
- PNG(8bit only)
- JPEG(8bit only)
- BMP
- GIF
Examples
- glview : Simple glTF geometry viewer.
- writer : Simple glTF writer(serialize
tinygltf::Scene
class) - alembic_to_gltf : Simple Alembic to glTF converter.
- cyhair_to_gltf : Simple CyHair(hair curves) to glTF converter.
TODOs
- Write C++ code generator from json schema for robust parsing.
- Support multiple scenes in
.gltf
- Parse
skin
- Compression/decompression(Open3DGC, etc)
- Support
extensions
andextras
property - HDR image?
License
TinyGLTFLoader is licensed under MIT license.
TinyGLTFLoader uses the following third party libraries.
- picojson.h : Copyright 2009-2010 Cybozu Labs, Inc. Copyright 2011-2014 Kazuho Oku
- base64 : Copyright (C) 2004-2008 René Nyffenegger
- stb_image.h : v2.08 - public domain image loader - http://nothings.org/stb_image.h
Build and example
Copy stb_image.h
, picojson.h
and tiny_gltf_loader.h
to your project.
// Define these only in *one* .cc file.
#define TINYGLTF_LOADER_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION
#include "tiny_gltf_loader.h"
using namespace tinygltf;
Scene scene;
TinyGLTFLoader loader;
std::string err;
bool ret = loader.LoadASCIIFromFile(scene, err, argv[1]);
//bool ret = loader.LoadBinaryFromFile(scene, err, argv[1]); // for binary glTF(.glb)
if (!err.empty()) {
printf("Err: %s\n", err.c_str());
}
if (!ret) {
printf("Failed to parse glTF\n");
return -1;
}
Running tests.
Setup
Python 2.6 or 2.7 required. Git clone https://github.com/KhronosGroup/glTF-Sample-Models to your local dir.
Run test
After building loader_example
, edit test_runner.py
, then,
$ python test_runner.py
Languages
C++
82.4%
C
17.2%
CMake
0.2%
Python
0.1%