2016-01-28 19 views
9

Wie ich verstanden using buffer geometries wird die Leistung erhöhen und Speicherverbrauch verringern, weil es die Kosten für die Weitergabe all dieser Daten an die GPU reduziert.Three.js - Fragen über (die Verwendung von) THREE.BufferGeometry

Und wie ich verstanden from @WestLangley his post hier:

THREE.BufferGeometry langsam THREE.Geometry ersetzt wird, wie es rechnerisch effizienter ist.

Ich bin derzeit mit three.js - R72.
Wenn ich meine Geometrien zeichne Meshes und fügen Sie sie der Szene hinzu Ich sehe, dass es zwei Eigenschaften in meinen Geometrien __directGeometry und _bufferGeometry gibt.

Hier in einem THREE.BoxGeometry:

enter image description here

hier in THREE.Geometry:

enter image description here

Hier in einem THREE.ShapeGeometry:

enter image description here

Meine Fragen

:

  1. Was ist ein THREE.DirectGeometry und was tut sie? (Ich kann keine Dokumentation zu diesem Thema finden)
  2. Wird diese THREE.BufferGeometry in _bufferGeometry bereits automatisch verwendet gespeichert? Wenn nicht, kann ich es einfach anstelle meiner Geometrie verwenden, um die Leistung zu steigern?
  3. Es gibt Konvertierungsmethoden: THREE.BufferGeometry hat toGeometry und THREE.Geometry hat toBufferGeometry. Wenn ich mit dieser Methode alle meine normalen Geometrien in Puffergeometrien umwandele, wird es mir dann die gleiche Leistungssteigerung geben, als wenn ich sie von Anfang an als THREE.BufferGeometry zeichne?
  4. Wie und wann sollte ich THREE.BufferGeometry verwenden?
  5. Wann wird three.js aufhören, THREE.Geometry zugunsten THREE.BufferGeometry zu unterstützen?

HINWEIS: ich keine detaillierten Informationen finden konnte, wann und wie Puffergeometrien verwendet werden kann, oder wenn es THREE.Geometry gehen zu ersetzen. Aber wenn jemand eine gute Quelle oder Referenz hat, hinterlasse bitte einen Kommentar.

Antwort

7
  1. __directGeometry ist eine interne Datenstruktur verwendet, um zwischen THREE.GeometryTHREE.BufferGeometry und zu überführen. Leg dich nicht damit an.
  2. THREE.BufferGeometry.toGeometry() und THREE.Geometry.toBufferGeometry() sind Komfortmethoden.Die erste ist hilfreich, wenn Ihr Modell als BufferGeometry geladen wird und Sie sich bei der Manipulation von Geometry wohler fühlen. Wenn Sie Antworten bezüglich der Leistung wünschen, müssen Sie einen Test durchführen. Puffergeometrien werden definitiv schneller geladen.
  3. Es gibt viele Beispiele, die die Verwendung von BufferGeometry zeigen. Es wäre klug, wenn Sie den Unterschied zwischen "indexiert" und "nicht indexiert" BufferGeometry verstehen würden. BufferGeometry mit dem Attribut index definiert ermöglicht die gemeinsame Nutzung von Vertices. Non-Indexed BufferGeometry ist, was wir "Dreieckssuppe" nennen.
  4. THREE.Geometry wird auf absehbare Zeit bleiben.

three.js r.73

+0

Vielen Dank für Ihre Antwort. Könntest du noch ein bisschen über diesen Teil nachdenken: * Wenn ich alle meine normalen Geometrien mit dieser Methode in Puffergeometrien umwandele, gibt es mir dann die gleiche Leistungssteigerung, als wenn ich sie von Anfang an als DREI.BufferGeometrie zeichne? * Weil ich still bin nicht sicher, ob ich meine Geometrien als Puffergeometrien neu zeichnen sollte, um maximale Leistung zu erhalten ... – Wilt

+0

Ein mehr ... Gibt es einen Leistungsunterschied zwischen indexierten und nicht indizierten Puffergeometrien? – Wilt

+2

(1) Wie ich in # 3 gesagt habe. oben, wenn Sie Antworten bezüglich der Leistung wünschen, müssen Sie einen Test Ihrer spezifischen Anwendung durchführen. (2) Der Renderer konvertiert Ihre normalen Geometrien trotzdem in die Puffergeometrie, daher sollte es keinen Grund geben, die Konvertierung manuell durchzuführen. Es könnte jedoch eine gute Lernerfahrung sein. (3) Indizierte und nicht indexierte 'BufferGeometry' kann oder weist möglicherweise signifikante Leistungsunterschiede auf. Es würde von der Geometrie abhängen. – WestLangley