bat 批处理 脚本 for循环 批量压缩gltf模型 gltf批量压缩 gltf压缩转成glb 这里参考两篇文章: 1. ,就可以直接通过下面一句命令安装gltf-pipeline这个库: npm install -g gltf-pipeline 安装完成后,按照官方地址的使用说明,直接对模型进行压缩即可,比如: gltf-pipeline -i model.gltf -o modelDraco.gltf -d 就可以把model.gltf模型压缩。 (-d表示使用draco算法进行压缩) for %i in ('dir *.gltf /s /b') do gltf-pipeline -i %i -o %i -d ? 看一下压缩后的模型大小: ? 是如何达到压缩效果的,gltf和glb这两种格式的区别,转换和压缩的原理是什么。 (学海无涯,只有不断深究,才会真正的进步,与君共勉) 微信搜索:acoolgiser,一起学习成长,交个朋友!
在H5中引入3D模型往往存在资源太大,可以通过模型网格压缩,通过glTF配合Draco压缩的方式,可以在视觉效果近乎一致的情况下,让3D模型文件成倍缩小 glTF在线查看器: https://gltf-viewer.donmccurdy.com 一、通过Draco进行压缩 Draco及gltf-pipeline的介绍 Draco是Google推出的一个用于3D模型压缩和解压缩的工具库,glTF资源可通过、Draco开发命令行工具gltf-pipeline 进行编码压缩,gltf-pipeline可通过npm的方式安装使用,使用方法如下: #全局安装 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 -i test.glb -o test1.glb -d 则可以生成压缩后的test1.glb文件 2、把解码文件node_modules>three
概述 glTF简介,Web端三维模型及其特点 Cesium如何加载,渲染glTF,逻辑结构和关键技术 个人总结,从glTF学习如何设计一个二进制格式,个人想法分享 关键字:Cesium glTF WebGL 也就是今天要讲的glTF模型渲染。 glTF的全称是GL传输格式,是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产(asset)。 因此glTF还包含整个场景的关系,包括节点,变换矩阵,变换的层级关系,网格,材质,相机和动画,试图保存所有信息。这是一个场景树的逻辑,算是glTF的一个优化。 比如glTF提供了扩展,提供了场景树,相机的信息,这都是出于通用性的考虑,但这个是否实用,就不好判断了。或者是否提供ZIP压缩。 ▽Accessor&Json表述 这是glTF数据读取的机制,设计的很优雅,很值得我们学习。
glTF glTF是一个优秀的三维数据规范,其中有很多细节都值得我们学习,按照我的理解,可以分为三大块: Accessor数据访问机制 一套访问二进制数据的规范,将逻辑层和数据层隔离 同传输和读取以及存储灵活性上都有上佳表现 :Mesh与Primitive中的Vertex Buffer, Index Buffer,Vertex Array,还有Texture与State Management,在灵活和易用上都有不错的设计 压缩 : 针对3D Geometry的Draco压缩#6191 Scene& Node 节点间的依赖和位置关系 实例化设计 glTF2.0 相比1.0,glTF2.0的改变可以用“一增一删修修补补”来概括,主要有 这里,glTF的采用的是Disney给出的BRDF公式: ? ,diffuse采用的是Lambert模型: ? (G)eometric term 表示从L光源能够到达V视角的概率,这里glTF采用的是GGX,而Cesium则是Schlick模型: ?
Revit与GLTF格式简介Revit是Autodesk公司一套系列软件的名称。Revit系列软件是为建筑信息模型构建的,可帮助建筑设计师设计、建造和维护质量更好、能效更高的建筑。 GLTF是由OpenGL和Vulkan背后的3D图形标准组织Khronos所定义,成为Web上的3D对象标准。GLTF文件格式包括场景、摄像机、动画、网格、材质、纹理、渲染技术、着色器等元素。 Revit文件导出为GLTF格式Revit文件和GLTF格式都有广泛的用途,在模型应用工作中,经常需要将Revit文件导出为GLTF格式,怎么将Revit文件导出为GLTF格式呢? 3Dconvert for Revit插件支持将.rvt,.rfa,.adsk,.rte等Revit格式文件,转换为8种目标格式:GLTF、OBJ、GLB、DAE、STL、OFF、XYZ和PLY。 在插件页面选择需要转换的目标格式,目前插件支持8种目标格式:GLTF、OBJ、GLB、DAE、STL、OFF、XYZ和PLY。选择需要导出的目标格式:GLTF。
去年针对glTF的PBR材质,写过一篇文章。但重读这篇文章,觉得自己没讲到点子上。今天终于有时间,想着重新梳,重写一下。 Rasterization的不足 ? BRDF 上面的光学公式就剩下f这个函数的定义了,glTF里采用的是Disney提供的Microfacet(显微镜) model,简单说,就是这个材质可以模拟各种光学现象,fragment的朝向差别较大 但glTF基于《Unreal Engine's course notes on real-time PBR》进行了预处理,优化性能。 ? 这个预处理的依据就是如上的公式。
导入GLTF 由于webgl用gltf比较多,所以手上模型多是gltf格式。 UE有插件可以导入gltf 。比如gltf for UE4, 另外一个出名的就是Datasmith,是一个官方的插件。
{MYD,MYI} 3539537 116M -rw-r----- 1 mysql mysql 116M 3月 31 11:46 n1.MYD 3539536 1.4M -rw-r----- 1 mysql mysql 1.4M 3月 31 11:48 n1.MYI 对 MyISAM 表的压缩,MySQL 通过自带程序 myisampack 来压缩,仅仅压缩表数据,不对索引进行压缩。 {MYD,MYI} 3539542 31M -rw-r----- 1 mysql mysql 31M 3月 31 11:46 n1.MYD 3539536 1.4M -rw-r----- 1 mysql mysql 1.4M 3月 31 11:48 n1.MYI MyISAM 压缩表非常适合只读的场景! 压缩率大约为 50% root@ytt-pc:/var/lib/mysql/3304/ytt# ls -sihl 总用量 11M 3539513 11M -rw-r----- 1 mysql mysql
概述 DEM(地形文件)天然自带三维信息,可以将其转换成gltf模型文件。DEM是栅格数据,可以通过GDAL进行读取;gltf是一种JSON格式,可以采用nlohmann/json进行读写。 2. xi) ; uint16_t m01 = (uint16_t)(bufWidth * (yi+1) + xi); uint16_t m11 indices[n * 6] = m00; indices[n * 6 + 1] = m01; indices[n * 6 + 2] = m11 ; indices[n * 6 + 3] = m11; indices[n * 6 + 4] = m10; 参考 [1] github上的gltf教程 [2] gltf教程中文翻译 [3] nlohmann/json关于保留插入顺序的讨论
日志压缩可以保证Kafka总是最少保留单个主题分区的数据日志中的每个消息的key的最后的已知值。 让我们更详细的介绍这些情况,然后描述是如何压缩的: 到目前为止,我们仅描述了简单一些的数据保留方法,其中旧的日志数据在固定时间段或者当日志达到某个预定大小时被丢弃。
纹理数据可以使用jpg文件,方便压缩和传输。 从以上特性可以看出,glTF特别方便与互联网的使用场景,便于传输且预处理程度小。 数据 使用的地形glTF文件已经处理好并上传到文章末尾的地址中(具体的转换过程可以参看《DEM转换为gltf》)。 将这个数据导入到glTF Viewer网站上查看,显示结果如下: ? flag) { alert("没有找到gltf"); } }); 这段代码看起来很繁复,其实原理很简单:遍历加载的文件,对于gltf文件采用FileReader.readAsText 《WebGL编程指南》 2.glTF格式详解(目录) 3.glTF Tutorial 4.前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输 5.gltf2.0规范
而通过 glTF 配合 Draco 压缩的方式,可以在视觉效果近乎一致的情况下,让3D模型文件成倍缩小。下面具体介绍 glTF 格式及 Draco 压缩工具。 1. 通过 Draco 进行压缩 Draco 及 gltf-pipeline 介绍 Draco 是 Google推出的一个用于 3D 模型压缩和解压缩的工具库,上述介绍的 FBX2glTF 及 COLLADA2GLTF 工具也嵌入了 Draco 压缩功能,除此之外,glTF 资源可通过基于 Draco 开发的命令行工具 gltf-pipeline 进行编码压缩,gltf-pipeline 可通过 npm 的方式安装使用 但在 gltf-pipeline 或其他压缩工具中,压缩程度可通过设置参数进行调整,如下所示: ? performance模式下,针对同一个电视机模型利用 ThreeJS 各自加载了 4096 x 4096 大小的颜色贴图、法线贴图、金属与粗糙贴图,对比如下: 由上图使用 basis 贴图资源文件大小比 png 减少了11
实测|用 DracoOptimizer 把 glTF/GLB 模型压缩到极致:体积减90%,Web3D加载快到飞起面向 Web3D / Three.js 开发者的轻量桌面工具:一键压缩 + 批量处理 + 工具核心亮点DracoOptimizer 是基于 Draco 压缩算法的 Windows 桌面端工具(Win10/11 64位),相比同类工具的核心优势:功能 DracoOptimizer 核心使用流程步骤 1:选择压缩对象单文件:点击「选择文件」,支持 .gltf/.glb 格式批量处理:点击「选择文件夹」,自动筛选文件夹内所有 glTF/GLB 文件步骤 2:设置压缩等级推荐等级:7~ (顶点、面、UV 等)应用 Draco 算法压缩几何信息生成压缩后的文件(默认后缀:_compressed.glb/_compressed.gltf)分屏展示压缩前/后模型(可旋转、缩放对比细节)步骤 下载地址:https://wwbsx.lanzouu.com/ialZY3id07na 系统要求:Windows 10/11 64 位(暂不支持 Mac/Linux,后续计划适配) 依赖:无需安装额外运行库
同时NNCF不光支持CNN系列模型的压缩与量化,还支持大模型(包含LLM与VLM)压缩与量化转换。 训练后压缩量化支持以下算法: 从中可以看出,先把模型转换为OpenVINO的IR格式以后会比直接用ONNX格式模型获取更多压缩算法支持,比如:权重压缩支持。 训练后量化(PTQ)YOLO系列INT8 这里以YOLO11为例,实现自定义YOLO11对象检测模型的训练后量化,通过PTQ在维持精度的同时大幅提升推理速度。 模型权重压缩 OpenVINO、Pytorch格式支持直接读取然后转换为INT8权重压缩格式实现模型量化,从而加速推理性能,权重压缩量化支持对称与非对称模式,支持INT8与INT4模式。 还是以YOLO11为例, 权重压缩INT8对称模式: 权重压缩INT8非对称模式 运行对比 CPU 酷睿i7 11th 直接同步推理模式下: 使用FP32的流水线异步推理 使用INT8量化版本的YOLO11
glTF文件介绍 glTF(Graphics Library Transmission Format)是一种用于存储3D模型和场景的格式。 glTF文件包含了设计场景或模型的几何形状、材质、纹理、动画等信息,同时有很好的兼容性和可扩展性。glTF文件基于JSON格式,具有易于阅读和修改的特点,同时也易于使用编程语言进行解析和使用。 glTF支持两种文件格式:*.glTF和 *.glb。 glTF文件易于阅读、修改和编辑,同时可以使用gzip进行压缩以减小文件大小。但是.glTF文件格式在处理复杂场景时,可能会变得比较冗长,处理速度较慢。 glb文件也可以使用gzip压缩以进一步减小文件大小。但是.glb文件格式作为二进制文件,难以直接进行编辑和修改。
3、碰上压缩文件中有太大的文件的话,内存申请肯定会有问题,因为程序是把压缩数据、解压后数据直接存储在内存中的。 4、如果压缩文件中有超过2G的,会溢出Long类型,文件读取也会出问题 第2个问题是因为Huffman树的节点使用的是类模块,在内存释放上有点问题,目前没找到原因。
而我们最终选用的也就是ktx2.0,它能够很方便的和gltf模型格式进行集成。 有关压缩纹理的更多知识,大家可以在网上搜索啊,此处不进行详细的介绍。 0x02 工作流 建模工程师给的是OBJ模型,项目最开始用的也是OBJ模型,首先我们需要把OBJ模型转换成GLTF格式。 可以使用插件obj2gltf进行转换。 转换的流程大致如下: npm install obj2gltf -g obj2gltf -i a.obj -o a.gltf 首先通过npm安装obj2gltf。 然后通过obj2gltf 进行模型的转换,其中 -i表示输入的OBJ模型。-o就是输出的gltf模型。 转换为gltf之后,通过对gltf进行压缩。 压缩的命令大致: gltfpack -i scene.gltf -o scene.glb --tc 其中tc是对贴图进行压缩,原文如下:gltfpack can also compress textures
GLTF formats虽然 GLTF 就是一种格式,但是其内部包含了其他格式。 例如你想修改纹理贴图,换一张更压缩的贴图时,就会比较麻烦,因为这些数据都是被集合在了一起,同一个二进制文件中。 glTF-Draco有点像说的第一个格式,不过使用了 Draco algorithm 来压缩几何体的数据。如果你对比 .bin 文件的大小,你就会发现这个会更小一点。 如果想要每个模型一个文件,并且不关心模型内的素材修改,那么二进制 glTF-Binary 更适合。在这两种情况下,您都必须决定是否要使用 Draco 压缩,但我们稍后会介绍这部分。 (error) => { console.log('error') console.log(error) },)复制代码我们也可以尝试其他的格式导入,除了 Draco 压缩格式外,其他都生效了
这一节我们来通过Threejs加载一个glft格式的三维模型文件,首先我们先简单了解下gltf文件gltf文件gltf文件全称Graphics Language Transmission Forma(图形语言传输格式 gltf文件核心是JSON文件,一个gltf文件可传输一个或多个场景, 包括网格、材质、贴图、蒙皮、骨架、变形目标、动画、灯光以及摄像机等信息。 加载gltf文件下面通过代码实现加载一个gltf格式的文件到场景中,首先还是需要创建场景、相机、渲染器等初始化代码,具体步骤查看前面章节,代码如下页面初始化import * as THREE from 这里我们在加载gltf文件成功后,打印该gltf,看下里面的数据结构,并在加载成功后,将其加入到scene中loader.load('.. /models/motor03.gltf',function(gltf) { console.log(gltf); scene.add(gltf.scene) })刷新浏览器,查看效果
Draco Editor 是一款面向 Web3D 场景的桌面端模型优化工具,支持离线部署与本地化处理,专注于 glTF/GLB 模型的 Draco 压缩与格式转换。 多格式模型转换:支持 glTF, GLB, FBX, OBJ, STL, DAE, PLY 等主流 3D 格式互转。 Draco 模型压缩优化 (Optimize) 这是 Draco Editor 的核心功能,用于对 glTF/GLB 模型进行高质量几何压缩,适用于 Web3D 资源发布与传输加速。 压缩设置: Draco 压缩级别:1-10 级可选(推荐 7 级),级别越高压缩率越大,但解析耗时也越长。 目标格式:可选择导出为 .glb (推荐) 或 .gltf。 支持导入格式:glb, gltf, obj, fbx, stl, dae, ply 支持导出格式:glb, gltf, obj, stl, ply 3.