我注意到一个奇怪的问题后,出口一个Collada网格描述文件在搅拌机。
让我们来看看上下文:我创建了一个非常简单的Blender concisting项目,在平面上应用一个简单的纹理映射。
下面是输出的屏幕:

以下是材料配置的图片:

如你所见,材料的扩散成分都等于0.7 ( 0.7科威特第纳尔)。
最后,材料上的纹理:

它被命名为“floor_COLOR.jpg”。
现在,首先是Wavefront OBJ加载程序(材料部分)的输出文件:
# Blender MTL File: 'bumped_plane.blend'
# Material Count: 1
newmtl PlaneMtl
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.70000 0.70000 0.70000 //Material diffuse components
Ks 0.889474 0.889474 0.889474
Ni 1.000000
d 1.000000
illum 2
map_Kd floor_COLOR.jpg正如您所看到的,所有的材料数据在纹理级别上都是受尊重的:我们有所有的弥漫性物质成分都等于0.7,而弥漫性映射称为“floor_COLOR.jpg”。
现在让我们看一看Collada出口商导出的文件中的一段代码,但是在第一次没有纹理的情况下(让我们关注弥漫性材料组件):
[...]
<diffuse>
<color sid="diffuse">0.7 0.7 0.7 1</color>
</diffuse>
[...]正如你所看到的,我正确地恢复了所有的漫射物质数据。
但是,如果我使用纹理映射导出我的文件,我会得到以下结果:
[...]
<image id="floor_COLOR_jpg" name="floor_COLOR_jpg">
<init_from>floor_COLOR.jpg</init_from>
</image>
[...]
<diffuse>
<texture texture="floor_COLOR_jpg-sampler" texcoord="UVMap"/>
</diffuse>
[...]好的,我恢复了路径和我的纹理类型,但是漫射材料成分在哪里??
对我来说,结果应该是:
<diffuse>
<texture texture="floor_COLOR_jpg-sampler" texcoord="UVMap"/>
<color sid="diffuse">0.7 0.7 0.7 1</color>
</diffuse>扩散phong阴影方程如下:
diffuse_color = gl_LightSource.diffuse * gl_FrontMaterial.diffuse * dot(NormalDir, LightDir)
diffuse_color *= fragment_color_from_diffuse_texture //Here 'floor_COLOR.jpg' (sampler2D)其中“gl_FrontMaterial.diffuse”指的是弥漫性物质成分(Kd)!
对于这一出口,我的印象应该是:
diffuse_color = gl_LightSource.diffuse * fragment_color_from_diffuse_texture * dot(NormalDir, LightDir)但这不对!
那么,为什么弥漫性物质成分消失了呢?!
提前谢谢你的帮助!
发布于 2014-10-21 02:28:39
看来出口商就是这样设计的。这可能与collada文件规范匹配,也可能不匹配。(我还没看过)
在搅拌机中,你可以指定一个图像纹理来影响漫射颜色,并控制图像和漫射颜色之间的混合量。当输出到collada时,任何数量的影响漫射颜色的图像总是作为漫射颜色的唯一来源输出。
您可能需要询问其中一个从事collada开发的开发人员是否有意这样做,或者如果您认为它是不正确的,则提交一个错误报告。
https://stackoverflow.com/questions/26475659
复制相似问题