认识3D模型-GLTF文件

模型,GLTF,文件 · 浏览次数 : 83

小编点评

**GLTF文件格式** GLTF 文件是一种用于存储 3D 场景和模型的信息格式。它由 JSON 文件组成,其中包含场景结构的描述。 **主要组成部分:** * **JSON 文件 (gltf):**包含场景的完整描述。 * **二进制文件 (bin):**存储模型基本数据,包括顶点坐标、法线坐标和纹理坐标。 * **图像文件 (jpg, png):**用于渲染模型的纹理。 **加载顺序:** 1. 加载 gltf 文件。 2. 解析 JSON 文件中的场景结构。 3. 迭代模型层级,加载每个 mesh。 4. 对于每个 mesh,加载其 bufferViews 和 materials。 5. 创建纹理对象。 6. 创建材质对象。 **gltf 文件格式的优势:** * 简化模型创建过程。 * 允许对模型进行动画。 * 支持多种纹理格式。

正文

GLTF文件格式

glTF的全称(Graphics Language Transmission Format)图形语言传输格式。是三维场景和模型的标准文件格式。
glTF 核心是 JSON 文件,描述了 3D 场景的整个内容。它由场景结构本身的描述组成,内容其由定义场景图的节点的层次提供。
场景中出现的 3D 对象是使用连接到节点的 meshes(网格)定义的。Materials(材料)定义对象的外观。Animations(动画)描述 3D 对象如何随着时间的推移转换 3D 对象,并且 Skins(蒙皮)定义了对物体的几何形状的方式基于骨架姿势变形。Cameras(相机)描述了渲染器的视图配置。
除此以外,它还包括了带有二进制数据和图像文件的链接。
Json文件(.gltf)包含完整的场景描述。
二进制文件(.bin)存储几何及动画等数据内容。
纹理文件(.jpg, .png)存储纹理图片内容。
ITF的格式有三种表达
>gTF分离格式(.gltf+.bin+纹理)
>gITF嵌入格式 (.gltf)
>gITF二进制格式 (.glb)
.gltf 文件,本质是 json 文件,记录对bin文件中模型顶点基本数据的索引、材质索引等信息。
.bin 文件,以二进制流的方式存储顶点坐标、顶点法线坐标和贴图纹理坐标、贴图信息等模型基本数据信息。
.glb 文件是二进制流文件,通常来说会更小一点,若不关心模型内的具体数据可直接选择此类型。

模型加载顺序
模型加载顺序为,先加载gltf文件,然后解析依次读取scenes、nodes、meshes、accessors、bufferViews、buffers、materials、textures、images。其中每个mesh包括一个bufferViews和一个materials。每一层的递进都有数组下标来确定。

 

glft的压缩优化
可以采用KHR_mesh_quantization或EXT_meshopt_compression进行网格压缩
然后再使用gltf-pipeline进行模块区分并对纹理图片压缩


制作GLTF模型数据
可以通过blender(开源免费)制作模型,然后导出成GLTF格式的文件。
blender地址:https://www.blender.org


参考文章:
https://www.jianshu.com/p/e134a2599cb7
https://segmentfault.com/a/1190000040506397?u_atoken=b06abf46-d8df-47db-ba59-5a4c4363d0cd&u_asession=01F4qvsxqP6kMcoXAmYhcyQfCq5d5Ikg-x9SDd4p1-hpFFk9PCkFV03zUutLz3Sb9nX0KNBwm7Lovlpxjd_P_q4JsKWYrT3W_NKPr8w6oU7K89Mr-I3EbGC83-VqEj1tUZ2l7GVvsUm1O1dQ3kAgydYmBkFo3NEHBv0PZUm6pbxQU&u_asig=05ESJ0rAXmqHXPIepLzgwTZm2R1rU3ORtWRA6FcUrU0s_I1hNzwAGwAsPBsvx9PmF0hyyMNORqXv-BWKvlHc96sgW6fi4uZXYtwk16F-RERqdkTDO3mpaauxgkssYAyDm9zeVqVFl-m6d7Ay5G3RJsKYgSU3tkx4PWFBDHg7_F3JP9JS7q8ZD7Xtz2Ly-b0kmuyAKRFSVJkkdwVUnyHAIJzQcWaqiEnhz-_OrjzkcBUNsXIInsFpDA-9pQwAzg9ndlaSuCIIsUrXvoQJBX3FajR-3h9VXwMyh6PgyDIVSG1W-rSwjCtyTewaa1beVeAOLa2qaXJ7OgOBoJ-UpI701OkNACp6I45I5Z4pVXM0r257y4Pxc3izT6PHNXAf5yIqDomWspDxyAEEo4kbsryBKb9Q&u_aref=aw4TIgfR3yygqwN%2B4HFRj6Q%2B%2FuE%3D


