export - 使用Collada导出程序从混合器导出文件的行为奇怪

  显示原文与译文双语对照的内容

我在Blender中导出Collada网格描述文件后发现一个奇怪的问题。

让我们检查一下上下文:我在 Blender concisting上创建了一个非常简单的项目,在平面上应用简单的纹理贴图。

下面是输出的屏幕:

enter image description here

以下是材质配置的图片:

enter image description here

可以看到,材质漫反射组件都等于 0.7 ( Kd 0.7 0.7 0.7 ) 。

最后,附着到材质的纹理:

enter image description here

它叫'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 。漫反射'引用漫反射材质组件( Kd ) !

这个出口我觉得这个方程式应该是这样的:


diffuse_color = gl_LightSource.diffuse * fragment_color_from_diffuse_texture * dot(NormalDir, LightDir)

但这是不正确的 !

那么,为什么漫射材料组件消失了? !

感谢你的帮助。

时间: 作者:

导出器似乎是按照如下方式设计的。 这可能与 collada文件规范匹配,也可能不匹配。 ( 我没有读)

在混合器中,可以指定图像纹理来影响漫反射颜色,并控制图像与漫反射颜色之间的混合量。 导出到of时,影响任意金额的漫反射颜色的图像始终作为漫反射颜色的唯一来源导出。

如果你认为是有意的,那么你可能需要向collada开发人员请求work工作,如果你认为这是错误的,那么请提交一个 Bug 报告。

...