资源描述:
《Cityengine教程建筑物贴纹理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[Cityengine教程]CityEngine建模示例教程6:BasicShapeGrammar之Part2:简单建筑物贴纹理(有图)本节内容开始对之前构建的建筑贴上纹理。使用的规则是在上一节的基础上进行修改。作者也是在学习中,内容中如有不对的地方,欢迎大家指正。1.开始贴纹理之前,先在规则的最前面对要使用的纹理进行定义。//texturesfrontdoor_tex="facade/shopdoor.tif"wall_tex="facade/brickwall2.tif"dirt_tex="facade/dirtmap.15.tif"roof_tex="roof
2、/roof.tif"由于要使用的窗户的纹理有9种不同的纹理,这些纹理存放在assets/façade文件夹中。在使用的时候,我们这里定义随机获取其中一个窗户纹理,这样窗户的纹理就是随机的了。randomWindowTexture=fileRandom("*facades/textures/window.*.tif")2.为建筑物的正面和侧面定义纹理Frontfacade-->setupProjection(0,scope.xy1.5,1,1)setupProjection(2,scope.xy,scope.sx,scope.sy)split(y){groundflo
3、or_height:Groundfloor
4、{~floor_height:Floor}*}Sidefacade-->setupProjection(0,scope.xy,1.5,1,1)setupProjection(2,scope.xy,scope.sx,scope.sy)split(y){groundfloor_height:Floor
5、{~floor_height:Floor}*}添加红色部分的代码,setupProjection()定义面在scope的xy平面使用color和dirt图片(由通道0和通道2代表)。在使用colormap时,纹理图片将以1.5m
6、×1m进行重复贴模。而使用dirtmap时,将会在scope的x、y方向平铺。其中setupProjection()命令有以下几种:setupProjection(uvSet,axesSelector,texWidth,texHeight)setupProjection(uvSet,axesSelector,texWidth,texHeight,widthOrigin,heightOrigin)setupProjection(uvSet,axesSelector,texWidth,texHeight,widthOrigin,heightOrigin,uwFactor
7、)(1)uvset代表的是不同的纹理图层:uv-set TextureLayer0 colormap1 bumpmap2 dirtmap3 specularmap4 opacitymap5 normalmap(2)axesSelector定义哪个轴分别代表u和v轴,可选的参数有:scope.xy,scope.xz,scope.yx,scope.yz,scope.zx,scope.zy以scope的轴定义world.xy,world.xz,world.yx,world.yz,world.zx,world.zy以world的轴定
8、义(3)texWidth和texHeight分别代表纹理的宽度和长度。如果值小于0,则认为可以对纹理做镜像显示,~符号表示值大小可以浮动,‘符号表示相对值。(4)widthOrigin和heightOrigin分别代表距离u方向和v方向的偏移(5)uwFactor设置w轴值相对于u轴的系数,默认为03.添加Roof规则Roof-->setupProjection(0,scope.xy,scope.sx,scope.sy)texture(roof_tex)projectUV(0)其中projectUV()命令含义如下:命令:projectUV(uvSet)指定纹理应用
9、于哪个uvset。4.为窗户和门指定纹理:Window-->s('1,'1,0.4)t(0,0,-0.25)texture(randomWindowTexture)i(window_asset)Door-->s('1,'1,0.1)t(0,0,-0.5)texture(frontdoor_tex)i("builtin:cube")5.定义Wall和SolidWall的纹理Wall-->color(wallColor)texture(wall_tex)set(material.dirtmap,dirt_tex)projectUV(0)projectUV(2)Sol