浏览代码

[pyassimp] Handle diffuse/ambient values stored as vec3 instead of vec4

Séverin Lemaignan 12 年之前
父节点
当前提交
024bd4c470
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      port/PyAssimp/scripts/3d_viewer.py

+ 7 - 2
port/PyAssimp/scripts/3d_viewer.py

@@ -291,8 +291,13 @@ class PyAssimp3DViewer:
 
 
             stride = 24 # 6 * 4 bytes
             stride = 24 # 6 * 4 bytes
 
 
-            glUniform4f( shader.Material_diffuse, *mesh.material.properties["diffuse"] )
-            glUniform4f( shader.Material_ambient, *mesh.material.properties["ambient"] )
+            diffuse = mesh.material.properties["diffuse"]
+            if len(diffuse) == 3: diffuse.append(1.0)
+            ambient = mesh.material.properties["ambient"]
+            if len(ambient) == 3: ambient.append(1.0)
+
+            glUniform4f( shader.Material_diffuse, *diffuse )
+            glUniform4f( shader.Material_ambient, *ambient )
 
 
             vbo = mesh.gl["vbo"]
             vbo = mesh.gl["vbo"]
             vbo.bind()
             vbo.bind()