Mouse interactive objects for three.js
npm install @masatomakino/threejs-interactive-object --save-dev
threejs-interactive-object is composed of ES6 modules and TypeScript d.ts files.
At first, import classes.
import {
ClickableMesh,
StateMaterialSet,
StateMaterial,
MouseEventManager,
ThreeMouseEvent,
ThreeMouseEventType,
} from "@masatomakino/threejs-interactive-object";
MouseEventManager class watch MouseEvent on canvas element.
initialize MouseEventManager before create a button.
const manager = new MouseEventManager(scene, camera, renderer);
Create buttons and add to scene.
const clickable = new ClickableMesh({
geo: new BoxBufferGeometry(3, 3, 3),
material: new StateMaterialSet({
normal: new MeshBasicMaterial({
color: 0xffffff,
}),
}),
});
scene.add(clickable);
Add event listener.
clickable.model.on("click", (e) => {
console.log("CLICKED!");
});
The MouseEventManager
identifies an Object3D instance with a member named interactionHandler
as interactive. If you want to convert your loaded model to be interactive, you can use the convertToClickableMesh
, convertToCheckboxMesh
, convertToRadioButtonMesh
function.
const interactiveMesh = convertToClickableMesh(mesh);
npm uninstall @masatomakino/threejs-interactive-object --save-dev
threejs-interactive-object is MIT licensed.