基于 three 编写的 带有事件系统的 vue3 组件库,用组件方式构建你的交互的 3D 世界
<SDGroup :onClick="() => { v1 += 0.5 }"></SDGroup>
你可以使用 在 Mesh 和 SDGroup 等物体组件上使用 :onclick 绑定点击事件 目前支持事件 onClick, onPointerOver, onPointerOut, onPointerMove, onPointerDown, onPointerUp, onWheel, onDblClick", onPointerMissed", onKeyMissed, None, onKeyDown, onKeyup, onKeypress, onContextmenu
<SDRaycaster
:lockDirection="true"
:helper="true"
:direction="[1,0,0]"
:raycasterCallback="consoleRay"
:far="4"
:offset="[0,0,0]"
/>
使用 SDRaycaster 组件检测是否有物体接触,你可以做出很有意思的交互 demo
可以结合其他组件库等好玩的交互啊
可以结合其他组件库立体效果,做出更好玩的交互
SDLight、 SDMaterial、 SDMesh、SDGeometry 等组件可以支 threejs 实例注入
SDAnimationAction SDAnimationMixer 组件 控制 FBX GLTF 文件的动画播放
SDOrbitControls、SDTransformControls、SDPointerLockControls 等 快速提供 360 度观察,移动缩放控制,第一人称控制
vue 生命周期,当组件卸载时,会自动回收资源
https://milifire.github.io/sandi-ui/
逐渐完善中, 里面有的例子,供你参考
pnpm
pnpm install sandi-ui
yarn
yarn add sandi-ui
npm
npm install sandi-ui
import { createApp } from "vue";
import App from "./App.vue";
import sandiUI from "sandi-ui";
const app = createApp(App);
app.use(sandiUI);
app.mount("#app");
<template>
<SDWebglRenderer :width="800" :height="400">
<SDScene>
<SDPerspectiveCamera :positionZ="20" :positionY="6" />
<SDFBXLoader url="/fbx/Rumba Dancing.fbx">
<SDMeshBasicMaterial meshName="body1">
<SDTextureLoader url="img/zhangfei.jpg" type="map" />
</SDMeshBasicMaterial>
<SDMeshBasicMaterial meshName="face">
<SDTextureLoader url="img/face.png" type="map" />
</SDMeshBasicMaterial>
<SDAnimationMixer>
<SDAnimationAction />
</SDAnimationMixer>
</SDFBXLoader>
</SDScene>
</SDWebglRenderer>
</template>