THREE.load和法线贴图着色器失败

时间:2013-03-30 10:26:25

标签: three.js

我想玩三个lod系统,我在网格物体上应用了法线贴图材质,但是因GL错误而失败:

WebGLRenderingContext:GL错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性2中超出范围的顶点

任何人都可以很容易地重现它,我想,只需编辑webgl_lod示例,而不是应用MeshLambertMaterial,而是使用misc_control_fly示例中提供的normalmap ShaderMaterial。

我错过了什么,是不是普通地图着色器应该与LOD网格一起使用?

编辑: 这里是查看问题的链接。

正在运行的原始示例webgl_lod:http://typedef.byethost8.com/examples/webgl_lod.html

使用shaderLib中的normalmap着色器而不是web_lod的原始meshLambertMateriel示例:http://typedef.byethost8.com/examples/failing_webgl_lod.html

1 个答案:

答案 0 :(得分:0)

您必须为几何生成切线。 添加:

geometry[ 0 ][ 0 ].computeTangents();
geometry[ 1 ][ 0 ].computeTangents();

这将消除错误:

WebGLRenderingContext:GL错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性2中超出范围的顶点

另外,我不得不使用sheres而不是飞机来查看显示的内容=>也许没有为飞机生成纹理坐标?或者普通地图材料不适用于飞机?