首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

请问dx的灯光和材质的计算有关问题

2014-01-25 来源:读书人网 【读书人网(Reader8.cn):综合教育门户网站】
请教dx的灯光和材质的计算问题。我是业余写写3d程序。目前可以设置各种灯光和材质,在物体上形成光照效果。但

请教dx的灯光和材质的计算问题。
我是业余写写3d程序。目前可以设置各种灯光和材质,在物体上形成光照效果。

但目前我设置的灯光和材质,最终的显示效果不太好看。我的问题是:

1.我场景中设置一个环境光,一个平行光,平行光有漫射光和环境光的属性。材质有漫射光和环境光的属性。
那么最终物体表面的颜色是怎样计算的?是所有光照的漫射光和材质的漫射光属性计算并求和,再加上所有环境光和材质的环境光属性的计算结果?我把透明度(a值)设置成0或1,结果没什么变化。

2.诸多光线和材质的属性需要设置。怎么才能知道如何设置能模拟出比较真实的效果?比如有没有什么材质编辑器的工具?我在baidu搜了一下,都是3dmax的东西。可我不想装个那么大的软件。有什么小巧的工具没有?

非常感谢。
[解决办法]
你用的是d3d固定管线吧,现在很少有人再去用固定管线了。所谓材质不过是一个抽象的概念,总结起来,就是一个shader(d3d中你可以理解为hlsl语言编出来的GPU运行的程序片段)加上一组用于这个shader的具体参数值。现在基本所有渲染引擎都会自己写一套材质系统,而不去用d3d的固定管线。所以你搜材质,搜到的肯定都是用于编辑各个渲染引擎材质数据的工具。
[解决办法]
UDK里的材质编辑器,基于节点的,应该比较适合你,自动生成shader的,不用你再写shader了
[解决办法]
你的问题书上有解答,可以参考
http://download.csdn.net/user/ljb1672
[解决办法]
1、 计算方法: Out.Color = ambientColor * materialAmbient + 
               diffuseColor * diff * materialDiffuse + 
               specularColor * specu * materialSpecular; (Ambient环境光/材质 diffuse漫反射光/材质 specular镜面反射也就是高光)
环境光部分直接计算  漫反射光部分diff为发现与光方向向量的点积
高光 specu 比较麻烦 公式是  R = 2 * (N.L) * N - L  specu = Pow( DOT(R,Eye), n) R为反射光方向 Eye为眼睛到顶点方向 原理可以百度.

2。 正如芳草天所说的 用SHADER可以增加真实感 加上纹理贴图材质 甚至用凹凸贴图等手段都可增加真实感