web-dev-qa-db-fra.com

TROIS js modèle OBJ importé [.CommandBufferContext] AVERTISSEMENT DE RENDU: Le nombre de rendu ou primcount est

Je reçois des milliers d'erreurs (google chrome):

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

Fichiers OBJ et MTL exportés à partir de Blender, en utilisant OBJ MTL Loader.js comme chargeur Après avoir été déplacés vers R73.

Une expérience?

12
Martin

Cela se produit lorsque l'on a demandé à l'appel de rendu de bas niveau de dessiner zéro sommets/faces. C'est parce que vous avez un ou plusieurs maillages avec un polygone qui n'a pas de faces/sommets. Ainsi, à chaque appel de tirage, cette erreur s'accumule.

Le problème pourrait provenir de votre modèle ou du processus d’exportation/importation. Si c'est le modèle, vous trouverez ci-dessous une idée générale sur la manière de trouver les domaines problématiques. Je ne recommande pas d'utiliser OBJMTLLoader avec ThreeJS et Blender, car ThreeJS est livré avec un plugin Blender pour l'exportation, et cela fonctionne.

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

11
DAG

Il est difficile de dire ce qui ne va pas sans voir votre code, mais je suggérerais d'essayer l'exportation et l'importation JSON. Dans three.js sourse, accédez à utils/exporters/blender et installez l’exportateur JSON (consultez le fichier readme.md). Exportez ensuite votre modèle au format JSON en vérifiant soigneusement les options d’exportation (type de géométrie, UV, textures). Ensuite, vous pouvez importer votre modèle comme ceci:

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

Je n'ai pas comparé à OBJ/MTL, mais comparé à Collada, le chargeur JSON est beaucoup plus rapide.

0
Andrey Kiselev