OGRE手册--脚本<texture_unit>
------------摘自<OGRE中文帮助手册>
纹理单元('texture_unit')
纹理texture
设置这一层要使用的静态纹理图像的名字。
格式: texture <texturename> [<type>] [unlimited | numMipMaps] [alpha] [<PixelFormat>]
示例: texture funkywall.jpg
这个设置与anim_texture属性是互斥的。注意纹理文件不能包含空格。
type 默认值是'2d'<1d,2d,3d,cubic>
'numMipMaps'允许你指定这个纹理的mipmap数量
活动纹理anim_texture
指的是有多幅画面
格式1 (短格式): anim_texture <base_name> <num_frames> <duration>
示例: anim_texture flame.jpg 5 2.5
上面格式1的例子建立了一个有5幅画面组成的活动纹理层,分别被命名为flame_0.jpg,flame_1.jpg,
flame_2.jpg等等,长度2.5秒(2fps)。如果延时(duration)设置为0,那么不发生自动转换,需要在代码
中手动改变。
格式2 (长格式): anim_texture <frame1> <frame2> ... <duration>
示例: anim_texture flamestart.jpg flamemore.png flameagain.jpg moreflame.jpg lastflame.tga 2.5
上面格式2的例子也建立了与格式1的例子一样延时的动画,只不过这次是由5个单独命名的图像文件组成的。
第一种格式更简单,之所以给出第二种格式是为了解决图像不能统一命名的情况。
立方体纹理cubic_texture
格式1 (短格式): cubic_texture <base_name> <combinedUVW|separateUV>
格式1这种格式的基础名如'skybox.jpg',系统会希望你提供的各面图像名为skybox_fr.jpg,skybox_bk.jpg
,skybox_up.jpg,skybox_dn.jpg,skybox_lf.jpg,and skybox_rt.jpg。
格式2 (长格式): cubic_texture <front> <back> <left> <right> <up> <down> separateUV
格式2这种格式,每一面都显式地指定,以防如果没办法按一致的标准命名。你可以使用带separateUV参数的
格式2,因为combinedUVW需要一个单独的纹理名赋值给复合3D纹理(见下面)。
两种格式中,最后一个参数的意思如下:
combinedUVW
6个纹理被合在一个立方体纹理映射中,使用带U,V,W元素的3D纹理坐标。对于反射映射是必要的,因为你永
远不知道你将要需要的是哪一个面。需要注意的是,不是所有的显卡都支持立方体环境映射。
separateUV
6个纹理被分开来保存,但是被一个纹理层引用。在任一时刻只有一个纹理处于活动状态(实际上,它们被作
为6幅画面保存起来),所以使用2D UV坐标。这种类型适用于天空盒(skyboxes)因为每次只有一面被渲染,
而且在更老的显卡上也有硬件支持。
纹理坐标集tex_coord_set
设置这个纹理层要使用的纹理坐标集。一个网格可以定义多个纹理坐标集,此属性设置这个材质使用哪一个坐
标集。
格式: tex_coord_set <set_num>
示例: tex_coord_set 2
默认: tex_coord_set 0
纹理寻址模式tex_address_mode
定义在这个纹理层的纹理坐标超过1.0时发生的事情。你可以选择简单格式,一次对全部3个纹理坐标指定寻址
模式,或者扩展的格式,使用三分之二的参数每个纹理坐标指定不同的模式。
简单格式: tex_address_mode <uvw_mode>
扩展格式: tex_address_mode <u_mode> <v_mode> [<w_mode>]
wrap
任何超过1.0的值都被置为0.0。纹理被重复一次。
clamp
超过1.0的值被固定为1.0。超过1.0的其它地方的纹理,沿用最后像素的纹理。用于当叠加过滤时,需要从0.0
到1.0精确覆盖且没有模糊边界的纹理。
mirror
每到边界处纹理翻转,意思就是每个1.0 u或者v处纹理被镜像翻转。
border
超出[0.0, 1.0]范围的值都被置为边界色,也可以设置tex_border_colour属性。
默认: tex_address_mode wrap
过滤filtering
设置当放大或缩小纹理时,使用的纹理过滤形式。这个属性有两种格式,简单格式就是指定预先定义好的过滤
选项集的名字;复杂格式,就要你自己分别设定缩小,放大,mip过滤。
简单格式
格式: filtering <none|bilinear|trilinear|anisotropic>
默认: filtering bilinear
这种格式,你只需要提供如下的一个参数:
none
不使用过滤或mipmapping缩放。这相当于复杂格式的'filtering point point none'。
bilinear
当放大或缩小一个纹理时,使用2x2 box过滤,从列表中挑出一个mipmap但是在mipmaps的各级之间不使用过滤
。这相当于复杂格式的'filtering linear linear point'。
trilinear
当放大或缩小一个纹理时,使用2x2 box过滤,最近的2个mipmaps被一起过滤。这相当于复杂格式
的'filtering linear linear linear'。
anisotropic
除了过滤算法考虑了与镜头相关的三角形坡面而不是一味地简单做一个2x2像素过滤之外,这个属性
与'trilinear'相同。这使得三角形的锐角看起来较少失真。相当于复杂格式的'filtering anisotropic
anisotropic linear'。注意,要想这个属性有所不同,你还必须设置max_anisotropy属性。
复杂格式
Format: filtering <minification> <magnification> <mip>
Default: filtering linear linear point
这个格式给你对于缩小,放大,和mip过滤完全的控制权。参数如下:
none
无——唯一的一个'mip'过滤可用的参数,此参数完全关闭了mipmapping。对于缩小和放大的最低设置
是'point'。
point
挑选缩小和放大模式最近的像素。在mip模式中,此选项挑选出最符合mipmap要求的。
linear
围绕最近像素点过滤出一个2x2大小的像素块。在'mip'过滤中,这可以在mipmap各层级之间衔接。
anisotropic
仅针对缩小和放大模式可用,对于三角形的摄像机空间斜坡过滤补偿。注意,要想这个属性有所不同,还必须
设置max_anisotropy属性。
colour_op
混合这个纹理层与它下面的一层(或者如果它是第一层的话,如何将它与光照效果混合)。
格式: colour_op <replace|add|modulate|alpha_blend>
默认: colour_op modulate
colour_op_ex
colour_op属性的扩展版,可以应用更加复杂的混合操作,但受限于硬件支持的纹理单元数
格式: colour_op_ex <operation> <source1> <source2> [<manual_factor>] [<manual_colour1>]
[<manual_colour2>]
示例: colour_op_ex add_signed src_manual src_current 0.5
默认: none (colour_op modulate)
colour_op_multipass_fallback
在如果使用了colour_op_ex属性且没有足够的多纹理硬件支持时,设置这个纹理层的多路后撤操作。
格式: colour_op_multipass_fallback <src_factor> <dest_factor>
示例: colour_op_mulitpass_fallback one one_minus_dest_alpha
scroll
给纹理设置一个固定的偏移量。
格式: scroll <x> <y>
scroll_anim
给纹理层设置一个动态的滚动
格式: scroll_anim <xspeed> <yspeed>
rotate
将一个纹理旋转一个固定的角度
格式: rotate <angle>
rotate_anim
为这一层创建动态旋转效果(固定速度)
格式: rotate_anim <revs_per_second>
scale
格式: scale <x_scale> <y_scale>
wave_xform
建立一个基于波功能的动态改变形式。用于更高级的纹理层改变效果。你可以在一个纹理层中随意添加多个此
属性的实例
格式: wave_xform <xform_type> <wave_type> <base> <frequency> <phase> <amplitude>
示例: wave_xform scale_x sine 1.0 0.2 0.0 5.0
transform
这个属性允许你为纹理单元指定一个4x4变换矩阵,因而取代上述的滚动、旋转、比例属性。
格式: transform m00 m01 m02 m03 m10 m11 m12 m13 m20 m21 m22 m23 m30 m31 m32 m33
上面4x4矩阵中的数值序号为m<row><col>,前面一个为行号,后面一个为列号。