56

https://support.altizure.cn/topic/6/下载作品-仅限专业项目 下载Altizure桌面端:https://www.altizure.cn/desktop 示例模型下载:https://pan.baidu.com/s/1bqL3v7h 了解cesium:https://cesium.com/ 数据格式转换

首先打开altizure桌面端,设置输入路径(下载好的实景三维数据位置),输出路径,然后点击ok开始转换。

转换完成的3dtiles,可以直接在cesium调用:

创建cesium项目,加载模型

cesium调用3dtiles基本步骤:

初始化viewer 加载3dtiles(配置tileset.json路径) 加载完成,视角移动到模型区域范围内 如果模型出现y-z轴反转的情况,应用模型旋转

这里有一份最基本的cesium加载3dtiles案例,引用cesium 1.62版本。下载解压后,将3dtiles所在文件夹复制到案例根目录,修改tileset.json路径,即可托管服务演示:https://pan.baidu.com/s/1GaVzzVmcVxn9Bd-h6pAq-A
最基本的加载demo代码:

<body> <div id="cesiumContainer"></div> <script> // initialize the viewer var viewer = new Cesium.Viewer('cesiumContainer', { shadows: false }); // let the model not occluded by terrain viewer.scene.globe.depthTestAgainstTerrain = false; // load 3dtiles var tileset = new Cesium.Cesium3DTileset({ url: './cyt_3dtiles_3/tileset.json' }); // after loaded, zoom to the model extent tileset.readyPromise.then(function (tileset) { viewer.scene.primitives.add(tileset); viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.0, -0.5, tileset.boundingSphere.radius * 2.0)); }).otherwise(function (error) { console.log(error); }); </script> </body>

关于模型旋转,由于cesium内部模型矩阵是相对地球球心的,因此需要经过 平移模型到球心->旋转模型->平移回到原来位置 这样的步骤。
绕X轴旋转模型90度代码:

// rotate the model if necessary var rootTransform = tileset._root.transform; var rootTransformInv = Cesium.Matrix4.inverse(rootTransform, new Cesium.Matrix4()); // write x, y, z rotate degrees here var rotateMatrix = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(90))) var modelMatrix = new Cesium.Matrix4() Cesium.Matrix4.multiply(rootTransform, rotateMatrix, modelMatrix) Cesium.Matrix4.multiply(modelMatrix, rootTransformInv, modelMatrix) tileset.modelMatrix = modelMatrix

注意这段代码需要写在 tileset.readyPromise.then 里面。如果需要旋转其他角度,修改 Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(90)) 即可。

cesium调用altizure模型:

模型旋转后的效果:

托管/发布cesium应用

到这里,关于开发的部分已经讲述完成了。开发完成的cesium项目,还需要托管到服务器或者发布本地服务,才可以浏览我们开发出来的成果。
经过测试,我们发现cesium在某些方法下不能正常发布,如(python -m SimpleHTTPServer)。验证后发现通过nginx或者iis托管cesium项目,用户是可以正常访问的。托管cesium的服务只需要基本的静态文件托管即可。

nginx windows下托管教程:https://yq.aliyun.com/articles/590421 nginx linux下托管教程:https://blog.csdn.net/weixin_36104843/article/details/80233994 nginx mac下托管教程:https://www.jianshu.com/p/2083ccf2ade6

13

191208山湖名城 | Altizure The Portal for Realistic 3D Modeling

观音阁位于湖北省鄂州市,建立在小东门外长江江心的「龙蟠矶」礁石上,有「万里长江第一阁」的美誉。整座建筑呈船型,长24米,高14米,由红石青砖砌成。通过 Altizure 实景三维模型我们可以看到,船型阁楼内殿室自西向东排布。阁身正壁镌有“观音阁”几字;进阁正门石碑上刻着的“龙蟠晓渡”则呼应礁石并且为整座建筑增添了神话色彩。


▲ 阁身正面三维渲染效果

观音阁始建于宋朝,建筑的目的是为了提醒夜晚行船避开江心的龙蟠矶。因为建造在特殊的地理位置,观音阁也曾在洪水中不断经历着冲毁与重建。直至元朝时期,建筑工匠才重新进行设计,针对洪水进行扩建重修,才留下了现今观音阁的面貌。

每逢长江进入夏汛期时,江水便能够上涨漫延到观音阁的高层窗口,有的时候甚至只剩下檐牙、龙吻、中亭露出水面,其余部分均被淹没在长江之中。等到汛期过去,才又重新“浮”出水面。


▲ 利用 Altizure 模型编辑功能模拟观音阁洪峰最高时效果

据专家分析,观音阁之所以能够从元朝重建后到现在的七百多年间依然屹立在江心,一是因为龙蟠矶外形如同船舷,可以减缓水势,顺势泄流;二是因为观音阁在迎江方向的石墙能够抵抗江水的大部分冲力,结合红石青砖材料结构与稳固的地基,所以即便每年都循环往复地淹没在江中也并没有对其结构造成太大的破坏。这体现出了古代鄂州工匠对于流体力学的灵活运用。

到了现在,除了选择合适的建筑材料和结构以外,建筑选址实际地形地质情况、房屋地基基础方案、建筑物上部结构的稳定性与整体性等等都需要我们在施工前期需要做好准备和数据支持。

我们可以将预选址地区用 Altizure 进行实景三维模型重建,将该地区流域内沿河聚落河道典型断面数据、山洪河道地形数据以及其他实地调查数据如水利工程点位、河道线、道路线、撤退路线等数据匹配到实景三维模型当中,方便我们进行后续工作的开展。利用 Altizure 开发平台可以对目标区域进行淹没分析,以此来判断建筑是否需要增加防洪围护措施以减少灾害发生时的损失。


▲ Altizure 实景三维开发平台 - 淹没分析

将建筑的手工 OBJ 模型导入到选址区域实景三维模型中,可以模拟建筑落成后的效果,通过多角度查看建筑方案以及与其他方案之间的全方位对比得出最优建筑方案。

Altizure 虚实融合详细教程请查看 Altizure 星球虚实融合功能 - 导入三方模型,轻松打造虚拟现实的三维场景


▲ OBJ 手工模型方案分屏对比

另外,在洪灾发生后需要尽快地让洪水疏通,避免长时间浸泡建筑物。观音阁的内部得益于良好的排水设计而能够在七百年间保存完好。在城市中,我们则需要完整的地下管线系统来帮助我们实现泄洪排水。通过将地下管线信息整理到 Altizure 实景三维模型中进行统一管理及实时监控。我们不仅在日常就能够完整地查看到所有管线的状态,也有利于在需要变动地下管线或修建地铁路线时工作的开展。

▲ 在 Altizure 实景三维模型中管理查看地下管线

自然灾害的发生是目前我们无法避免的,我们能够做的就是运用手中掌握的技术来帮助我们尽可能地减小自然灾害所带来的破坏。实景三维建模技术不仅仅是记录下这个建筑曾经的样貌,Altizure 希望能够运用实景三维建模技术保护好我们生活的环境,因为生活中的每一处存在都是我们在这个时代中存在的证明。如何减小时代的洪流对于我们的文化带来的快速冲击也是值得我们去思考的问题。