У меня есть файл JSON (map.js), из которого я загружаю настройки геометрии и материала (это файл, который я сгенерировал, и он слишком велик для меня вручную отредактируйте его). Это выглядит примерно так:WebGL Предупреждение при добавлении текстуры к материальной карте в Three.JS
"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...
Примечание для формата граней: треугольник с материалом
я загружаю этот файл так:
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();
});
То, что я хочу сделать, это добавить текстуры к определенному материалу в моем массиве материалов. Что-то вроде:
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;
Но это ничего не меняет. Можно ли даже добавить текстуру к материалу, у которого его нет? Или я делаю что-то не так?
Убедитесь, что вы UVs и читать http://stackoverflow.com/questions/16531759/three-js-map-material-causes-webgl- предупреждение/16533812 # 16533812. – WestLangley
Как вы можете видеть из моего вопроса, я прочитал этот пост, потому что я пытался сделать то, что вы сказали (я цитирую): «В качестве альтернативы вы можете начать с материала без текстуры, а затем установить следующие флаги, когда текстура добавлена ... » И у меня нет УФ, потому что код, который генерирует мой JSON-файл, не создает UVs, и это то, что я не могу изменить. –
Если у вас нет UVs, то почему вы пытаетесь добавить текстуру? – WestLangley