收藏 分销(赏)

Cityengine教程建筑物贴纹理.doc

上传人:仙人****88 文档编号:9457463 上传时间:2025-03-27 格式:DOC 页数:5 大小:282.50KB 下载积分:10 金币
下载 相关 举报
Cityengine教程建筑物贴纹理.doc_第1页
第1页 / 共5页
Cityengine教程建筑物贴纹理.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
[Cityengine教程] CityEngine建模示例教程6:Basic Shape Grammar之Part 2:简单建筑物贴纹理(有图) 本节内容开始对之前构建的建筑贴上纹理。使用的规则是在上一节的基础上进行修改。作者也是在学习中,内容中如有不对的地方,欢迎大家指正。 1. 开始贴纹理之前,先在规则的最前面对要使用的纹理进行定义。 // textures frontdoor_tex = "facade/shopdoor.tif" wall_tex = "facade/brickwall2.tif" dirt_tex = "facade/dirtmap.15.tif" roof_tex = "roof/roof.tif" 由于要使用的窗户的纹理有9种不同的纹理,这些纹理存放在assets/façade文件夹中。在使用的时候,我们这里定义随机获取其中一个窗户纹理,这样窗户的纹理就是随机的了。 randomWindowTexture = fileRandom("*facades/textures/window.*.tif") 2. 为建筑物的正面和侧面定义纹理 Frontfacade --> setupProjection(0, scope.xy 1.5, 1, 1) setupProjection(2, scope.xy, scope.sx, scope.sy) split(y){ groundfloor_height : Groundfloor | { ~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 | { ~floor_height: Floor }* } 添加红色部分的代码,setupProjection()定义面在scope的xy平面使用color和dirt图片(由通道0和通道2代表)。在使用color map时,纹理图片将以1.5m×1m进行重复贴模。而使用dirt map时,将会在scope的x、y方向平铺。 其中setupProjection()命令有以下几种: setupProjection(uvSet, axesSelector, texWidth, texHeight) setupProjection(uvSet, axesSelector, texWidth, texHeight, widthOrigin, heightOrigin) setupProjection(uvSet, axesSelector, texWidth, texHeight, widthOrigin, heightOrigin, uwFactor) (1)uvset代表的是不同的纹理图层: uv-set        Texture Layer 0        colormap 1        bumpmap 2        dirtmap 3        specularmap 4        opacitymap 5        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的轴定义 (3)texWidth和texHeight分别代表纹理的宽度和长度。如果值小于0,则认为可以对纹理做镜像显示,~符号表示值大小可以浮动,‘符号表示相对值。 (4)widthOrigin和heightOrigin分别代表距离u方向和v方向的偏移 (5)uwFactor设置w轴值相对于u轴的系数,默认为0 3. 添加Roof规则 Roof --> setupProjection(0, scope.xy, scope.sx, scope.sy) texture(roof_tex) projectUV(0) 其中projectUV()命令含义如下: 命令:projectUV(uvSet) 指定纹理应用于哪个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) SolidWall --> color(wallColor) s('1,'1,0.4) t(0,0,-0.4) texture(wall_tex) set(material.dirtmap, dirt_tex) i("builtin:cube:notex") projectUV(0) projectUV(2) 为Wall和SolidWall定义使用的纹理,使用set()命令定义在material.dirtmap属性,使用dirt_tex纹理。然后定义了将纹理贴在color和dirt通道。 set(attribute, bool value) set(attribute, float value) set(attribute, string value) set命令将一个值指定给当前shape的一个属性。属性分为两类,一种是builtin属性,就是内置属性,例如material的属性。另一种是在规则文件中生命的属性。 最终结果如
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服