Todavía soy nuevo en Threejs... Quiero poner algo de mi código threejs en otro archivo JS y luego usarlo en mi archivo main.js. Este es un código similar simple:
principal.js
import * as THREE from 'three' import Box from './classes/Parts.js' const box = new Box() scene.add(box)Piezas.js
class Box { constructor() { this.geom = new THREE.BoxGeometry(2, 2, 2); this.mat = new THREE.MeshBasicMaterial({ color: 0xff0000 }); this.mesh = new THREE.Mesh(this.geom, this.mat); } } export default Box; Pero recibo este error: THREE.Object3D.add: object not an instance of THREE.Object3D.
¿Qué hice mal?
Solo puede agregar objetos personalizados al gráfico de escena que se deriven de THREE.Object3D . Ese no es el caso de su clase Box . Reescribe tu código así:
class Box extends THREE.Mesh { constructor() { const geom = new THREE.BoxGeometry(2, 2, 2); const mat = new THREE.MeshBasicMaterial({ color: 0xff0000 }); super(geom,mat); } } export default Box;