CityEngine创建不同类型的屋顶(二)

3.复杂坡顶

复杂坡顶无法通过CityEngine提供的单一函数就能完成,往往需要多个函数组合使用。更多的依赖于我们建筑屋顶的认识。

半四坡顶(half hip)




参考规则如下:

attr roofAngleGable=25  #屋顶下部坡度

attr roofAngleHip=25#顶部坡度

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")TopFacade |side:color("#ff0000")SideFacade. |all:NIL}

 

TopFacade-->

    roofGable(roofAngleGable)  

    split(y){ '0.5: comp(f){bottom: NIL | horizontal:RoofHip |aslant:FlatRoof_Tex. | all:color("#00ff00")RoofSide. }}

 

RoofHip-->

    roofHip(roofAngleHip)

    FlatRoof_Tex.


歇山顶

歇山顶是我国古代建筑屋顶样式的一种。

参考规则如下:

attr roofAngleHip=30#屋顶下部坡度

attr roofAngleGable=30  #屋顶上部坡度

 

attr overHang=0.4#延伸出来的长度

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")TopFacade |side:color("#ff0000")SideFacade. | all:NIL}

 

TopFacade-->

    roofHip(roofAngleHip,overHang)

    split(y){ '0.5: comp(f){bottom: NIL | horizontal:RoofGable|all:FlatRoof_Tex. } }

   

RoofGable-->

    roofGable(roofAngleGable)

    comp(f){bottom:NIL | aslant:FlatRoof_Tex. | side:color("#00ff00")RoofSide.}


复斜屋顶



参考规则如下:

attr roofAngleGable=40  #屋顶下部坡度

attr roofAngleGable02=25#顶部坡度

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")TopFacade |side:color("#ff0000")SideFacade. |all:NIL}

 

TopFacade-->

    roofGable(roofAngleGable)  

    split(y){ '0.5: comp(f){bottom: NIL | horizontal:RoofGable |aslant:FlatRoof_Tex. | all:color("#00ff00")RoofSide. }}

 

RoofGable-->

    roofGable(roofAngleGable02)

    comp(f){bottom: NIL |aslant: FlatRoof_Tex. | all: color( "#00ff00") RoofSide. }

双重斜坡屋顶



参考规则如下:

attrroofAngleHip=40 #屋顶下部坡度

attrroofAngleHip02=25   #顶部坡度

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")TopFacade | side:color("#ff0000")SideFacade. | all:NIL}

 

TopFacade-->

    roofHip(roofAngleHip)

    split(y){ scope.sy*0.3:comp(f){ bottom:NIL |horizontal: RoofHip | all:FlatRoof_Tex. } }  

 

RoofHip-->

    roofHip(roofAngleHip02)

    FlatRoof_Tex.

拱顶



参考规则如下:

attr curvedAngleResolution=15#相邻顶面的坡度差

@Hidden

attr ArcNum01=90/curvedAngleResolution-1

@Hidden

attr calcSegmentHt(ArcNum)= 3* (cos(ArcNum*curvedAngleResolution) - cos((ArcNum+1)*curvedAngleResolution))

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")VaultRoof(ArcNum01) |side:color("#ff0000")SideFacade. |all:NIL}

 

VaultRoof(n)-->

    case n> 0:

       roofGable(n*curvedAngleResolution,0,0,false,0)

       split(y){ (calcSegmentHt(n)):comp(f){bottom:NIL | horizontal:  VaultRoof(n-1)  | aslant:FlatRoof_Tex. |all:color("#00ff00")RoofSide.}}

    else:

       comp(f){bottom: NIL |  all: FlatRoof_Tex. }

圆屋顶




参考规则如下:

attr curvedAngleResolution=15#相邻顶面的坡度差

@Hidden

attr ArcNum01=90/curvedAngleResolution-1

@Hidden

attr calcSegmentHt(ArcNum)= 3* (cos(ArcNum*curvedAngleResolution) - cos((ArcNum+1)*curvedAngleResolution))

 

Lot-->

    extrude(20)

    comp(f){top:color("#0000ff")DomeRoof(ArcNum01) |side:color("#ff0000")SideFacade. |all:NIL}

 

DomeRoof(n)-->

    case n> 0:

       roofHip(n*curvedAngleResolution)

       split(y){ (calcSegmentHt(n)):comp(f){ bottom:NIL |horizontal: DomeRoof(n-1) |all:FlatRoof_Tex.} }

    else:

         comp(f){bottom: NIL | all: FlatRoof_Tex.}

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值