我有一个 JSON 文件 (map.js),可以从中加载几何图形和 Material 设置(这是我生成的文件,对于我来说太大了,无法手动编辑它)。它看起来像这样:
"materials": [ {
"DbgColor" : 2632490,
"DbgIndex" : 0,
"DbgName" : "ASPHALT_0"
},
{
"DbgColor" : 16777215,
"DbgIndex" : 1,
"DbgName" : "ROAD_MARKING_DASHED_0"
}],
"vertices": [-370.412496,0.000000,120.194495...
"morphTargets": [],
"morphColors": [],
"normals": [],
"colors": [],
"uvs": [[]],
"faces": [2,0,1,2,0...
面格式注意事项:带 Material 的三 Angular 形
我像这样加载这个文件:
var loader = new THREE.JSONLoader();
loader.load("map.js", function(geometry, materials){
mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial(materials));
scene.add(mesh);
loadRestOfScene();
});
我想要做的是将纹理添加到我的 Material 数组中的特定 Material 。像这样的东西:
materials[i].map = THREE.ImageUtils.loadTexture( 'road.jpg' );
但是当我加载页面时,我收到此警告:
[.WebGLRenderingContext]GL 错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性 2 index.html:1 中超出范围的顶点 WebGL:错误太多,此上下文不会向控制台报告更多错误。
我在这里阅读了类似的问题(和答案),并尝试这样做:
materials.needsUpdate = true;
geometry.buffersNeedUpdate = true;
geometry.uvsNeedUpdate = true;
但这并没有改变任何事情。是否可以向最初没有纹理的 Material 添加纹理?或者我在这里做错了什么?
最佳答案
您需要指定哪些 Material 需要更新
materials[i].needsUpdate = true;
关于javascript - 在 Three.JS 中向 Material 贴图添加纹理时出现 WebGL 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686191/