javascript - 在 Three.JS 中向 Material 贴图添加纹理时出现 WebGL 警告

标签 javascript three.js

我有一个 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/

相关文章:

Javascript : Using Switch to set variables values for the function

javascript - Video.js 无法在带有服务器端渲染的 next.js 中工作

javascript - 在 Sinatra 中执行 Javascript

three.js - 如何将 THREE.JS 场景导出为光球的 360 度纹理

javascript - Three.js - 创建不受缩放和平移影响的 3D 文本

javascript - 检查数字的数字是否重复 X 次的有效方法?

javascript - Three.js - 错误的边界框导入 Blender JSON 模型

javascript - THREE.OBJLoader - 缩放网格和 BufferGeometry 顶点

apache - 尽管有适当的许可,跨源图像加载仍被拒绝

javascript - Telegram bot(telegraf.js 库)将消息从一个 channel 转发到另一个 channel 的方法?