Erhöht die Konvertierung einer Geometrie in eine BufferGeometry in Three.js die Anzahl der Scheitelpunkte?

Ich habe die fromGeometry-Methode verwendet, um BufferGeometry-Objekte aus regulären Geometry-Objekten zu erstellen, und ich habe festgestellt, dass die Anzahl der Scheitelpunkte während der Konvertierung anscheinend zunimmt. Zum Beispiel, wenn ich etwas mache wie:

var geometry = new THREE.BoxGeometry(80,80,80,16,16,16);
var bGeometry = new THREE.BufferGeometry();
bGeometry.fromGeometry(geometry);
console.log(bGeometry.getAttribute('position'));
console.log(geometry.vertices.length);

Ich erhalte ein Float32Array [27648], das geteilt durch 3 9216 ergibt, während die Geometrie 1538 Eckpunkte hat. Ich verstehe, dass THREE.BoxGeometry einige Scheitelpunkte zusammenführt, also vermute ich, dass dies möglicherweise damit zu tun hat, aber korrigiere ich, dass BoxGeometry-Objekte mehr Scheitelpunkte haben? Oder sind Geometrieobjekte in der GPU ohnehin "unkomprimiert", sodass sie tatsächlich die gleiche Anzahl von Scheitelpunkten haben, nur nicht in meinem Geometrieobjekt?

Der Grund, den ich frage, ist, dass ich versucht habe, ein benutzerdefiniertes Attribut zu erstellen, aber mein Array war zu kurz, als ich nur die Anzahl der Scheitelpunkte in meinem Geometry-Objekt durchlaufen habe, da ich dachte, dass es in beiden die gleiche Anzahl von Scheitelpunkten geben würde Objekte.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage