纹理灯光材质关系

-------------------------------西昌.何雨锋 纹理灯光材质关系
材质(Material)是物体表面的粗糙程度、反光度、透明度等因素组合。
纹理(Texture)是物体表面的花纹、纹路等
灯光纹理(LightMaterial)是物体表面是否接受周围的灯光照射。

在mesh中有一个函数:LoadXFile("xfilename",bool loadtexture,bool lightmaterial)就说明了这个问题。
当材质读取关闭时,读出来的东西将没有任何花纹,但是如果这时候灯光材质是打开的,那么它将接受灯光。
当材质读取打开时而灯光纹理关闭时,那么就出现物体虽然显示材质,但是在任何灯光环境下都保持不变。
当材质读取打开,同时灯光纹理也打开时,那么没在光照耀下的将变成黑色,但是一进入灯光环境中,不但纹理显示了,而且也受灯光影响了,这才是最真实的。

同样的其他物体的函数为:ACTOR2->load("mdlfile","name",灯光材质允许,纹理读取允许)
land的灯光材质纹理选项似乎没有找到,而land本身是自允许灯光材质的。

在无光照情况下
一般的材质为:SetAmbient (r,g,b,a)    周围材质        环境材质,颜色将合成出来,在无灯光下显示原来的材质,但是似乎RGB在负值时才有效。
              Setdiffuse (r,g,b,透明度)    中部       这个材质透明度如果不是1的话,就会变得透明,记得要把渲染放在后面,否则透明就不真实了,其他几个参数对有纹理的物体完全无效。
              SetEmissive(r,g,b,a)         吸收       反光度,前者为颜色,最后一个参数为强度
              Setpower(float power)    强度     当强度很强时,就可以抵消很大程度的环境光,但是最后一个值超过1以后就不会有任何变化
              Specular                 反射   作用不明
 
             
再调节出了这些材质之后,怎样才能让这些材质与表面的纹理发生混合,产生出既有纹理又有材质的效果呢?
mesh->SetAdvancedBlending函数不知道有没有这作用。
mesh1->SetAdvancedBlending(tvtrue,(enum TrueVision3D::CONST_D3DBLEND) D3DBLEND_SRCALPHA,(enum TrueVision3D::CONST_D3DBLEND) D3DBLEND_INVSRCALPHA,-1,1);
                           好象没啥作用                                混合模式 

mesh1->SetBlendingMode(CONST_TV_BLENDINGMODE)
   极有用处,记得读出的那些火光啊树啊为什么老有边缘吗?就是因为没用混合模式,如果使用参数TV_BLEND_ADD,那么将边缘全无!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值