2016-02-09 3 views
12

ich Tausende von Fehlern (Google Chrome) erhalten:DREI js importiert OBJ-Modell [.CommandBufferContext] WARNUNG RENDER: Render Zählung oder primcount 0 ist

[.CommandBufferContext]RENDER WARNING: Render count or primcount is 0. 

OBJ und MTL-Dateien aus Bledner exportiert, mit OBJMTLLoader.js als Lader Nach dem Umzug nach R73.

Irgendwelche Erfahrungen?

+0

bekam ich diesen Fehler aus einem von Mixer exportiert Mesh. Zwei Dinge, die ich getan habe, die zu helfen schienen: 1. Wählen Sie Ihr Objekt, gehen Sie in den Bearbeitungsmodus, drücken Sie 'a', um alle Gesichter auszuwählen, dann drücken Sie' w' und wählen Sie ** Remove Doubles **. Dies entfernt doppelte Scheitelpunkte. 2. Wählen Sie Ihr Objekt, gehen Sie in den Bearbeitungsmodus, drücken Sie 'a', um alle Flächen auszuwählen, drücken Sie' Leerzeichen' und tippen Sie "Lose Geometrie wählen", drücken Sie die Eingabetaste und dann 'x', um alle ausgewählten Elemente zu löschen Klicken Sie auf Vertices. Drücken Sie erneut 'x' und wählen Sie' Kanten'. Drücken Sie erneut 'x' und wählen Sie' faces'. Ich weiß nicht, ob es notwendig ist, all dies zu tun. –

+0

Entfernen von Doubles ist keine gute Idee, besonders wenn Sie EdgeSplit oder andere Funktionen verwenden, die von geteilten Flächen abhängen. – Martin

Antwort

11

Dies passiert, wenn der Low-Level-Render-Aufruf angewiesen wurde, Null-Scheitelpunkte/Flächen zu zeichnen. Das liegt daran, dass Sie ein oder mehrere Meshes mit einem Polygon haben, das keine Flächen/Scheitelpunkte hat. Bei jedem Draw-Aufruf stapelt sich dieser Fehler.

Das Problem könnte Ihr Modell sein oder es könnte der Export/Import-Prozess sein. Wenn es das Modell ist, dann ist unten eine lose Idee, wie man die problematischen Bereiche findet. Ich empfehle nicht, OBJMTLLoader mit ThreeJS und Blender zu verwenden, da ThreeJS mit einem Blender-Plugin zum Exportieren ausgeliefert wird, und es funktioniert.

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; 
 
    } 
 
}

0

Es ist schwer zu sagen, was falsch sein könnte, ohne Ihren Code zu sehen, aber ich würde vorschlagen, JSON zu exportieren und zu importieren. Gehen Sie in three.js sours zu utils/exporteurs/blender und installieren Sie den JSON-Exporteur (siehe readme.md). Dann exportieren Sie Ihr Modell zu JSON und prüfen Sie sorgfältig die Optionen (Geometrietyp, UVs, Texturen). Dann können Sie Ihr Modell wie folgt importieren:

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); 
}); 

ich nicht zu vergleichen, um OBJ/MTL, aber im Vergleich zu Collada, JSON loader Art und Weise schneller ist.

+0

Es ist nicht möglich, von OBJ-Dateien zu JSON für mich zu wechseln. – Martin