棱台制作的问题
分享
棱台制作的问题
1 问题描述
当采用roofHip(angle)规则进行棱台制作时,会发现当angle小于一定值时(45度),坡面被当作顶面来处理。其示例规则如下:
作用到地块的效果如下:
通过上图可以看到,侧面是安照top面的颜色进行赋值的。
2 解决方案
这个时候我们就可以通过索引值的方式来进行控制,在利用comp对对象进行拆分时不用关键字而用其内部的ID进行控制。其代码可以修改如下:
这个就是我们想要的结果。
棱台制作的问题
1 问题描述
当采用roofHip(angle)规则进行棱台制作时,会发现当angle小于一定值时(45度),坡面被当作顶面来处理。其示例规则如下:
Lot--> //对地块进行拉伸并拆分
extrude(50)
comp(f){top:TopFacade | side:SideFacae.}
TopFacade--> //利用roofHip规则制作棱台状屋顶
roofHip(30)
split(y){2:RoofColor | ~1:NIL}
RoofColor--> //对顶部的不同部分赋上不同的颜色
comp(f){top:color("#ff0000") X. | side:color("#00ff00") X. | all:NIL}
作用到地块的效果如下:
通过上图可以看到,侧面是安照top面的颜色进行赋值的。
2 解决方案
这个时候我们就可以通过索引值的方式来进行控制,在利用comp对对象进行拆分时不用关键字而用其内部的ID进行控制。其代码可以修改如下:
Lot--> //对地块进行拉伸并拆分
extrude(50)
comp(f){top:TopFacade | side:SideFacae. | all:NIL}
TopFacade--> //利用roofHip规则制作棱台状屋顶
roofHip(30)
split(y){2:comp(f){bottom:NIL | all:RoofColor} | ~1:NIL}
RoofColor--> //根据索引值的不同进行赋予不同的颜色
case comp.index==comp.total-1://顶面的索引
color("#00ff00")
else:
color("#ff0000")
这个就是我们想要的结果。
注意:索引值的大小与面创建先后顺序有关,顶部平面是在roofHip之后通过split()得到的,故其索引值最大。