前言
本文主要介绍山东科技大学校园复原项目的技术方案,不代表是最优解。复原工作仍在进行中,后续将持续更新完善内容。文章标题仅反映现阶段工作进展。
本文默认读者具备基础计算机知识,不展开技术细节以避免冗余。作者文字能力有限,如果某一部分难以理解,可在以下群组直接@leiuary:MUA·Minecraft高校联盟二群、MUA·理事会、MUA·复原工程技术交流群、鲁高联Minecraft交流群,我们将不胜感激。
本文所用校园模型来自测绘系解斐斐老师,因此我们并没有倾斜摄影经验,相关内容未纳入本文范畴,请见谅。
另一篇介绍经验的文章:部分高校复原经验
如何优雅地共享模型
查看倾斜摄影结果的软件非常成熟,因此我们可以不用重复造轮子,而是使用现成的方案。本文我们使用DasViewer软件,截至目前最新的 3.6.0 版本有一些问题,这里提供 3.4.0 版本 pan.baidu.com 提取码: x2cg。
一般来说,由无人机拍摄的倾斜摄影模型通常很大,我们有在不同时间拍摄的两个模型,大小分别为 1.7G 和 70G ,精度为 15cm 和 3cm 。


可见,如果要有精度够高的模型做参考的话,模型的体积会非常庞大,在每台参与复原的电脑上都存放一份是不现实的。我们可以将模型存在服务器上,用软件访问服务器上的模型,不过这要求服务器的带宽至少达到 30-50Mbps。如果校园网的环境允许,可以尝试用内网访问。
要对外开放,我们需要先对存放模型的服务器进行网络设置,这里用到了 nginx 。下载安装的教程有很多,这里提供一下配置文件
server {
listen 25561; #开放的端口
server_name localhost;
root /server/3dtitles; # 替换为你的文件夹路径
location / {
autoindex on; # 显示目录列表
autoindex_exact_size off; # 显示文件大小(人类可读)
autoindex_localtime on; # 显示本地时间
limit_rate 5m; #限速
}
}
在 DasViewer 里面将osgb转换为3dtiles后上传到服务器里,然后在本地软件选择导入在线模型,转换完的文件夹下应该有一个名为tileset.json
的文件,服务地址就是tileset.json
的位置。如果不清楚,可以在浏览器输入服务器ip并加上开放的端口,找到tileset.json
并打开,地址栏就是服务地址了。例如我们把转换的模型的文件夹命名为15并放在 nginx 开放的文件夹里,填入软件的地址应该是这样的 http://192.168.75.2:25561/15/tileset.json
将模型体素化并导入游戏
在校园复原中,往往会将学校的卫星图或cad测绘资料转换成像素画的形式导入游戏,这样的底图能为复原提供极大的便利。如果我们有校园的模型的话,就可以获得三维的底图,虽然这样处理的结果往往很粗糙,但对于定位来说也是很有用的。

下面介绍使用在blender中将obj格式的校园模型转换成可导入游戏里的原理图的方法。我们的模型处理基于 2G 模型,实际使用到的部分约为 1G 。处理模型的电脑需要独显,较大的内存(32G或以上)并留有足够虚拟内存(不少于50G)。使用的blender版本为4.2LTS,所需插件有BlockBlender(体素化),BakeLab(烘焙材质)和BlockBlenderSchemExport(导出原理图),下载链接 pan.baidu.com 提取码: r8h4。
开始前要做的事

导入插件的位置在编辑>偏好>插件设置,你可以直接把插件文件拖到插件窗口上安装,检查插件是否正常生效。校园模型常常很大,想要看到全部模型就要对视图调整,多来几个零就行
处理模型
首先我们要导入obj模型。模型一般是由倾斜摄影文件通过格式转换获得的,如此得到的模型会分成多个部分。这样也方便了后期处理,因为常用的电脑性能很难同时处理整个校区。如果不是,也可以手动分割。

有时候导入了模型不能直接看到,模型距原点可能有很长的一段距离,遇到这种情况时可以在右侧选中物体,按esc下的“~”并选择查看所选就能找到模型了。调整到合适位置后我们右键选到设置原点,把原点设到3d游标处。点击右上角的小球可以正对视角。

之后我们可以在右上角选择材质预览,剔除模型多余的部分。如果不太确定可以打开地图软件看看学校范围。


先点选删掉多余的区域,然后进行调整,按住shift选择不会取消之前的选择







现实中学校大多数建筑往往不会正对东西或者南北方向,这时就要调整模型的方向,调整z轴旋转的同时按住alt应用即可对选中的物体进行修改。在这里也可以调整模型的比例,一般会提前讨论复原的比例尺,这里是1.5:1




转换成方块形式时模型过薄,可以通过添加实体化修改器改善,厚度可以转换成方块后视效果修改。修改完成后记得应用修改器。

选中模型,先使用bakelab烘焙材质,点击blockblender的Bake 1k Texture自动生成配置,然后再更改宽高.这里750m*750m,长宽设置为4096。

点击Turn Selected Into Blocks,转换成方块形式

在右侧选择相同名字的材质,最后应用修改器

最后全选合并,点击Export .schem导出原理图。导出可能会很慢,下图导出共用了1016秒,最后结果包含10791074个方块。

Comments NOTHING