应用纹理时 Collada 模型不渲染

Posted

技术标签:

【中文标题】应用纹理时 Collada 模型不渲染【英文标题】:Collada model does not render when applying a texture 【发布时间】:2014-12-10 11:03:10 【问题描述】:

当我尝试将纹理应用到我的.dae 模型时,它没有被渲染并且控制台显示这个错误:

    [.WebGLRenderingContext]GL ERROR :GL_INVALID_OPERATION : 
      glDrawElements: attempt to access out of range vertices in attribute 2

当我将以下代码添加到我的 collada loader 时会发生这种情况:

loader.load( 'models/walls.dae', function ( collada ) 
var colladaWalls = collada.scene.children[0]
colladaWalls.name = "walls";
var wallsTexture = new THREE.ImageUtils.loadTexture( 'textures/walls.jpg' );
wallsTexture.wrapS = wallsTexture.wrapT = THREE.RepeatWrapping; 
wallsTexture.repeat.set( 2, 2 );
//adding the line below cause the model to not be loaded
colladaWalls.material = new THREE.MeshPhongMaterial(  map: wallsTexture, side: THREE.DoubleSide  ); 
colladaWalls.material.needsUpdate = true;
colladaWalls.material.wireframe = false;
colladaWalls.position.set(0,-2,0);//x,z,y- if you think in blender dimensions ;)
colladaWalls.scale.set(2,2,2);
scene.add( colladaWalls ); 
 );

问题:为什么?

【问题讨论】:

【参考方案1】:

MeshPhongMaterial() 需要更多属性。尝试使用MeshBasicMaterial()

【讨论】:

不会改变任何东西。当我尝试使用 ThreeJS 将材质更改为导入的模型 .dae 时,问题就出现了。这是对 Collada 或 ThreeJS 的某种限制吗?

以上是关于应用纹理时 Collada 模型不渲染的主要内容,如果未能解决你的问题,请参考以下文章

opengl vbo 纹理

Threejs collada 3D模型在某些角度无法正确渲染

如何在 Xcode 中渲染具有半透明纹理的 3D 模型?

如何在 Three.js 中用 ShaderMaterial 替换 Collada 导入的纹理?

场景工具包中未出现 COLLADA 纹理

Collada 纹理上的线框覆盖 - three.js