bat 批处理 脚本 for循环 批量压缩gltf模型 gltf批量压缩 gltf压缩转成glb 这里参考两篇文章: 1. 关于gltf压缩转成glb的工具(gltf-pipeline) https://blog.csdn.net/niujing1987/article/details/100639864 2. -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 ? 看一下压缩后的模型大小: ? 批处理的基本语法,写法、格式; 在cmd中使用%i,如果是在bat批处理文件中,要换成%%i 2. gltf-pipeline除了会用,还应该看看他的源码,draco算法到底是怎么回事?
在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)。 2 glTF渲染 东西再好,光说不练假把式。设计好了,只是一个开始而不是完结,还需要持续的推广和应用。这年头酒香也怕巷子深,伯牙难觅钟子期的画面有没有。 因此glTF还包含整个场景的关系,包括节点,变换矩阵,变换的层级关系,网格,材质,相机和动画,试图保存所有信息。这是一个场景树的逻辑,算是glTF的一个优化。 比如glTF提供了扩展,提供了场景树,相机的信息,这都是出于通用性的考虑,但这个是否实用,就不好判断了。或者是否提供ZIP压缩。
:Mesh与Primitive中的Vertex Buffer, Index Buffer,Vertex Array,还有Texture与State Management,在灵活和易用上都有不错的设计 压缩 : 针对3D Geometry的Draco压缩#6191 Scene& Node 节点间的依赖和位置关系 实例化设计 glTF2.0 相比1.0,glTF2.0的改变可以用“一增一删修修补补”来概括,主要有 体系 其他 明确两个非重点:不支持流媒体,结构以JSON格式呈现,原始数据在可读性上并不友好 兼容性:2. 2.Roughness:光的反射计算时,我们通过normal map来反映该物体的orientation,这由物体的形状来决定。 原图效果,后两张算是灰度图,值越大越白,越偏金属(图2),也越粗糙(图3)。 ? 这里,glTF的采用的是Disney给出的BRDF公式: ? ,diffuse采用的是Lambert模型: ?
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的不足 ? 如图2,为了在屏幕上渲染物体,Rasterization有两个循环: Loop objects Loop pixels Rasterization的好处是性能高,能够满足实时性的要求。 它的首要问题是如何把一个3D的物体渲染到2D的平面,更擅长处理物体的几何形状,但在渲染效果上并不真实。 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,是一个官方的插件。
概述 DEM(地形文件)天然自带三维信息,可以将其转换成gltf模型文件。DEM是栅格数据,可以通过GDAL进行读取;gltf是一种JSON格式,可以采用nlohmann/json进行读写。 2. ; gltf["asset"] = { {"generator", "CL"}, {"version", "2.0"} }; gltf["scene "] = 0; gltf["scenes"] = { {{"nodes", {0} }} }; gltf["nodes"] = { {{"mesh 2.转换的的原理非常简单,就是将DEM的每个网格绘制成两个三角形,通过顶点索引进行绘制。gltf具体的规范可以参看github上的教程,网上还有相关的中文翻译。 参考 [1] github上的gltf教程 [2] gltf教程中文翻译 [3] nlohmann/json关于保留插入顺序的讨论
点击右上角【gis工具】-图像配准工具 导入户型图片 点击右侧【户型图大小一步配准到位】,按提示在户型图上沿线段绘制2点线。第2个点结束。 输入这条线对应户型的真实长度。单位为毫米。 2、切割立面墙,制作窗户或门 使用左侧【自由线剪刀】对外部围墙进行切割。 注意 按ctrl键可使用直角线切割,更美观。 切割了2次这位只的立面墙已经出来了。 2、可对多个链接的墙体合并,不需要逐个裁剪。 按着shift点击选中多个轮廓。点击左侧【面合并】 3、如果墙体是承重墙。 必须要标注名称为【承重】在最红导出gltf模型时很重要 四、将GIS数据转换成gltf模型 选择一个名称为【户型底座】的轮廓。(右键编辑轮廓) 点击左侧【选择框】-3d户型 得到了三维模型。 绘制一个更大的轮廓,手动设置名称为【户型底座】 五、导出为gltf模型或stl模型 点击头部按钮【3d户型库】,打开户型库面板 已将户型模型上传到了网络地址。
概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.3. 初始化顶点缓冲区 2.2.4. 其他 3. 结果 4. 参考 5. 相关 1. 纹理数据可以使用jpg文件,方便压缩和传输。 从以上特性可以看出,glTF特别方便与互联网的使用场景,便于传输且预处理程度小。 在这篇教程中,就通过一个带纹理的地形文件,具体解析以下glTF格式,顺便加深一下WebGL中初始化数据的理解。 2. 实例 2.1. 数据 使用的地形glTF文件已经处理好并上传到文章末尾的地址中(具体的转换过程可以参看《DEM转换为gltf》)。 《WebGL编程指南》 2.glTF格式详解(目录) 3.glTF Tutorial 4.前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输 5.gltf2.0规范
Facebook 推出的 FBX2glTF 命令行工具,可直接从github 官网下载 release 版本; b. 2. 通过 Draco 进行压缩 Draco 及 gltf-pipeline 介绍 Draco 是 Google推出的一个用于 3D 模型压缩和解压缩的工具库,上述介绍的 FBX2glTF 及 COLLADA2GLTF 如果直接提供压缩纹理格式,则不需要进行 png 的转码过程且可大大减少纹理内存。如下图方案2所示: ? 但由于 GPU 芯片提供商太多,设备的压缩纹理格式多种多样(例如安卓设备常用格式是 ETC1/ETC2,苹果设备是 PVRTC…),手动输出多种格式代价大,导致方案2较难落地。 2.
图片压缩的方法有很多,这两天向同学学了一种方法,刚觉非常行之有效,与大家分享。 ---- 图片压缩的作用: 当我们上传图片到数据库时,如果是头像图片,那么在客户端显示出来一般是缩略图,这时大图是没有用的,又浪费加载时间 ---- 图片压缩的方法 /* 压缩路径下的文件 */ private } return pic; } ---- 使用解析 bitmap=Bitmap.createScaledBitmap(bitmap, 400, 400, false); 这段代码将图片大小压缩到
笔记内容: l 6.1 压缩打包介绍 l 6.2 gzip压缩工具 l 6.3 bzip2压缩工具 l 6.4 xz压缩工具 笔记日期:2017.8.5 6.1 压缩打包介绍 ? 注意:gzip不能压缩目录 6.3 bzip2压缩工具 ? 这个bzip工具比起gzip来说,要压缩得更狠一些,也就代表着耗费的cpu资源更多,而且这两个工具的压缩算法不一样。 最小化安装可能没有这个工具,需要使用yum install -y bzip2命令安装: ? bzip2和gzip的用法几乎是一模一样的: ? 解压同样的可以使用两个命令: ? ? 可以加-c选项指定压缩文件的存放路径: ? 相对的解压也可以这么做: ? bzip2也有压缩级别,可以指定压缩的级别,也是1-9的压缩级别,默认的压缩级别是9,所以一般情况下不需要指定压缩级别。 可以使用file查看压缩文件的信息: ? bzcat命令可以查看bz2格式的压缩文件的内容,原理和gzip的zcat命令一样: ? 6.4 xz压缩工具 ?
目录一、 tar命令的基本使用1、常用命令选项二、zip压缩命令的使用1、常用命令选项三、gzip压缩命令的使用1、常用命令选项四、bzip2压缩命令的使用1、常用命令选项2、bzcat命令五、各种压缩命令的区别一 、解开压缩文件格式:bzip2 【文件名】[root@localhost tar]# bzip2 audit.log1、常用命令选项格式:bzip2 【-9】【文件名】bzip2 -9:表示高压缩比,取值 1-9,默认为6bzip2 -d:用于解压缩文件,同bunzip2(解压缩)命令bzip2 -d:解压.bz2格式的压缩文件[root@localhost tar]# bzip2 -d audit.log.bz2 > audit1.log.bz2bzip2 -k:保留原文件压缩。 2、bzcat命令bzact :用于查看bz2格式的压缩文件。
glTF支持两种文件格式:*.glTF和 *.glb。 glTF文件易于阅读、修改和编辑,同时可以使用gzip进行压缩以减小文件大小。但是.glTF文件格式在处理复杂场景时,可能会变得比较冗长,处理速度较慢。 glb文件也可以使用gzip压缩以进一步减小文件大小。但是.glb文件格式作为二进制文件,难以直接进行编辑和修改。 在一个不同的坐标系下的旋转 var fixedFrameTransform = Cesium.Transforms.northEastDownToFixedFrame(origin); var quat2 第二个示例中,使用了一个变换矩阵进行了固定坐标系的旋转,结果被存储在quat2中。第三个示例使用给定的椭球体并将结果存储在提供的quat3四元数对象中。
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 ) gltfLoader.setKTX2Loader(ktx2Loader); gltfLoader指定ktx2loader之后,就可以像加载普通gltf模型一样,加载带ktx2贴图的模型。
1. bzip2的基本用法 1.1 压缩单个文件 使用bzip2命令压缩单个文件的基本语法如下: bzip2 文件名 实例: bzip2 example.txt 这将生成一个名为example.txt.bz2 1.2 压缩多个文件 要压缩多个文件,可以列出它们的文件名: bzip2 文件1 文件2 文件3 实例: bzip2 file1.txt file2.txt file3.txt 这将分别生成file1. txt.bz2、file2.txt.bz2、file3.txt.bz2等压缩文件。 1.3 压缩整个目录 如果要压缩整个目录,只需指定目录名称: tar -cjvf 目标文件.tar.bz2 目录 实例: tar -cjvf archive.tar.bz2 my_directory 这将递归地压缩 解压缩文件 2.1 基本解压 要解压缩.bz2文件,使用bzip2命令的基本解压语法如下: bzip2 -d 文件名.bz2 或者简写: bunzip2 文件名.bz2 实例: bzip2 -d example.txt.bz2
实测|用 DracoOptimizer 把 glTF/GLB 模型压缩到极致:体积减90%,Web3D加载快到飞起面向 Web3D / Three.js 开发者的轻量桌面工具:一键压缩 + 批量处理 + (上手成本高),要么是在线工具(批量处理受限),因此我基于 Draco 官方算法做了一款轻量桌面工具 DracoOptimizer,专注解决「glTF/GLB 模型压缩」这一件事,兼顾易用性和压缩效果。 工具界面(截图占位)DracoOptimizer 主界面左侧:文件/文件夹选择区 + 压缩等级设置(1~10)中间:模型预览区(压缩前/后分屏对比)右侧:压缩进度 + 结果统计(体积/压缩率)2. 核心使用流程步骤 1:选择压缩对象单文件:点击「选择文件」,支持 .gltf/.glb 格式批量处理:点击「选择文件夹」,自动筛选文件夹内所有 glTF/GLB 文件步骤 2:设置压缩等级推荐等级:7~ (顶点、面、UV 等)应用 Draco 算法压缩几何信息生成压缩后的文件(默认后缀:_compressed.glb/_compressed.gltf)分屏展示压缩前/后模型(可旋转、缩放对比细节)步骤
例如你想修改纹理贴图,换一张更压缩的贴图时,就会比较麻烦,因为这些数据都是被集合在了一起,同一个二进制文件中。 glTF-Draco有点像说的第一个格式,不过使用了 Draco algorithm 来压缩几何体的数据。如果你对比 .bin 文件的大小,你就会发现这个会更小一点。 如果想要每个模型一个文件,并且不关心模型内的素材修改,那么二进制 glTF-Binary 更适合。在这两种情况下,您都必须决定是否要使用 Draco 压缩,但我们稍后会介绍这部分。 THREE.PlaneGeometry(15, 15), new THREE.MeshStandardMaterial({ color: '#607D8B', }))plane.rotateX(-Math.PI / 2) renderer.setSize(sizes.width, sizes.height)renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)
解压文件 bzip -# 1.txt 范围1-9,默认9 不能压缩目录 bzcat 1.txt.bz2 查看压缩文件的内容(含义为:先解压,后查看) bzip2 -c 1.txt > bzip2压缩文件 安装bzip2包——>yum install -y bzip2 bzip2 1.txt 压缩文件 [root@hf-01 d6z]# du -sh 1.txt 2.0M 1. 1.txt.bz2 [root@hf-01 d6z]# ls 1.txt bzip2压缩文件,并指定目录 bzip2 -c 1.txt > /tmp/2.txt.bz2 压缩1.txt文件,并压缩到 d6z]# bunzip2 1.txt.bz2 > 5.txt [root@hf-01 d6z]# ls 1.txt 4.txt 5.txt bzip2压缩级别 bzip2默认压缩级别为 9 file 查看压缩文件大小 file命令,会知道压缩文件的类型,大小 [root@hf-01 d6z]# file 1.txt.bz2 1.txt.bz2: bzip2 compressed data, block