En primer lugar, soy un principiante en three.js y solo quiero compartir mi experiencia.
Mi tarea era convertir la geometría en algo y transferirla a otro WebWorker (no se pueden transferir todos los objetos entre trabajadores, solo tipos de datos clonables estructurados) . Así que abrí la documentación e intenté usar .toJSON y luego BufferGeometryLoader (y muchos otros enfoques).
const box = new BoxBufferGeometry(); const geomJSON = box.toJSON(); const geometriesLoader = new THREE.BufferGeometryLoader(); const parsedGeom = geometriesLoader.parse(geomJSON); const mesh = new Mesh(parsedGeom); this.scene.add(mesh); Además, probé otros tipos de cargadores, JSON.stringify , etc. Pero solo parece funcionar empaquetar mallas con geometrías en el archivo GLTF y serializarlo mediante devolución de llamada (no muy útil).
Le pedí ayuda al santo Internet pero no me escuchó. Y la documentación solo dice:
.toJSON () : ObjectConvierta la geometría del búfer al formato de escena/objeto JSON three.js.
Versión de Three.js: 0.135.0 y 0.136.0
Entonces, pensé que moriría, pero accidentalmente encontré esa función: .toNonIndexed() .
const box = new BoxBufferGeometry(); const geomJSON = box.toNonIndexed().toJSON(); const geometriesLoader = new THREE.BufferGeometryLoader(); const parsedGeom = geometriesLoader.parse(geomJSON); const mesh = new Mesh(parsedGeom); this.scene.add(mesh);No estoy seguro de lo que hace, pero al menos funciona ahora y puedo ver mi geometría después de la serialización. Sin embargo, no estoy seguro de que no cause otros problemas.
Si tiene más experiencia en three.js, por favor, bríndeme a mí y a otros novatos más información sobre este problema y el propósito de .toJSON . Gracias.