CesiumLab V1.3 新功能 MAX场景处理(免费Cesium处理工具集)

每次到写文章的时候就很高兴,意味着又有重大功能更新了,也意味着10多天昏天黑地的闭关日子暂时结束了。

依照惯例,先放图

小范围精模型cesium加载效果

大范围白模cesium加载效果

存储对象名称支持点选
处理目的:
MAX建模的三维场景 或者其他建模软件导出的三维模型数据(只支持静态场景,不支持动画) 转为 cesium可以加载的 3dtiles模型。
希望达到的目标:
自动创建lod,加快cesium的加载和渲染速度。
使用的优化手段:
大模型(mesh)切分、场景分块、三角网简化、纹理缩放合并、材质合并。 分久必合,合久必分,分分合合,估计有些人都晕了,我也很晕,但是没办法,这是必要的过程。
支持格式:

我使用的开源项目assimp做输入数据读取解析器,所以理论上支持的模型格式多达57种,详细见 https://github.com/assimp/assimp
这里有我们熟悉的,obj,3ds,gltf 还有很多人关心的 ifc(ifc只支持一部分格式,不是全部,别高兴太早)。?
开发过程中都是用dae测试的、为什么用这种格式?dae是基于xml的,可以算第一个比较完整的模型交 换格式标准,所有数据都是文本保存,更方便阅读和调试。所以我建议如果可以最好max中导出dae格式做测试。
导出工具:

Autodesk Collada是 autodesk官方出的导出插件,这个插件真心很烂,特别对于大场景的导出,基本次次卡死。唯一的优势是对中文支持比较友好,对象的中文名都输出到dae了,所以没办法冒着次次卡死的风险不停的测试。下面是我的导出参数:

autodesk dae 参数1

autodesk dae参数2
OpenCOLLADA 是 开源的导出插件,点链接OpenCOLLADA 去下载对应版本的插件。这个插件优点是导出很快速,缺点也非常明显,对中文支持不友好,max里的所有中文名称都没了。

OpenCOLLADA dae参数
参数配置

模型参数配置
从简单的说:
保存名称:把模型对象名称(Node的name)存入3dtiles的featuretable中,这样加载cesium之后,可以依据pick到的模型名称来区分点击的对象,方便做后续的业务,当然如果你的数据是 花花草草,这些本身就是装饰类的模型,那就没必要保存这个了。
强制双面:按道理模型都应该存储这个属性,但是可惜MAX导出的dae没有保留这个有用的属性。所以我们需要在这里强制设置,对于常见的十字交叉树木花草、单片护栏、围墙等物体,需要勾选此项。对于封闭的模型,例如建筑物或者设备等,不要勾选,可以提升一些渲染效率。
贴图效果:无光照 : 适应的是 烘培后的场景 或者 像花草树木本身贴图都是实景图片的模型。
简单光照:适应的其他贴图模型,采用自定义shader实现,相当光线一直是视点方向,正对平面,模型最亮。

cesium默认:cesium内置的处理方式,全局太阳光。(因为一些人反映模型效果太暗,所以才搞了个 无光照 和 简单光照)
分割策略:这个最难解释的,我们天天提LOD,LOD是什么?核心就四个字:分块,分层 。这个工具的3600行纯手打的C++代码就是围绕这四个字来的。分层,其实依据精度来计算的,这个也就不展开了,核心机密。我们来说说这个分块策略:
空间优先: 依据模型(精确到每个mesh)的模型空间位置,来分割块,这个也是常规手法,比如四叉树,八叉树等等,不过这回因为考虑到适应性,并没有使用四叉树或者八叉树,而是自创的一个二叉树。简单来说,分别在x,y,z三个轴向上分割,哪个轴向上分割的模型总量差较小,就使用哪个轴。
材质优先:依据模型(精确到每个mesh)的材质(含贴图)来组合,优先把使用相同材质的模型放在一起。为什么要做这个?请看文本图1,近处的花花草草,如果按照空间分割、这些花花草草本身其实几何体很简单,但是纹理很大,导致这个纹理存储在多个块中,就比较浪费了,完全没有必要,所以这种优先使用材质分块,分层级别更少,效率更好一些。
注意优先二字,我们内部会自动计算,分块这两种方法会综合运用,而不是唯一标准。
后记:
这个工具最开始并没有排到我计划的列表中去,不过看大家各种尝试,转模型太辛苦了,还是牺牲一下我两周的时间来做点事情。和我最开始预估的一样,第一,我自己暂时用不上这个工具;第二,本身这个工具的难度就很大,需要上所有的优化手段,模型分割、模型简化,纹理合并,场景分块等等。所以我很担心,这个坑填不上,后来想想,先填一点,能解决一部分问题也好。每天约16个小时的高强度工作,大约花了2天设计了整个流程,又花3天时间堆上所有代码,又花了2天时间调通。效果也有了。然而,这时候我又有了更好的处理流程,觉得第一版太屎了,修修补补,各种不顺眼,本着做产品不是做项目的目的,决定代码重构。花了0.5天整理思路,1天的时间堆代码(3000多行c++代码一天手打出来),2天各种测试修补bug,再来0.5天的UI部分,这回效果基本满意了。再这过程中,真的也是没有及时回复很多小伙伴的消息,真的抱歉了。

