【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果

【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果3dmax 模型处理为 3dtiles

在阅读glTF,3d tiles官方文档后,尝试使用官方的一些免费工具将3dmax模型处理成gltf和3d tiles模型。

3dmax版本:2018

模型资源:模型            提取码:cuog

一、glTF

在3D Max中安装3DS Max exporter插件(该插件要求3D max版本为2015以上),可以直接从3dmax中导出glTF/glb。

【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果

同时为了之后转换的3d tiles有LOD效果,在3D Max对模型进行了三角网优化,复制两个相同模型,分别减少50%的顶点和75%的顶点。

【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果

二、3d tiles

gltf/glb转化为3d tiles模型,需要将其转换为.b3dm文件格式,再编写tileset.json文件。

推荐在vs code中安装glTF Tools直接查看glTF,并且可以验证glTF有效性。

为了减小.b3dm文件大小,加快前端加载速度,可使用KHR_draco_mesh_compression扩展压缩几何数据(坐标、动画、蒙皮数据等),同时减小贴图大小,尽量不超过1024X1024。

使用管网工具gltf-pipeline可以给gltf模型添加KHR_draco_mesh_compression扩展,还可以进行gltf/glb互转

//安装 npm install -g gltf-pipeline //压缩glTF几何数据 gltf-pipeline -i model.gltf -o modelDraco.gltf -d //结合gulp以类库的方式使用gltf-pipeline const gltfPipeline = require('gltf-pipeline'); const fsExtra = require('fs-extra'); const processGltf = gltfPipeline.processGltf; const gltf = fsExtra.readJsonSync('model.gltf'); const options = { separateTextures: true, compressionLevel: 7 //压缩级别 [0-10] }; processGltf(gltf, options) .then(function(results) { fsExtra.writeJsonSync('model-separate.gltf', results.gltf); // 保存贴图,.bin数据文件 const separateResources = results.separateResources; for (const relativePath in separateResources) { if (separateResources.hasOwnProperty(relativePath)) { const resource = separateResources[relativePath]; fsExtra.writeFileSync(relativePath, resource); } } });

glbToB3dm

接下来将三个级别的glTF模型转换为.b3dm文件。在vs code中将glTF转换为glb格式。

下载cesium官方的转换工具的开源代码

https://github.com/CesiumGS/3d-tiles-validator/tree/master/tools

//下载后安装依赖 npm install 

在根目录下,运行以下命令,将glb转换为.b3dm

node ./bin/3d-tiles-tools.js glbToB3dm -i ./specs/data/CesiumTexturedBox/CesiumTexturedBox.glb -o ./output/CesiumTexturedBox.b3dm

三个级别的glb文件依次转换为.b3dm文件。

最后写一个简单的tileset.json文件,在3dmax查看模型的尺寸,用于3d tiles中的包围盒参数。

【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果

tileset.json

tileset.json中参数的意义请查看规范文档:https://github.com/ComeformPC/3d-tiles/tree/master/specification

{ "asset": { "version": "1.0" }, "geometricError": 500, //几何误差,判断是否渲染子节点 "root": { "transform": [ //使用Cesium.Transforms.eastNorthUpToFixedFrame(origin)设置模型位置 0.022217, 0.87968, 0.89781, 0, -0.17457, 0.065825, 0, 0, -0.075076, -0.77697, 0.65391, 0, -., -., ., 1 ], "boundingVolume": { //因为gltf是Y轴向上,3d tiles为Z轴向上,cesium会将gltf旋转90度 "box": [ 0, 0, 0, 30.6, //X轴尺寸一半,X轴不变 0, 0, 0, 28.9, //Z轴尺寸一半 0, 0, 0, 8.73 //Y轴尺寸一半 ] }, "geometricError": 0.2, "refine": "REPLACE", "content": { "uri": "scene-low.b3dm" }, "children": [ { "boundingVolume": { "box": [ 0, 0, 0, 30.6, 0, 0, 0, 28.9, 0, 0, 0, 8.73 ] }, "geometricError": 0.1, "content": { "uri": "scene-medium.b3dm" }, "children": [ { "boundingVolume": { "box": [ 0, 0, 0, 30.6, 0, 0, 0, 28.9, 0, 0, 0, 8.73 ] }, "geometricError": 0, "content": { "uri": "scene-origin.b3dm" } } ] } ] } }

在我的开源项目中有转换后的3dtiles。有兴趣可以看一下。

https://github.com/ComeformPC/cesiumProject/tree/master/public/data/tilesets/architecture

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204525.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:07
下一篇 2026年3月19日 下午8:07


相关推荐

  • VS快速注释快捷键

    VS快速注释快捷键选中需要注释的代码段 按 Ctrl K C 即可快速注释 选中需要取消注释的代码段 按 Ctrl K U 即可取消注释

    2026年3月18日
    2
  • msiexec参数

    msiexec参数在 cmd 上输入 msiexec 就弹出了这个参数 Windows R Installer V3 01 4000 1823msiexec Option OptionalPara 安装选项 nbsp nbsp nbsp 安装或配置产品 nbsp a nbsp nbsp 管理安装 在网络上安装产品 nbsp j t g nbsp nbsp 播发产品 m 播发到所有用户 u 播发到当前用户 nbsp nbsp nbsp 卸载产品显示选项 nbsp q

    2026年3月18日
    3
  • 免费的mysql可视化工具_centos7安装oracle

    免费的mysql可视化工具_centos7安装oracle以前安装过几十次的mysql。今天还是遇到问题(虽然是因为是局域网ip不通无法远程连接),记录一个完整的安装过程。1.yum卸载yum安装之后如果需要卸载1.命令rpm-qa|grep-imysql或者yumlistinstalled|grepmysql查看安装的mysql安装包将查出来的安装包通过yumremove卸载yumremovemysql-comm…

    2026年2月25日
    6
  • 精通Python爬虫框架Scrapy_php爬虫框架哪个好用

    精通Python爬虫框架Scrapy_php爬虫框架哪个好用文章目录一、Scrapy框架原理1、Scrapy特点2、Scrapy安装3、Scrapy架构图4、Scrapy五大组件5、Scrapy工作流程二、Scrapy创建项目三、Scrapy配置文件详解1、项目完成步骤2.3.2爬虫文件:baidu.py详解3、settings.py详解4、run.py文件详解5、items.py详解四、案例1、抓取一页数据1.1创建项目和爬虫文件1.2items.py文件1.3写爬虫:guazi.py1.4管道:pipelines.py文件1.5全局配置:setti

    2022年10月21日
    5
  • HbuilderX如何让项目运行到微信开发者工具完整教程

    HbuilderX如何让项目运行到微信开发者工具完整教程本人最近在搞微信小程序开发 就碰到运行到微信开发者工具无法启动的问题 上网去查了一些博客 问题得到了解决 如果有和一些作者的内容有相似的地方请见谅 抱拳 工具 HbuilderX 微信开发者工具现在正式开始进入我们的正题 1 点击文件 选择新建下面的项目 如下图所示 新建一个 uni app 项目 2 接着选择 uni app 类型 起个名字即可 如下图所示 3 然后就建好了小程序的目录 如下图所示 4 接着点击工具下面的设置 如下图所示 5 然后在运行配置里面设置微信开发者工具的路径

    2026年3月16日
    1
  • STL源代码分析——STL算法remove删除算法

    STL源代码分析——STL算法remove删除算法

    2021年9月11日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号