GitHub – syoyo/tinygltf:仅标头 C++11 小型 glTF 2.0 库
| Name | ||
|---|---|---|
|
37250B3 · 5 months ago
|
||
|
|
2 years ago
|
|
|
|
3 years ago
|
|
|
|
9 years ago
|
|
|
|
last year
|
|
|
|
7 years ago
|
|
|
|
last year
|
|
|
|
last year
|
|
|
|
8 years ago
|
|
|
|
2 years ago
|
|
|
|
9 years ago
|
|
|
|
2 years ago
|
|
|
|
last year
|
|
|
|
8 years ago
|
|
|
|
6 years ago
|
|
|
|
5 months ago
|
|
|
|
7 years ago
|
|
|
|
7 years ago
|
|
|
|
4 years ago
|
|
|
|
3 years ago
|
|
|
|
8 years ago
|
|
|
|
2 years ago
|
|
|
|
2 years ago
|
|
|
|
3 years ago
|
|
|
|
5 years ago
|
|
|
|
5 months ago
|
|
|
|
8 years ago
|
|
存储库文件导航
仅标头 C++ 小 glTF 库(加载器/保护程序)。
TinyGLTF是仅标头 C++11 glTF 2.0 https://github.com/KhronosGroup/glTF 库。
TinyGLTF使用 Niels Lohmann 的 json 库 (https://github.com/nlohmann/json),所以现在它需要 C++11 编译器。 (此外,您可以使用 RadpidJSON 作为 JSON 后端) 如果您正在寻找旧的 C++03 版本,请使用 branch(但不再维护)。devel-picojson
目前TinyGLTF处于稳定和维护模式。没有计划进行重大更改和功能添加。
- v2.9.0 各种修复和改进。文件系统回调 API 更改。
- v2.8.0 添加 URICallbacks,用于在 Buffer 和 Image 中进行自定义 URI 处理。PR#397
- v2.7.0 更改 WriteImageDataFunction 用户回调函数签名。PR#393
- v2.6.0 支持序列化稀疏访问器(感谢 @fynv)。
- v2.5.0 添加 SetPreserveImageChannels() 选项,按原样加载图像数据。
- v2.4.0 实验性 RapidJSON 支持。实验性 C++14 支持(C++14 可能会提供更好的性能)
- v2.3.0 根据 glTF 2.0 模式修改了材质表示(并引入了 TextureInfo 类)
- v2.2.0 发布(支持加载 16bit PNG。稀疏访问器支持)
- v2.1.0 版本(支持 Draco 解码)
- v2.0.0 发布(2018 年 8 月 22 日)!
sajson:使用 sajson 解析 JSON。仅解析但编译时间更快(与 json.hpp 和 RapidJson 相比减少 2 倍),但维护不好。
可能大部分功能齐全。最后一个缺失的功能是 Draco 编码:https://github.com/syoyo/tinygltf/issues/207
- 用可移植的 C++ 编写。仅具有 STL 依赖项的 C++-11。
- macOS + clang(LLVM)
- iOS + 叮当
- Linux + gcc/clang
- Windows + MinGW
- Windows + Visual Studio 2015 Update 3 或更高版本。
- 不支持 Visual Studio 2013,因为它们对 C++11 的支持有限,并且无法编译。
json.hpp
- 不支持 Visual Studio 2013,因为它们对 C++11 的支持有限,并且无法编译。
- 安卓NDK
- Android + CrystaX(NDK 直接替换)GCC
- 使用 Emscripten(LLVM) 的 Web
- 适度的解析时间和内存消耗。
- glTF 规范 v2.0.0
- ASCII glTF
- 负荷
- 救
- 二进制 glTF(GLB)
- 负荷
- Save(.bin嵌入的 .glb)
- ASCII glTF
- 缓冲区
- 解析 BASE64 编码的嵌入式缓冲区数据 (DataURI)。
- 加载文件。
.bin
- 图像(使用stb_image)
- 解析 BASE64 编码的嵌入图像数据 (DataURI)。
- 加载外部图像文件。
- 加载 PNG(8 位和 16 位)
- 加载 JPEG(仅限 8 位)
- 负载BMP
- 加载 GIF
- 自定义图像解码器回调(例如用于解码 OpenEXR 图像)
- 变形特拉吉特
- 稀疏访问器
- 从内存加载 glTF
- 自定义回调处理程序
- 图像加载
- 图片保存
- 扩展
- Draco 网格解码
- Draco 网格编码
在 extension() 中,JSON 数字值被解析为 int 或 float(number) 并存储为 object。如果您想要来自 的浮点值,请使用方法。ExtensionMaptinygltf::Valuetinygltf::ValueGetNumberAsDouble()
IsNumber()如果基础值是 int 值或浮点值,则返回 true。
- glview :简单的 glTF 几何查看器。
- validator :带有 JSON 模式的简单 glTF 验证器。
- 基本 :支持纹理的基本 glTF 查看器。
- build-gltf :从头开始构建简单的 glTF 场景。
想要安全可靠地运行 TinyGLTF 的用户(例如,需要处理恶意的 glTF 文件来提供在线 glTF 转换器), 我建议为 WASM 目标构建 TinyGLTF。 WASI 构建示例位于 wasm 中。
- px_render 用于线程调度、渲染等的单标头C++库……https://github.com/pplux/px
- 使用 glTF 2.0 模型使用 Vulkan 进行基于物理的渲染 https://github.com/SaschaWillems/Vulkan-glTF-PBR
- 用于 OGRE 2.1 的 GLTF 加载器插件。通过 HLMS/PBS https://github.com/Ybalrid/Ogre_glTF 支持 PBR 材料
- TinyGltfImporter plugin for Magnum,一个轻量级的模块化 C++11/C++14 图形中间件,用于游戏和数据可视化。
- Diligent Engine – 一个现代跨平台的低级图形库和渲染框架
- Lighthouse 2:用于实时光线追踪/路径追踪实验的渲染框架。https://github.com/jbikker/lighthouse2
- QuickLook GLTF – 适用于 macOS 的 quicklook 插件。还有 tinygltf 的 SceneKit 包装器。
- GlslViewer – 适用于 MacOS 和 Linux 的实时 GLSL 编码
- Vulkan-Samples – Vulkan Samples 是帮助您开发优化的 Vulkan 应用程序的资源集合。
- TDME2 – TDME2 – ThreeDeeMiniEngine2 是一个轻量级的 3D 引擎,包括适合使用 C++ 进行 3D 游戏开发的工具11
- SanityEngine – 一个 C++/D3D12 渲染器,专注于其开发人员的个人和专业发展
- Open3D – 用于 3D 数据处理的现代库
- Supernova Engine – 在面向数据的设计中使用 Lua 或 C++ 的 2D 和 3D 项目的游戏引擎。
- Wicked Engine
– 具有现代图形的 3D 引擎 - 您的项目在这里!(请发送公关)
- 强大的 URI 解码/编码。https://github.com/syoyo/tinygltf/issues/369
- 网格压缩/解压缩(Open3DGC等)
- 加载 Draco 压缩网格
- 保存 Draco 压缩网格
- 打开3DGC?
- 支持和财产
extensionsextras - HDR 图像?
- 通过 TinyEXR 进行 OpenEXR 扩展。
- 序列化中的 16 位 PNG 支持
- 编写示例和测试 和
animationskin
- 编写 C++ 代码生成器,从 JSON 模式发出 C++ 代码以进行稳健解析?
TinyGLTF 根据 MIT 许可获得许可。
TinyGLTF 使用以下第三方库。
- json.hpp:版权所有 (c) 2013-2017 Niels Lohmann。麻省理工学院执照。
- base64 : 版权所有 (C) 2004-2008 René Nyffenegger
- stb_image.h : v2.08 – 公共领域图像加载器 – Github link
- stb_image_write.h : v1.09 – 公共领域图像编写器 – Github 链接
将 、 和 复制到项目中。stb_image.hstb_image_write.hjson.hpptiny_gltf.h
// Define these only in *one* .cc file.
#define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
// #define TINYGLTF_NOEXCEPTION // optional. disable exception handling.
#include "tiny_gltf.h"
using namespace tinygltf;
Model model;
TinyGLTF loader;
std::string err;
std::string warn;
bool ret = loader.LoadASCIIFromFile(&model, &err, &warn, argv[1]);
//bool ret = loader.LoadBinaryFromFile(&model, &err, &warn, argv[1]); // for binary glTF(.glb)
if (!warn.empty()) {
printf("Warn: %sn", warn.c_str());
}
if (!err.empty()) {
printf("Err: %sn", err.c_str());
}
if (!ret) {
printf("Failed to parse glTFn");
return -1;
}
TinyGLTF::SetPreserveimageChannels(bool onoff). 保留存储在图像文件中的图像通道,以便加载图像。 默认情况下,为了向后兼容(图像通道加宽到 4 个通道)。仅在使用内置图像加载器(STB 图像加载器)时有效。truefalseRGBA
TINYGLTF_NOEXCEPTION:在 JSON 解析中禁用 C++ 异常。在编译 TinyGLTF 时,您可以使用 或 通过定义符号并完全删除 C++ 异常代码。-fno-exceptionsJSON_NOEXCEPTIONTINYGLTF_NOEXCEPTIONTINYGLTF_NO_STB_IMAGE:请勿加载带有stb_image的图像。相反,用于设置用于加载图像的回调。TinyGLTF::SetImageLoader(LoadimageDataFunction LoadImageData, void *user_data)TINYGLTF_NO_STB_IMAGE_WRITE:请勿使用stb_image_write书写图像。相反,用于设置用于写入图像的回调。TinyGLTF::SetImageWriter(WriteimageDataFunction WriteImageData, void *user_data)TINYGLTF_NO_EXTERNAL_IMAGE:请勿尝试加载外部图像文件。如果您不想在 glTF 解析期间加载图像文件,此选项将很有帮助。TINYGLTF_ANDROID_LOAD_FROM_ASSETS:从打包的应用程序资产而不是常规文件系统加载所有文件。注意:您必须事先将有效的资产管理器从 Android 应用传递给。tinygltf::asset_managerTINYGLTF_ENABLE_DRACO:启用 Draco 压缩。用户必须在项目文件中提供包含路径和链接对应库。TINYGLTF_NO_INCLUDE_JSON:从内部禁用包含,因为它之前已经包含,或者您想在包含之前使用自定义路径包含它。json.hpptiny_gltf.htiny_gltf.hTINYGLTF_NO_INCLUDE_RAPIDJSON:从内部禁用包含 RapidJson 的头文件,因为它之前已经包含过,或者您想在包含之前使用自定义路径包含它。tiny_gltf.htiny_gltf.hTINYGLTF_NO_INCLUDE_STB_IMAGE:从内部禁用包含,因为它之前已经包含,或者您想在包含之前使用自定义路径包含它。stb_image.htiny_gltf.htiny_gltf.hTINYGLTF_NO_INCLUDE_STB_IMAGE_WRITE:从内部禁用包含,因为它之前已经包含,或者您想在包含之前使用自定义路径包含它。stb_image_write.htiny_gltf.htiny_gltf.hTINYGLTF_USE_RAPIDJSON:使用 RapidJSON 作为 JSON 解析器/序列化器。RapidJSON 文件不包含在 TinyGLTF 存储库中。如果您启用此功能,请将包含路径设置为 RapidJSON。
您可以使用功能添加 tinygltf。 如果您使用 将 tinygltf 添加到您的项目中,最好设置 on(只需为 tinygltf 添加一个包含路径)和 off(它不安装 tinygltf 文件)。add_subdirectoryadd_subdirectoryTINYGLTF_HEADER_ONLYTINYGLTF_INSTALL
// Your project's CMakeLists.txt
...
set(TINYGLTF_HEADER_ONLY ON CACHE INTERNAL "" FORCE)
set(TINYGLTF_INSTALL OFF CACHE INTERNAL "" FORCE)
add_subdirectory(/path/to/tinygltf)
注意:使用 tinygltf 作为子模块不会自动将标头添加到您的包含路径中(作为许多库的标准)。要获得此功能,请从上面将以下内容添加到CMakeLists.txt文件中:
target_include_directories(${PROJECT_NAME} PRIVATE "/path/to/tinygltf")
- 缓冲区。
- 归档
- 嵌入式
- 德拉科压缩了?
- 图像
- 归档
- 嵌入式
- 二进制(.glb)
- .bin嵌入式单个 .glb
- 外部.bin
需要 Python。Git 克隆 https://github.com/KhronosGroup/glTF-Sample-Models 到本地目录。
构建 、 编辑 之后,loader_exampletest_runner.py
$ python test_runner.py
$ cd tests
$ make
$ ./tester
$ ./tester_noexcept
有关详细信息,请参阅。tests/fuzzer
每周在 Ryzen9 3950X 上运行 Fuzzer 后,除了 Fuzzer 中的内存不足错误外,至少看起来很安全。 在解析 glTF 数据时,我们可能最好引入有限内存大小检查。LoadASCIIFromString
- json.hpp :根据 MIT 许可 http://opensource.org/licenses/MIT 获得许可。版权所有 (c) 2013-2017 Niels Lohmann http://nlohmann.me。
- stb_image:公共领域。
- catch : 版权所有 (c) 2012 Two Blue Cubes Ltd.版权所有。根据 Boost 软件许可证 1.0 版分发。
- RapidJSON : 版权所有 (C) 2015 THL A29 Limited、腾讯公司和叶美禄。版权所有。http://rapidjson.org/
- dlib(uridecode, uriencode):版权所有 (C) 2003 Davis E. King Boost 软件许可证 1.0。http://dlib.net/dlib/server/server_http.cpp.html
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性
GLB下载网 - GLB/GLTF模型与格式资源免费下载,支持在线浏览与转换 » 仅标头 C++11 小型 glTF 2.0 库
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载要提取码
- 分享过期和重复下载怎么办
- 模型和平台不兼容怎么办
