在Blender中導出Collada網格描述文件後,我注意到一個奇怪的問題。使用Collada導出器從Blender導出文件的奇怪行爲
讓我們來看看上下文:我已經在Blender上創建了一個非常簡單的項目,它可以在一個平面上應用簡單的紋理映射。
下面是一個輸出的屏幕:
這裏的材料構成的畫面:
正如你所看到的,材料發散分量都等於0.7(Kd 0.7 0.7 0.7)。
最後附着在材料質地:
它被命名爲 'floor_COLOR.jpg'。
現在,這裏從波前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)
但它不正確!
那麼,爲什麼擴散材料組件已經消失?
非常感謝您的幫助!
謝謝。我會提交一個錯誤報告。 – user1364743 2014-10-25 16:57:57