我得到的錯誤十萬(谷歌瀏覽器):三JS進口OBJ模型[.CommandBufferContext]渲染警告:渲染計數或primcount是0
[.CommandBufferContext]RENDER WARNING: Render count or primcount is 0.
OBJ和MTL文件出口從Bledner,使用OBJMTLLoader.js作爲裝載機 移至R73後。
有沒有經驗?
我得到的錯誤十萬(谷歌瀏覽器):三JS進口OBJ模型[.CommandBufferContext]渲染警告:渲染計數或primcount是0
[.CommandBufferContext]RENDER WARNING: Render count or primcount is 0.
OBJ和MTL文件出口從Bledner,使用OBJMTLLoader.js作爲裝載機 移至R73後。
有沒有經驗?
當低層渲染調用被告知繪製零頂點/面時會發生這種情況。這是因爲你有一個或多個具有零面/頂點的多邊形網格,所以在每次繪製調用時,這個錯誤堆積起來。
問題可能是您的模型,或者它可能是導出/導入過程。如果是模型,那麼下面是關於如何找到有問題的區域的鬆散想法。我不推薦在ThreeJS和Blender中使用OBJMTLLoader,因爲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;
}
}
很難說如果沒有看到您的代碼會出現什麼問題,但我會建議嘗試JSON導出和導入。在three.js sourse中,轉到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裝載機是方式更快。
我無法從OBJ文件切換到JSON。 – Martin
我從攪拌機中導出的網格得到這個錯誤。我做了兩件似乎有幫助的事情: 1.選擇你的物體,進入編輯模式,按'a'選擇所有面,然後按'w'並從菜單中選擇** Remove Doubles **。這將刪除重複的頂點。 2.選擇你的對象,進入編輯模式,按'a'選擇所有面,然後按'space'鍵,然後輸入「選擇鬆散幾何體」,按回車鍵,然後按'x'鍵刪除所選內容,然後按點擊'頂點'。再次按'x'並選擇'邊緣'。再次按下'x'並選擇'faces'。我不知道是否有必要做所有這些。 –
刪除雙打不是個好主意,特別是如果您使用EdgeSplit或其他功能依賴於分割的面。 – Martin