模型优化是个无底洞,这个工具也不是放之四海而皆准,依然还有较大的优化空间。有人问我支不支持几百平方公里的模型? 我不好回答,因为这要看模型制作的精细度,以及模型现在的场景结构。如果转换有问题,请发测试数据给我。

原文地址:http://blog.51cto.com/14117342/2326986

时间: 2024-10-11 16:19:38

CesiumLab V1.3 新功能 MAX场景处理(免费Cesium处理工具集)的相关文章

CesiumLab V1.4 新功能 BIM数据处理

我也没想到,BIM数据处理一下拖了这么久才有个交代.我们照例先放图Revit官方的示例数据隐藏屋顶+俯视曾经因为太大而无法导出无法处理的医院模型室内装修方案模型最近和很多做bim的同行聊天,业内公认,目前 revit 在国内的BIM软件占有率大约在80%~99% ,也就是说搞定rvt模型,基本满足了绝大部分的需求.最开始可选的几种方案:1,revit 导出 ifc,cesiumlab处理ifc格式:此方案很快被否,原因是ifc并不能很好的保持revit内的相关属性,而且revit对ifc的导出和

即将到来的Autodesk 主要产品2015版 产品和API新功能在线培训(免费)

一年一度的Autodesk主要产品和API在线培训课程在5月份即将開始.我们呈献给大家5个课程. 1. Revit 2015 产品新功能及API 概览 2. Vault 2015产品新功能及API 概要 3. AutoCAD 2015产品新功能及API 概要 4. Civil3D 2015产品新功能及API 概要 5. Inventor 2015产品新功能及API 概要 报名參加请到这个页面去了解具体信息,请登记报名.课程免费參加,仅仅要有网络就能够參加. Revit API课程在5月16日下午

Docker 1 12新功能探索(4) 1分钟创建集群

在这篇文章里面我们将会通过创建一个极其简单的3个节点的集群来学习一下docker swarm 模式的使用方法.这个1.12版本中最引人关注的部分到底使用的感觉如何.因为没有在大型的生产环境中进行严格的比较,单从研究性质或者小规模的集群的创建的感觉来说和kubernetes的集群创建不相上下,使用方便,在准备妥当的情况下,手速快的朋友1分钟之内完全能够创建完毕. 事前确认 [[email protected] ~]# docker info |egrep 'Manager|Version' WAR

3ds max 2016 新功能

3ds max 2016 新功能_MCG节点编辑器 这是介绍视频下载: http://pan.baidu.com/s/1gds4wqJ

初识 MySQL 5.6 新功能、参数

摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不定时更新). 一:性能.功能上的提升. ① 在线DDL即 online DDL,日常的增删字段和索引都不会出现问题,但还是有很多操作不支持完全的在线DDL,包括增加一个全文索引,修改列的数据类型,删除一个主键,修改表的字符集等,其中主键可以通过自己指定的方式进行操作,操作方式有2种:algorith

OpenStack Q版本新功能以及各核心组件功能对比

OpenStack Q版本已经发布了一段时间了.今天, 小编来总结一下OpenStack Q版本核心组件的各项主要新功能, 再来汇总一下最近2年来OpenStack N.O.P.Q各版本核心组件的主要新功能.仅供参考, 如有遗漏.错误请指正. 1.1         Q版新功能总结 Q版相对于P版, 主要还是各功能的增强和优化, 其中主要功能有: 计算组件中的vGPU支持.冷迁移至指定主机.PCI NUMA亲和性.卷共享等,镜像组件中的web方式导入镜像, 网络组件中的浮动IP QoS.DVR/

看了一下unity5.6的新功能 以及Timeline

3月31日unity5.6发布,然而timeline(前sequence模块)被delay到unity 2017.上个星期官方又发布了unity 2017的beta版本 有一阵子没写博客了,写一篇整理归纳 1.Physics Debugger 用于可视化调试场景中的物理组件,其中Hide系列开关都是针对特殊高亮的 他只会隐藏高亮,而不会真正隐藏对象. 2.Test Runner集成播放模式测试 这个之前的单元测试插件就有,叫做集成测试,不过很不好用. 大概感觉是有一些改动,对比一下: 新版本(E

Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance

在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定的rebalance timeout(即max.poll.interval.ms),而每次rebalance的代价又相当地大,因为很多状态都需要在rebalance前被持久化,而在rebalance后被重新初始化.曾经有个国外用户,他有100个consumer,每次rebalance的时间甚至要1个

Windows Server 2012 R2里十个极好的新功能

Windows Server 2012 R2具备的众多新特点大大的增强了操作系统的功能性,同时也是在Windows Server 2012原有功能上的拓展.这里整理出Windows Server 2012 R2的10个会对你的日常工作有冲击力的新功能.其中一些新功能,尤其是在存储领域,微软为传统合作伙伴提供了新的开箱即用功能. 工作文件夹(Work Folders) Work Folders为企业服务器带来了Dropbox新功能,把它安装在Windows Server 2012 R2系统上,你就