[程式] 工作流程研究:快速世界建构

楼主: dklassic (DK)   2021-03-29 17:02:07
虽然分类在程式好像不算是很正确。
不过相较其他分类应该比较接近程式,就用这个分类了(望
一、前言
开放世界应该对于很多人来说是某种梦想与浪漫。然而小团队在资源上不太可能器及多大
的规模,自动地图产生机制的设计又可能太难。
今年二月初因为从手上的专案暂时休息,也算当作一个练习,我决定摸索看看有什么流程
可以让广大世界的制作能够简单达成,用最低限度的资源制作某种大规模场景。
虽然这篇里面用的工具是 Unity,但是纯粹工具组跟流程应该是可以适用于任何引擎。
二、目标
在这边要为目标“使用最低资源制作大规模场景”做更明确的定义,以了解这项实验的可
用之处与限制:
1.最低资源
不花费任何金钱,甚至以不撰写任何程式为目标,意即近乎没有技术知识也能处理。
2.大规模场景
能近乎无人工的情况下制作某种程度上可用的场景,开放世界关卡不是唯一目标。
所以某方面来说这个流程并不会让你闭着眼睛就做出一款 3A 大作,但有可能作为有效的
基础,帮助你进行地图的建设或者是一个大规模背景的制作。
同时因为主要是流程上的探讨,基本上不会花时间详述实作细节,但是所有提到的工具应
该都有不少网络上提供的教学,只是没有人整并起来整个流程。
三、流程
Open Street Map 是一个由社群之力建构的完全开放任何用途的地图,这个流程基本上奠
基于 Open Street Map 的资料。由于 OSM 也有 3D 建筑形状的标记,所以就代表我们可
以直接从中取出建筑跟道路的资讯。
1.建筑
建筑资讯可以借由 Blender 的工具 Blender-GIS[1] 取得。
可以取得的模型大约像这样:https://imgur.com/qAebT6J
基本大多是纯粹的建筑描框,甚至有些因为没有高度标示而只能随机产生。
使用 Blender-OSM[2] 的话能选择建筑的屋顶形式:https://imgur.com/f6dt7az
如果进一步使用的是 Blender-OSM 付费版[3] 的话,这个版本作者有额外附上建筑材质:
https://imgur.com/sKHFBvn
我则因为想要对于建筑的表现有更多的控制权,我选择另外写了一个 Unity HDRP/URP 用
的可控简易建筑外观 Shader[4]:
https://imgur.com/VjeNatZ
https://imgur.com/bYxBsOp
应该还算骗(日夜循环影片)
https://imgur.com/kPLgbdY
2.道路
Blender-GIS 跟 Blender-OSM 同样都可以取得道路资讯,差异是 Blender-GIS 只会取得
曲线,Blender-OSM 会直接给出一个 Mesh,因此先用这边延续下去。
从 Blender-OSM 可以取得的 Mesh 资讯大约像这样:https://imgur.com/Nic7wW1
路面资讯会另外根据道路用途标示出来,因此可以多准备几种不同的材质分开贴上。这边
再根据 Roman Papush 的道路 Shader 教学[5]制作可以轻易修改的程序产生材质。
https://imgur.com/7akfI8X
https://imgur.com/ZJbUyka
四、成果
https://imgur.com/sd7OSYb
https://imgur.com/t2eAWgN
https://imgur.com/iUyqNi5
https://imgur.com/k8qh7dX
https://imgur.com/uLmufX6(天空是根据 @jannik_boysen 的教学[6]制作的)
这个实验结果并没有办法瞬间完成“某某城市”的 GTA,但作为一个基础原型应该是相当
充足的。而如果是作为背景,甚至应该已经是完全可用的程度。
五、限制
当然毕竟作为一个完全土炮的流程,限制当然也很多。以下会详述各项待处理的限制:
1.路口交界
由于 OSM 拉下来的资料只有路,因此不会特别处理掉路与路之间交叠的区域。
2.人行道
以城市来说这个做法还缺少最重要的人行道。可以尝试在 Blender 里面借由布林运算取得
,但是可能会因为路面几何的问题而无法有效取得。
3.地形
虽然像 Blender-GIS 可以拉卫星地形资料,但因为精度只有 30 公尺所以会造成奇怪的起
伏。因此如果要做为游戏空间,可能不适合选择地形起伏大的地区。
4.资料标示不全
由于 OSM 是社群贡献,因此完整度、正确性会根据地区有极大的差异。
5.OSM 解析不全
由于 OSM 有一些复杂的 Relation 标记,标记物件之间的关系,如果没有解析正确的话可
能无法有效取得所有有用的资讯。
例如下图是 Blender-GIS 取得的新宿都厅资料:
https://imgur.com/3mteLBS
但是实际上 OSM 标记的新宿都厅资料更加完整:
https://imgur.com/V4zdDdY
六、结语
随着政府公开资料越来越多、以及各地社群的贡献之下,显然让 OSM 的完整度对于游戏、
3D 创作等带来不少帮助。
其中资料甚至也包含有行人穿越道等项目,如果随时间更加完整,想必可以带来更大的帮
助。现阶段要能够进一步使用这些资料产生有效的游戏关卡还需要更多的努力,不过至少
作为一个乍看之下很精致的场景似乎已经能做到了。
也期待是不是有人能借由我分享的流程作出精彩的作品:)
七、参考资源
[1]Blender-GIS-https://github.com/domlysz/BlenderGIS
[2]Blender-OSM(免费版)-https://gumroad.com/l/blender-osm
[3]Blender-OSM(付费版)-https://gumroad.com/l/blosm
[4]我的客制建筑 Shader Graph-
https://github.com/dklassic/Unity-Simple-Building-Triplanar-Shader
内部空间 Cubemap 对应是根据这个教学做的:https://youtu.be/dUjNoIxQXAA
[5]Roman Papush 的道路 Shader 教学-https://youtu.be/vhrIEcVSI5M
[6]@jannik_boysen 的教学-
https://medium.com/@jannik_boysen/procedural-skybox-shader-137f6b0cb77c
延伸手段-Houdini Game Dev Tool
Houdini 去年增加了一系列能够使用 OSM 资料做城市建构的工具,其中个人认为最大的亮
点是内建可以解析路口交界,产生更加自然的路面。有兴趣的可以尝试看看:
作者: allen2207153 (小王)   2021-03-30 10:10:00
作者: ccjjea (冰月)   2021-03-30 11:49:00
感谢分享 赞
作者: poshboy (游戏设计人,人设计游戏)   2021-03-31 20:21:00
看起来像是一篇研讨会paper形式的文章
楼主: dklassic (DK)   2021-03-31 21:03:00
没那么夸张啦 XD只是毕竟是要尝试描述工作流程所以想写得格式化一点
作者: kuku321 (halipapon)   2021-04-01 02:19:00
其实现在商业制作上来说 比起实作 事前准备这种pipeline的规划耗时越来越长 工具太多 但要针对目标效率化很难抓
作者: kingroy (手残总比脑残好)   2021-04-01 14:38:00
像日本有提供城市的DATA但还是要花时间加工,最近做一个市含准确的高度建筑物也花不少时间
作者: newhandfun (新手方)   2021-04-14 01:10:00
感谢分享
继续阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com