本篇blog主要记录一下使用houdini开发程序化建筑的思路与流程。

首先,houdini制作程序化建筑的基本原理是:预先制作一些建筑的模块和零件,然后自定义一个组合的规律或形式,最后让houdini自动地拼接出一个完整的建筑出来。

所以前期的核心工作就是——定义、规划、创建建筑模块。

一、地面墙面模块规划

首先我们考虑最基础的建筑模块——地面配墙面。这种模块一般由1块地面+N块墙面组合而成(N∈[0,4])。

现在我们来枚举所有的情况:①只有地面;②地面+一个墙面;③地面+两个相对的墙面;④地面+两个相邻的墙面;⑤地面+三个墙面。

这里我们可以定义一个csv表格,来收纳所有的组合情况:

wall指的是模块名称,xb指的是有x块墙面,axbxc指的是尺寸是a*b*c(其中b是y轴 即竖直向上的轴),opp和adj分别描述相对和相邻,最后的01指的是变体编号。

当然,我们现在的模块叫做“地面配墙面”,其实还可以进一步细分成单独的墙面模块 和单独的地面模块。接下来我们在houdini中定义这些模块,首先创建一个Geo节点,在里面分别装载墙面和地板的subnet: