人气 1022

[图文教程] Houdini程序化建筑 [复制链接]

liujiajia796 2022-4-5 21:56:25

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
随着近一两年来元宇宙概念大火,数字孪生行业算是踩在风口各种争城掠地,如火如荼。之前有幸做过城市级别的程序化生成,通过处理gis数据随机生成城市,个人认为这个其实是一个对数据的归纳统计过程,由于数据里一些必要信息的缺失,为了使结果尽可能准确所以就做了大量的数据统计猜测工作,比如对着地图归类建筑轮廓的各种特征和建筑类型的关系,然后把这些统计的信息带进算法里,最终结果可能不一定准确,但是最起码可以提供一种依据将大部分商业建筑和住宅建筑区分出来,保证随机出来的建筑有一定的规模感。戏称这就算是人工智能吧,毕竟是有多少人工,就有多少智能。
u6XsdLuwvAquf7w6.jpg

关于城市的程序化生成,我在之前的文章关于Houdini城市生成流程的效率优化中有讲过怎么进行有效优化,毕竟动辄就是几十万的数据量,所以有效提升运算效率还是很有必要的。不过文中提供的方法在最新版本的Houdini中优势已经不再明显,因为Extrude节点可以支持被Compile,这里就不再多说了。
<hr>由于项目需要,近期又对游戏中的建筑生成做了一些尝试,和之前的城市建模不同,为了能使美术同学的普遍参与并把控最终效果,所以游戏中大多采用拼装组件的方式来完成建筑生成。其实这也是我比较喜欢的方式,个人认为程序化的意义主要是用来高效处理大规模重复性工作的,所以不太喜欢做一些细微的调控,比如预留了很多参数最终就为了调节一个窗户,这样总感觉有些不痛不痒。
aznRybCSRXMNrGyB.jpg

一开始是尝试在固定的建筑框架下随机替换各种外置组件,这种方法比较保守,可以完全保留策划的建筑形态,变化只能靠外置件或者建筑主体材质,所以如果想要丰富度就需要大量的外置组件及各种变体。
h3u8dlu88wo864Dg.jpg

REe5B7DLVjFFRAVs.jpg

由于这种方法还是有一定的局限性,比如建筑的形态比较单一,比如美术同学还需要做大量模板化的工作,于是尝试了另一种自由度比较高的方法,完全由基础模块进行拼装。需要注意的是模块资产的命名需要有个统一规范,这一点对之后的调用至关重要。
rU3wHFB6wPFbuPdu.jpg

这种方法的大致思路是用一些box来表示建筑形态,为生成提供一种依据,再将盒子立面替换成建筑立面,可以把建筑立面资产理解成贴图,替换过程更像是在给盒子表面计算UV,算好以后将贴图往上贴就行。
Irje5ZeOaqQBL1PP.jpg

为了方便处理,先将每个box的高度和位置进行标准化,所谓标准化就是将每个box的高度调整成资产高度的数倍;然后再将每个box的底面轮廓提取出来,求出互相穿插box的底边交点并将线段打断,然后就可以对每条边匹配合适的立面资产了。在这个测试中我所使用的资产除了高度需要统一以外,宽度尺寸并没有做严格处理,将资产批量导入后计算它们的boundingbox大小并将所有的数据存到一个字典里,然后就可以根据线段长度匹配最优的备选资产。
a6Z186688768N1Fe.jpg

上述过程中求出交点并打断底边线段,是为了避免在穿插的地方覆盖成窗户,而且将底边处理成离散的线段还有一个好处就是可以很方便的去除内部不可见的资产,这样处理也增加了整个系统的容错性。
t4D7KCEda4FFEeDK.jpg

tCsej1JlTkStxXss.jpg

有了前面的结果,接下来的匹配工作就比较简单了,我的方法是先根据每条线段长度找到最合适的立面资产,为了使结果合理一些,还需要简单区分一下正侧背面,分别匹配相应的资产,第一次匹配完成后,根据线段剩余长度再次匹配,直到再无合适资源,这时候就可以用墙体立面来填补空缺,由于墙体立面拉伸缩放并无大碍,所以可以修改其尺寸以适配空隙大小。
KL449FUf6cF0FqFB.jpg

到这里建筑拼装的大概思路基本就讲的差不多了,这只是一个简单的测试,而且资源数量较少,实际项目中资产会比这个复杂的多,数量也庞大的多,不过万变不离其宗,无非就是把合适的资源摆到合适的位置上去,资源类别越多要添加的规则就越多,想想好像也没有什么别的花头,接下来就在这个基础上再做一些具有一定规模的比较复杂的尝试吧。
<hr>更新一波,原因是近期尝试了街区布局的生成,主要是先随机得到一定规模的box,然后再使用上述方法完成建筑生成,得顺便感谢一下我的同事大佬提供的测试模型:
K7RbwYBn17y7mAKz.jpg

然后就好像没什么可说的了,直接贴几张图吧:
xMj5vM2vLZopAAm2.jpg

sD6Zba25v6d5e88B.jpg

NFIgfb2bRLtSF0OZ.jpg

R2ixiG2fv2LB5uID.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-20 14:31 , Processed in 0.076139 second(s), 26 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.