首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Collada出口商从Blender导出文件时的奇怪行为

使用Collada出口商从Blender导出文件时的奇怪行为
EN

Stack Overflow用户
提问于 2014-10-20 22:01:15
回答 1查看 501关注 0票数 0

我注意到一个奇怪的问题后,出口一个Collada网格描述文件在搅拌机。

让我们来看看上下文:我创建了一个非常简单的Blender concisting项目,在平面上应用一个简单的纹理映射。

下面是输出的屏幕:

以下是材料配置的图片:

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

最后,材料上的纹理:

它被命名为“floor_COLOR.jpg”。

现在,首先是Wavefront OBJ加载程序(材料部分)的输出文件:

代码语言:javascript
复制
# 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出口商导出的文件中的一段代码,但是在第一次没有纹理的情况下(让我们关注弥漫性材料组件):

代码语言:javascript
复制
[...]

<diffuse>
  <color sid="diffuse">0.7 0.7 0.7 1</color>
</diffuse>

[...]

正如你所看到的,我正确地恢复了所有的漫射物质数据。

但是,如果我使用纹理映射导出我的文件,我会得到以下结果:

代码语言:javascript
复制
[...]

<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>

[...]

好的,我恢复了路径和我的纹理类型,但是漫射材料成分在哪里??

对我来说,结果应该是:

代码语言:javascript
复制
<diffuse>
 <texture texture="floor_COLOR_jpg-sampler" texcoord="UVMap"/>
 <color sid="diffuse">0.7 0.7 0.7 1</color>
</diffuse>

扩散phong阴影方程如下:

代码语言:javascript
复制
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)!

对于这一出口,我的印象应该是:

代码语言:javascript
复制
diffuse_color = gl_LightSource.diffuse * fragment_color_from_diffuse_texture * dot(NormalDir, LightDir)

但这不对!

那么,为什么弥漫性物质成分消失了呢?!

提前谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-21 02:28:39

看来出口商就是这样设计的。这可能与collada文件规范匹配,也可能不匹配。(我还没看过)

在搅拌机中,你可以指定一个图像纹理来影响漫射颜色,并控制图像和漫射颜色之间的混合量。当输出到collada时,任何数量的影响漫射颜色的图像总是作为漫射颜色的唯一来源输出。

您可能需要询问其中一个从事collada开发的开发人员是否有意这样做,或者如果您认为它是不正确的,则提交一个错误报告

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26475659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档