我收到了数以千计的错误(谷歌浏览器):
[.CommandBufferContext]RENDER WARNING: Render count or primcount is 0.
从Bledner导出的OBJ和MTL文件,使用OBJMTLLoader.js作为加载程序 搬到R73后。
有经验吗?
答案 0 :(得分:11)
当低级渲染调用被告知绘制零顶点/面时,会发生这种情况。这是因为你有一个或多个具有零面/顶点的多边形的网格,所以在每次绘制调用时,这个错误都会堆积起来。
问题可能是您的模型,也可能是导出/导入过程。如果它是模型,那么下面是关于如何找到问题区域的松散想法。我不建议将OBJMTLLoader与ThreeJS和Blender一起使用,因为ThreeJS附带了一个Blender插件用于导出,它可以工作。
checkMesh = function(mesh, child_index) {
if (
mesh.geometry.faces.length > 0 &&
mesh.geometry.vertices.length > 0
) {
// do stuff here with the good mesh
for (var i = 0; i < mesh.children.length; i++)
if (!checkMesh(mesh.children[i], i))
i--; // child was removed, so step back
return true;
} else // empty mesh! this causes WebGL errors
{
if (mesh.parent != null)
mesh.parent.children.splice(child_index, 1);
console.log(mesh.name + " has zero faces and/or vertices so it is removed.");
mesh = null;
return false;
}
}
答案 1 :(得分:0)
很难说没有看到你的代码会出现什么问题,但我建议尝试JSON导出和导入。在three.js中,转到utils / exporters / blender并安装JSON导出器(检查readme.md)。然后将模型导出到JSON,仔细检查导出选项(几何类型,UV,纹理)。然后,您可以像这样导入模型:
var loader = new THREE.JSONLoader();
loader.load("model.json", function(geometry, material) {
var m = new THREE.MultiMaterial(material);
var o = new THREE.Mesh(geometry, m);
scene.add(o);
});
我没有与OBJ / MTL相比,但与Collada相比,JSON加载器更快。