棱台制作的问题

0
分享 2015-03-24

棱台制作的问题

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()得到的,故其索引值最大。


0 个评论

要回复文章请先登录注册