与认识3D模型-GLTF文件相似的内容:

认识3D模型-GLTF文件

GLTF文件格式 glTF的全称(Graphics Language Transmission Format)图形语言传输格式。是三维场景和模型的标准文件格式。 glTF 核心是 JSON 文件,描述了 3D 场景的整个内容。它由场景结构本身的描述组成,内容其由定义场景图的节点的层次提供。 场景中出

EMQX配置ssl/tls双向认证+SpringBoot项目整合MQTT_真实业务实践

一.使用docker搭建Emqx 1.拉取emqx镜像 docker pull emqx/emqx:5.7 2.运行 docker run -d --name emqx emqx/emqx:5.7 3.拷贝 docker中 etc data log 到宿主机的 /opt/emqx 下 mkdir -

带你认识3个J.U.C组件扩展

摘要:本文主要为大家讲解3种J.U.C组件扩展。 本文分享自华为云社区《【高并发】J.U.C组件扩展》,作者: 冰 河。 1.FutureTask FutureTask是J.U.C(java.util.concurrent)下的,但不是AQS(AbstractQueuedSynchronizer)的

3层结构+7大特点,带你认识华为云IoTEdge

摘要:华为云IoTEdge三层架构联合打造的IoT边缘平台功能,持续为更多企业和开发者带来价值。 本文分享自华为云社区《【华为云IoTEdge学习笔记】华为云IoT边缘功能特点及价值》,作者:华为IoT云服务 。 IoT边缘是一组软件产品,包含云服务、边缘运行时软件、边缘模块应用,将云端能力快速拓展

3天上手Ascend C编程丨带你认识Ascend C基本概念及常用接口

Ascend C是华为昇腾面向算子开发场景的编程语言,想省时省力快速入门可以看这篇文章,为你系统化梳理AscendC编程最重要的知识点,3天快速上手不迷路。

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(3)-再识Charles

1.简介 上一篇通过宏哥的介绍想必各位小伙伴或者童鞋们对Charles已经有了一个理性地认识,今天宏哥在从Charles的外貌介绍和分享一下,让小伙伴们或者童鞋们再对Charles有一个感性的认识,今天主要是对Charles的界面进行一个详细的介绍。 2.Charles主界面概览 Charles的主

[转帖]一、Kafka Tool使用

一、Kafka Tool使用 1、添加cluster 2、开启SASL_PLAINTEXT 如果kafka 开启SASL_PLAINTEXT认证(用户名和密码认证) 3、高级设置 如果设置的是SASL Plaintext,则必须将sasl.mechanism客户端属性更改为PLAIN。可以在“高级”

[转帖]Web技术(三):TLS 1.2/1.3 加密原理(AES-GCM + ECDHE-ECDSA/RSA)

文章目录 前言一、TLS 加密原理1.1 TLS 信息加密1.2 TLS 完整性校验与认证加密1.3 TLS 报文结构1.4 TLS 密钥交换1.5 TLS 数字签名1.6 TLS 密码套件1.7 TLS 网络攻防 更多文章: 前言 前篇博客:图解HTTP中谈到,HTTP/1.1 协议默认是以明文方

项目管理之八大绩效域-------笔记(二)

八大绩效域详细解析 18.1 干系人绩效域 跟干系人所有相关的活动. 一、预期目标 ①与干系人建立高效的工作关系 ②干系人认同项目目标 ③支持项目的干系人提高了满意度,并从中收益 ④反对项目的干系人没有对项目产生负面影响 三四是一个意思,就是支持你的人更支持你,反对你的人没有负面影响. 实际工作 这

用go封装一下二级认证功能

本篇为[用go设计开发一个自己的轻量级登录库/框架吧 - 秋玻 - 博客园 (cnblogs.com)]的二级认证业务篇,会讲讲二级认证业务的实现,给库/框架增加新的功能。 源码:https://github.com/weloe/token-go