在 Three.js 中将事件侦听器添加到 3D Object 的特定部分

Add an event listener to a particular part of a 3D Object in Three.js

我有一个人 body object,我想要的是每当我单击任何指定的 body 部分(例如眼睛)时,我的代码应该打开一个弹出窗口,鼻子、手臂等。 object 是一个编译后的 .obj 文件,我无法弄清楚我应该如何将事件侦听器附加到多个 body 部分。非常感谢任何形式的帮助!

PS: - 我也在使用轨道控件来处理 object 的缩放和旋转。

提前致谢..

要解决此问题,有必要设计您的模型,使手臂、眼睛等各个组件成为独立的 3D 对象,组合在一起以构建更复杂的资产。这是您在设计阶段必须使用 Blender 等工具确保的事情。

在下一步导出到 glTF 而不是 OBJ 时,使用 THREE.GLTFLoader 将模型加载到您的应用程序中,然后通过以下方式对整个资产执行递归光线投射:

raycaster.intersectObject( gltf.scene, true, intersects );

通过在 pointermovepointerdown 事件侦听器中执行此代码,您可以了解用户是否与模型交互。

请注意,three.js 没有直接将事件侦听器分配给 3D 对象的系统。为此,您必须使用不同的解决方案,例如光线投射。