36 lines
930 B
JavaScript
36 lines
930 B
JavaScript
import { Matrix4, MeshLambertMaterial, Mesh } from 'three/build/three.module';
|
|
|
|
const defaultColor = 0xe24329;
|
|
const materials = {
|
|
default: new MeshLambertMaterial({
|
|
color: defaultColor,
|
|
}),
|
|
wireframe: new MeshLambertMaterial({
|
|
color: defaultColor,
|
|
wireframe: true,
|
|
}),
|
|
};
|
|
|
|
export default class MeshObject extends Mesh {
|
|
constructor(geo) {
|
|
super(geo, materials.default);
|
|
|
|
this.geometry.computeBoundingSphere();
|
|
|
|
this.rotation.set(-Math.PI / 2, 0, 0);
|
|
|
|
if (this.geometry.boundingSphere.radius > 4) {
|
|
const scale = 4 / this.geometry.boundingSphere.radius;
|
|
|
|
this.geometry.applyMatrix(new Matrix4().makeScale(scale, scale, scale));
|
|
this.geometry.computeBoundingSphere();
|
|
|
|
this.position.x = -this.geometry.boundingSphere.center.x;
|
|
this.position.z = this.geometry.boundingSphere.center.y;
|
|
}
|
|
}
|
|
|
|
changeMaterial(type) {
|
|
this.material = materials[type];
|
|
}
|
|
}
|