js/Mobilizing/renderer/3D/three/shape/3D/composite/EdgesMesh.js
import { LineSegments } from "three";
import { EdgesGeometry } from "three";
import Material from "../../../scene/Material";
import Transform from "../../../scene/Transform";
import Mesh from "../../Mesh";
/**
EdgesMesh class creates a hiddenline fashioned Mesh from any other Mesh. "Hard" edges only will be visible. The result is different from when a Mesh material is set to wireframe, as all the segment will not be visible. All the coplanar segment are erased here in a new geometry that is rendered with a "line" type material.
*/
export default class EdgesMesh extends Mesh {
/**
* @param {Object} params Parameters object, given by the constructor.
* @param {Mesh} params.inputMesh The existing Mesh to use for generate a new edge only Mesh (geometry and material)
* @param {Number} [params.threshold=1] threshold angle
*/
constructor({
inputMesh = undefined,
threshold = 1,
} = {}) {
super(...arguments);
this.inputMesh = inputMesh;
this.threshold = threshold;
this.material = new Material({ type: "line" });
this._mesh = new LineSegments(new EdgesGeometry(this.inputMesh.geometry, this.threshold), this.material._material);
this.transform = undefined;
this.transform = new Transform(this);
}
}