Three.js: Geometrie ohne Flächen wird weiterhin in Mesh gerendert

Erstellt am 7. Aug. 2017  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Die Idee ist, dass meine Geometrie immer die gleichen Eckpunkte hat, aber Flächen optional hinzugefügt werden. Es entscheidet sich jedoch nach dem Zufallsprinzip, unabhängig davon zu zeichnen. Demo hier .

Bug Won't fix

Hilfreichster Kommentar

Ich habe dieses Problem heute behoben. Geometry wird intern in BufferGeometry konvertiert. Das Ergebnis dieser Konvertierung hängt vom Objekttyp (Netz, Linie usw.) ab. Im Beispiel von @makc wird die Geometrie als Geometrie eines Line -Objekts konvertiert. Dadurch werden ein Positions- und Farbattribut erstellt. Wenn die Instanz von Mesh mit demselben Geometry -Objekt gerendert wird, gibt der Renderer dieselbe zwischengespeicherte Instanz von BufferGeometry .

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

Dies ist der Grund, warum Sie diese grünen Dreiecke in der Demo sehen. Mesh und Line teilen sich das gleiche interne BufferGeometry und interpretieren es unterschiedlich. Ich denke, wir können dieses Problem lösen, wenn wir versuchen, den Objekttyp beim Zwischenspeichern von BufferGeometry .

Oder wir empfehlen einfach, zuerst BufferGeometry : heat_smile:

Alle 3 Kommentare

Ein entgegengesetztes Problem hier - wir sehen keine Gesichter, wo sie definiert sind. Vielleicht liegt dies daran, dass die Geometrie zwischen der Linie und dem Netz geteilt wird.

Ich habe dieses Problem heute behoben. Geometry wird intern in BufferGeometry konvertiert. Das Ergebnis dieser Konvertierung hängt vom Objekttyp (Netz, Linie usw.) ab. Im Beispiel von @makc wird die Geometrie als Geometrie eines Line -Objekts konvertiert. Dadurch werden ein Positions- und Farbattribut erstellt. Wenn die Instanz von Mesh mit demselben Geometry -Objekt gerendert wird, gibt der Renderer dieselbe zwischengespeicherte Instanz von BufferGeometry .

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

Dies ist der Grund, warum Sie diese grünen Dreiecke in der Demo sehen. Mesh und Line teilen sich das gleiche interne BufferGeometry und interpretieren es unterschiedlich. Ich denke, wir können dieses Problem lösen, wenn wir versuchen, den Objekttyp beim Zwischenspeichern von BufferGeometry .

Oder wir empfehlen einfach, zuerst BufferGeometry : heat_smile:

@mrdoob Ich schlage vor, ein neues Label Wont't fix einzuführen, es dem Problem zuzuweisen und es zu schließen. Ich denke nicht, dass es sinnvoll ist, dem Renderer einen Fix hinzuzufügen, wenn das Projekt das Rendern von Geometry sowieso beendet. Die Lösung für dieses Problem ist die Verwendung von BufferGeometry .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen