应用纹理时 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 模型不渲染的主要内容,如果未能解决你的问题,请参考以下文章

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

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

iPhone OpenGL ES 2.0 奇怪的图案在 COLLADA 文件中的球体上渲染纹理

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

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

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