第一种利用CityEngine快速建模,模型文件osm从OpenStreetMap下载
地图下载链接:https://blog.csdn.net/dyxcome/article/details/83065426
屋顶规则连接
相关教程:简单易懂
/**
* File: random.cga
* Created: 20 May 2019 10:37:48 GMT
* Author: GAIVIA-LIZHONGYUAN
*/
version "2016.0"
@eange(20,100)
attr height =rand(3,100)
attr floor=6
attr wallside=0.5
attr winSide=3
Lot-->
extrude(height) Building
Building-->
comp(f) { top : Roof | side : wall }
Roof-->
// color(1,0,0)
setupProjection(0, scope.xy, '1, '1)
projectUV(0)
texture("images/1212.jpg")
wall-->
split(y,adjust) { ~floor : Floor }
//color(1,1,0)
Floor-->
split(x) { wallside : Wallside | {~winSide:Tile|wallside : Wallside}*}
setupProjection(0, scope.xy, '1, '1)
projectUV(0)
texture("images/u=1979198230,3799788659&fm=27&gp=0.jpg")
Tile-->
split(y) { wallside : Wallside | {~winSide:Window|wallside : Wallside}*}
Wallside-->
color("#694310")
Window-->
color(1,1,0)
//setupProjection(0, scope.xy, '1, '1)
//projectUV(0)
第二种快速建模参考以下链接
新建随机规则
/**
* File: height_autho.cga
* Created: 20 May 2019 11:23:37 GMT
* Author: GAIVIA-LIZHONGYUAN
*/
version "2012.1"
Lot-->
60%:color(1,0,0) Lot1
30%:color(0,1,0) Lotbansipo
else:color(0,0,1) Lotfushi
// height value
attr height=0
attr roofAngle=15#屋顶坡度
attr sideIndex=1 #坡向的起始边的索引值
Lot1-->
extrude(20)
comp(f){top:color("#0000ff")TopFacade1 |side:color("#ff0000")SideFacade. |all:NIL}
TopFacade1-->
roofShed(roofAngle,sideIndex)comp(f){top:FlatRoof_Tex. |side:color("#00ff00")RoofSide.}
//******************************************************
attr roofAngleGable=25 #屋顶下部坡度
attr roofAngleHip=25#顶部坡度
Lotbansipo-->
extrude(20)
comp(f){top:color("#0000ff")TopFacade2 |side:color("#ff0000")SideFacade. |all:NIL}
TopFacade2-->
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 roofAngleGable3=40 #屋顶下部坡度
attr roofAngleGable023=25#顶部坡度
Lotfushi-->
extrude(20)
comp(f){top:color("#0000ff")TopFacade |side:color("#ff0000")SideFacade. |all:NIL}
TopFacade-->
roofGable(roofAngleGable3)
split(y){ '0.5: comp(f){bottom: NIL | horizontal:RoofGable |aslant:FlatRoof_Tex. | all:color("#00ff00")RoofSide. }}
RoofGable-->
roofGable(roofAngleGable023)
comp(f){bottom:NIL |aslant:FlatRoof_Tex. | all:color("#00ff00")RoofSide. }