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

This library is an awesome project, and I can imagine a lot of 3D application written in C++ would happily use it to load glTF assets ;-) However, the license wasn't properly stated on the project. To actually put work under the term of the MIT license agreement, a copyright notice **needs** to be distributed alongside the source code. It is also standard practice to add a warranty disclaimer. This prevent people to hold you liable if (at least they think) something doesn't work because of this library. I took the liberty to put the file in place, with your full name as stated on your GitHub profile as the copyright holder. This is the text that states that you, the author, grants the to other people to use this as a free/open-source software, with all the thing that comes with it (access to source code, right to modify, redistribute, redistribute modified version, and use for any purpose they like) Sorry for the annoyance ^^"
Header only C++ tiny glTF library(loader/saver).
TinyGLTF
is a header only C++11 glTF 2.0 https://github.com/KhronosGroup/glTF library.
Status
Work in process(devel
branch). Very near to release, but need more tests and examples.
TinyGLTF
uses Niels Lohmann's json library(https://github.com/nlohmann/json), so now it requires C++11 compiler.
If you are looking for old, C++03 version, please use devel-picojson
branch.
Builds
Features
- Written in portable C++. C++-11 with STL dependency only.
- macOS + clang(LLVM)
- iOS + clang
- Linux + gcc/clang
- Windows + MinGW
- Android + CrystaX(NDK drop-in replacement) GCC
- Web using Emscripten(LLVM)
- Moderate parsing time and memory consumption.
- glTF specification v2.0.0
- ASCII glTF
- Binary glTF(GLB)
- PBR material description
- 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
TODOs
- Write C++ code generator from json schema for robust parsing.
- Serialization
- Compression/decompression(Open3DGC, etc)
- Support
extensions
andextras
property - HDR image?
- Write tests for
animation
andskin
Licenses
TinyGLTF is licensed under MIT license.
TinyGLTF uses the following third party libraries.
- json.hpp : Copyright (c) 2013-2017 Niels Lohmann. MIT license.
- 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
, json.hpp
and tiny_gltf.h
to your project.
Loading glTF 2.0 model
// Define these only in *one* .cc file.
#define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION
#include "tiny_gltf.h"
using namespace tinygltf;
Model model;
TinyGLTF loader;
std::string err;
bool ret = loader.LoadASCIIFromFile(&model, &err, argv[1]);
//bool ret = loader.LoadBinaryFromFile(&model, &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;
}
Saving gltTF 2.0 model
T.B.W.
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%