Houdini学习 —— 过程化生成城市集群学习笔记1(Building data generation部分)

这篇博客介绍了在学习使用Houdini进行过程化生成城市集群的时候的学习笔记。对应的资料来自于pluralsight,传送门

背景

入职鹅厂快3个月了,加班加到吐血……清明难得的假期,可以捡起以前一直想追的pluralsight的课程了。

顺便,之前一直是使用Houdini 15,到了16之后发现不少的接口改变了,也借这次机会整理一下……

总体思路

总体的思路可以分为building data generation,cluster simulation, point cloud generation和最终的skyline构建。

Building data generation

如果自顶向下看,如果要构建城市集群,那么首先要将整个的城市蓝图拆解为对应的街区,再将对应的街区映射到不同的城市聚簇,这些聚簇应该有直接的控制接口,从而可以过程化生成各不相同的建筑聚簇。

如果自底向上看,如果要构建建筑聚簇,那么首先要将外部的独立模型进行导入,此外还需要进行额外的模型处理,将其变成可以进行聚簇生成的资源。

此外,这里是需要针对特定的城市进行建筑集群的生成操作的,因此,还需要额外的城市蓝图数据。这里使用的是教程提供的资源,读者如果需要的话也可以去我的网盘下载:传送门

城市蓝图处理

先上对应的节点图:

Node Tree

里面有两个python节点,之后会放出代码。

这一套节点图的目的是将城市的原有模型数据转化为工程可用的数据,原有模型如下:

Original city plan

之后,需要针对原有的模型中的独立primitive进行拆分,这里通过assemble节点将每个primitive都命名为block_开头:

Assemble

接着手动选择CBD区域,并且将其放入group内进行标志:

CBD Chosen

这里有个需要注意的地方,是在houdini 16之前,group相关的所有操作都是在group节点内部完成的。到了16及以后,sidefx将group的众多功能拆成了多个独立的子节点。这里使用了group creategroup promote两个节点:
group promote

使用group promote节点的目的是将primitive相关的属性转化到point上,这样一来,就可以针对顶点进行区分操作了。

之后使用python脚本来给每个顶点添加属性,一个是自定义的block_type属性,这个属性是个字符串,如果是CBD商业区,那么这个属性为commercial,否则,这个属性为house。此外还有一个Cd属性,只是为了将商业区标红。python代码如下:

node = hou.pwd()
geo = node.geometry()

# Add code to modify contents of geo.
# Use drop down menu to select examples.

#create attributes on geometry
block_type = geo.addAttrib(hou.attribType.Point, "block_type", "")
point_color = geo.addAttrib(hou.attribType.Point, "Cd", (
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值