gltf格式一、简介

GLTF介绍:

glTF 称为“ 3D 界的 JPEG”,使用了更优的数据结构,为应用程序实时渲染而生。glTF 有以下几大特点:

  • 由现有 OpenGL 的维护组织 Khronos 推出,目的就是为了统一用于应用程序渲染的 3D 格式,更适用于基于 OpenGL 的引擎;
  • 减少了 3D 格式中除了与渲染无关的冗余信息,最小化 3D 文件资源;
  • 优化了应用程序读取效率和和减少渲染模型的运行时间;
  • 支持 3D 模型几何体、材质、动画及场景、摄影机等信息(因为gltf已经把整个场景都放到里面去了所以当然支持动画蒙皮子类等等)。
    glTF 导出格式有两种后缀格式可供选择:.gltf 和 .glb:
  • .gltf 文件导出时一般会输出两种文件类型,一是 .bin 文件,以二进制流的方式存储顶点坐标、顶点法线坐标和贴图纹理坐标、贴图信息等模型基本数据信息;二是 .gltf 文件,本质是 json 文件,记录对bin文件中模型顶点基本数据的索引、材质索引等信息,方便编辑,可读性较好;
  • .glb 文件格式只导出一个 .glb 文件,将所有数据都输出为二进制流,通常来说会更小一点,若不关心模型内的具体数据可直接选择此类型。

GLTF 打开:

方式一:推荐使用gltf-viewer来打开,能直接修改查看各种属性;
在这里插入图片描述

方式二:,VScode安装一个插件“gltf tools”就可以一边查看json一边修改与查看模型了(只能看gltf不能看二进制的glb内容);同时最新的gltf tools还支持四种引擎Babylon.js Cesium Filament Three.js;
在这里插入图片描述

通过 Draco 进行压缩 :

Draco 及 gltf-pipeline 介绍
Draco 是一种库,用于压缩和解压缩 3D 几何网格(geometric mesh)和点云(point cloud)。换句话说,它显著缩小了 3D 图形文件的大小,同时对 3D 图形的观看者来说又根本不严重影响视觉效果。它还旨在改善 3D 图形的压缩和传输。
Draco是由Google推出的一个用于3D模型压缩和解压缩的工具库,glTF资源可通过、Draco开发命令行工具gltf-pipeline进行编码压缩,gltf-pipeline可通过npm的方式安装使用。谷歌团队宣称:“ Draco 是为了提升压缩效率和速度而设计和研制的。代码支持压缩点、连接信息、纹理坐标、颜色信息、正常量以及与几何形状有关的任何其他一般属性。有了 Draco,使用 3D 图形的应用程序可以小巧得多,又不影响视觉逼真度。对于用户来说,这意味着现在应用程序下载起来更快了,浏览器中的 3D 图形加载起来更快了,现在只需要少量的带宽就可以传输虚拟现实和增强现实了,而且可以迅速呈现、画面极其逼真。”
Draco开源库地址
Draco 是作为 C++ 源代码发布的,可以用来压缩 3D 图形,另外还发布了处理编码数据的 C++ 和 Javascript 解码器。

#全局安装
npm install -g gltf-pipeline
#压缩glb文件 -b表示输出glb格式,-d表示压缩
gltf-pipeline -i model.glb -b -d
#压缩glb文件并将纹理图片分离出来
gltf-pipeline -i model.glb -b -d -t
#更多参数查阅
gltf-pipeline -h

Draco压缩的分析:

通过 Draco 进行压缩基本上是有损的,有两点表现:

  • Draco 通过 Edge breaker 3D 压缩算法改变了模型的网格数据的索引方法,缺少了原来的网格顺序;
  • Draco 通过减少顶点坐标、顶点纹理坐标等信息的位数,以减少数据的存储量。
--input, -i                   Path to the glTF or glb file.[string] [required]
--output, -o                  Output path of the glTF or glb file. Separate   
                               resources will be saved to the same directory.  
                                                                       [string]
--binary, -b                  Convert the input glTF to glb.                                      //将输入的glTF转换为glb
                                                     [boolean] [default: false]
--json, -j                    Convert the input glb to glTF.                                      //将输入的glb转换为glTF
                                                     [boolean] [default: false]
