今天,建筑小蝈蝈来教大家竖向随机立面建模啦,大家拿起小本本快记下来
以下图为例
那咱就先来分析一下这张图吧
从这张图上可以看到
这个立面是结合结构一起做的
柱子是上下一一对应的
从底层直接到顶上
而格栅则是随机的
最后做出的成果
嗯,那下面咱就来看具体的操作吧
咱们可以先理理大概的思路:
先定出一根柱子
然后阵列得到其他的柱子
再在柱子间等分得到格栅
再挑选出相应的格栅以生成随机效果
其他另外的细节我们在操作中再加入
一、定出初始的柱子
说是柱子
其实我们这里生成的是曲线
因为后面生成方柱是比较简单快速的
这里我将建筑总高度拆分成层高和层数两个因素
这样便于咱们后期调节
后面用到会再说
定出的这第一根直线
很重要
二、阵列出其他的柱子
直接给个等差数列
移动第一根柱子
定出柱子的数目和间距
当然如果定的是总的开间
然后再分开间数的话
可以用range
三、格栅的制作
这里首先咱们可以明确的一点是
格栅是在柱子之间的
而柱子是基于咱们的等差数列移动生成的
所以我们现在要在柱子中间插入格栅的话
就以这个等差数列相邻两个数建立区间
用range在这区间中再建立等差数列
就是为了生成这种效果
绿色的是柱子
红色的是格栅
但是这里其实有另一个问题
上图没显示出来
就是range出来的数据
前一列表的最后一个数
和后一个列表的第一个数
这样子会出现一些咱们不想要的情况
比如格栅会和柱子重合在一起
这里将其首尾两个数删除掉就好
这里cull index我会拍平一下
让后面的数据结构看起来更加简单一些
我试过
在这里拍不拍平对最后的效果没影响
同样是对第一根曲线进行移动
得到这样一排曲线
我们现在只要从这些曲线中提取sub curve
然后在这sub curve中随机挑选一些生成格栅
就产生了随机的效果
ok继续操作
先等分这些曲线
等分的数值就是之前设置好的建筑层数
提取等分点的 t 值组成区间
把上一步我们得到的格栅基准线等分成一根根sub curve
这里我之所以再接个cull index是因为要让一层没有格栅
bake出来是一根根子线段
现在我们就要从这一堆sub curve中
筛选出要成格栅的sub curve
筛选就用dispatch
dispatch是P端的布尔是 0 为false
0以外的数为 ture
那么这里就要给一组有0和1组成的数
这里用random运算器
在0到1的区间随机取值(random的R端默认是0到1)
将取得的值四舍五入
就可以得到一组由 0和1 组成的数
不过这里又有个问题
0和1的值基本是五五开
那我想1多一些怎么办?
这个问题先放着
后面用到咱们再说
dispatch的L端接入之前的sub curve
将会成格栅的曲线筛选出来
调节seed值可以取得不同的随机效果
立面竖向的格栅基准线搞定
下面就是简单的挤出成体了
在这之前我们先要将横向的横档给做出来
取之前做好的柱子的首尾两根
按层数等分
然后连线
搞定
下面就是成体
先是柱子格栅
然后横档
如果最底下一根不需要
可以用cull index剔除
所以这时候问题就来了
我想要格栅多一些怎么办
那就得回到之前我们之前提出疑问的地方
得让1多一些
问题放在这里
就是让random中产生的数大于0.5的数更多一些
在random和四舍五入之间
接个graph mapper
右键设置bezier曲线
调节曲线即可调节格栅数的多少
做的过程中很多时候
往往显示把效果做出来
后面需要实现怎样的操控效果
再加相应的程序就好了
到这里这个案例差不多就结束了
以后不用再一个个阵列出格栅再自己挑着删除了
现在直接由程序生成
格栅的截面尺寸也方便后期调节
感谢 建筑小蝈蝈 授权分享
欢迎关注他们的微信公众号
微信ID:ArchGG