version \
attr wall=fileRandom(\attr wding=fileRandom(\lot-->
20% : fw1 30% : fw2 30% :fw3 else : fw4 else: NIL fw1--> extrude(12)
comp(f){side:s1|top:T} s1-->
setupProjection(0,scope.xy,3,scope.sy/4) projectUV(0) texture(wall) fw2-->
extrude(30)
comp(f){side:s2|top:T} s2-->
setupProjection(0,scope.xy,3,scope.sy/10) projectUV(0) texture(wall) fw3-->
extrude(45)
comp(f){side:s3|top:T} s3-->
setupProjection(0,scope.xy,3,scope.sy/15) projectUV(0) texture(wall) fw4-->
extrude(45)
comp(f){side:s4|top:T} s4-->
setupProjection(0,scope.xy,3,scope.sy/12) projectUV(0) texture(wall) T-->
setupProjection(0,scope.xy,scope.sx,scope.sy) projectUV(0) texture(wding)
统一定义的贴图(因为scope.sy/层数=3,这个数值是固定的,例如30米需要10层,就是scope.sy/10表示y方向上每层3米,而一般我们在X方向上都是3米,所以setupProjection(0,scope.xy,3,3)即所贴的图在XY方向上都是3*3,米,如果X方向上4米的话,则写成setupProjection(0,scope.xy,4,3)即所贴的图在XY方向上都是4*3,米,;平时我们所写 的setupProjection(0,scope.xy,scope.sx,scope.sy)表示的是一张贴图占整个面积)。
缺点有时贴图会只有半个窗户。(可以通过拉伸改变)
第一步:空白的viewport中右键点击:
点击apply之后出现如下所示:
在scene中关闭streetnetwork中的network,即可出现如图;
右侧定义规则如下:(我们用case建立条件如下)
version \
attr wall=fileRandom(\attr wding=fileRandom(\lot-->
case scope.sx>scope.sy: 20% :extrude(12) fw 30% :extrude(30) fw 30% :extrude(45) fw else:extrude(36) fw else: NIL fw-->
comp(f){side:S|top:T} S-->
setupProjection(0,scope.xy,3,3) projectUV(0) texture(wall) T-->
setupProjection(0,scope.xy,scope.sx,scope.sy) projectUV(0) texture(wding)