--separate, -s                Write separate buffers, shaders, and textures                       //编写单独的缓冲区、着色器和纹理而不是把它们嵌入到glTF中
                               instead of embedding them in the glTF.          
                                                     [boolean] [default: false]
--separateTextures, -t        Write out separate textures only.                                   //只写出单独的纹理
                                                     [boolean] [default: false]
--stats                       Print statistics to console for output glTF                         //将统计信息打印到控制台以输出glTF文件
                               file.                 [boolean] [default: false]     
--keepUnusedElements          Keep unused materials, nodes and meshes.                            //保留未使用的材质、节点和网格
                                                      [boolean] [default: false]
--draco.compressMeshes, -d    Compress the meshes using Draco. Adds the                            //使用Draco压缩网格。添加KHR_draco_mesh_压缩扩展
                                KHR_draco_mesh_compression extension.
                                                      [boolean] [default: false]
--draco.compressionLevel      Draco compression level [0-10], most is 10,                           //Draco压缩级别[0-10],大多数是10,最小值为0。值为0将会连续应用 编码并保留face顺序。
                                least is 0. A value of 0 will apply sequential
                                encoding and preserve face order.
                                                           [number] [default: 7]   
--draco.quantizePositionBits  Quantization bits for position attribute when                        //位置坐标属性的量化位使用Draco压缩。
                                using Draco compression.  [number] [default: 11]

--draco.quantizeNormalBits    Quantization bits for normal attribute when                           //法线属性的量化位使用Draco压缩
                                using Draco compression.   [number] [default: 8]

--draco.quantizeTexcoordBits  Quantization bits for texture coordinate                               //纹理坐标的量化位属性。
                                attribute when using Draco compression.
                                                          [number] [default: 10]

--draco.quantizeColorBits     Quantization bits for color attribute when using                        //使用时颜色属性的量化位德拉科压缩
                                Draco compression.         [number] [default: 8]

--draco.quantizeGenericBits   Quantization bits for skinning attribute (joint                        //蒙皮属性(关节的量化位索引和关节权重)ad自定义属性使用Draco压缩时。
                                indices and joint weights) ad custom attributes
                                when using Draco compression. [number] [default: 8]

--draco.uncompressedFallback  Adds uncompressed fallback versions of the                            //添加未压缩的回退版本压缩网格
                                compressed meshes.    [boolean] [default: false]

  --draco.unifiedQuantization   Quantize positions of all primitives using the            //统一定义的量化网格所有基本体的边界框。 如果这个选项未设置,对每个应用量化原始的可能会导致差距出现在不同图元之间。
                                same quantization grid defined by the unified
                                bounding box of all primitives. If this option
                                is not set, quantization is applied on each
                                primitive separately which can result in gaps
                                appearing between different primitives.
                                                      [boolean] [default: false]

参考资料:

GLTF2.0
压缩算法
3D文件压缩库——Draco简析
Draco Compressed Meshes with glTF and 3D Tiles

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Max导出gltf格式插件是一种在三维建模软件Max中使用的功能扩展工具。gltf(Graphics Language Transmission Format)是一种用于在不同平台和应用之间传输和渲染3D图形的开放标准格式。通过使用Max导出gltf格式插件,用户可以将他们在Max中创建的3D模型、材质、动画等内容以高效的方式导出到gltf格式文件中。 Max导出gltf格式插件具有以下优点。首先,gltf是一种开放标准,充分支持多平台和多应用之间的互操作性。这意味着通过导出为gltf格式,用户可以在不同的3D应用和web浏览器中轻松地加载和渲染他们的模型。其次,gltf格式具有较小的文件大小,同时又保持了对模型、材质和动画的高质量呈现,这使得它成为网络上实时3D图形展示的理想选择。 使用Max导出gltf格式插件也非常简单。用户只需将插件添加到Max软件中,并在导出选项中选择gltf格式。然后,用户可以自定义导出选项,如纹理压缩、动画设置等。一旦设置完成,用户只需点击导出按钮,插件将自动将模型和相关内容导出为gltf格式文件。用户还可以选择为导出后的文件定义路径和名称,以方便管理和使用。 总之,Max导出gltf格式插件为用户提供了一种方便快捷的方式,将他们在Max中创建的3D内容导出到gltf格式文件中,以便在不同平台和应用之间传输和展示。这样的插件有助于促进跨平台和跨应用的协作,提高用户的工作效率和模型的可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值