UseThreeJs
功能描述
UseThreeJs 是一个功能强大的 Three.js 集成库,提供了完整的 3D 场景管理能力,包括渲染器设置、相机控制、场景管理、动画循环、事件系统等特性。它基于 Three.js 和 OrbitControls 实现,为 Vue 应用提供了流畅的 3D 交互体验。
安装
bash
# 使用 npm
npm install @oiij/three-js
# 使用 yarn
yarn add @oiij/three-js
# 使用 pnpm
pnpm add @oiij/three-js基本使用
loading
API
函数签名
ts
declare function useThreeJs(templateRef: TemplateRef<HTMLElement>, options?: ThreeJsOptions): UseThreeJsReturns类型定义
ts
export type ThreeJsOptions = {
rendererOptions?: WebGLRendererParameters
cameraOptions?: {
fov?: number
aspect?: number
near?: number
far?: number
position?: [number, number, number]
lookAt?: [number, number, number]
}
disableRender?: boolean
lights?: Light[]
helpers?: Object3D[]
manual?: boolean
}
export type LoopEvent = {
clock: Clock
delta: number
elapsed: number
}
export type ResizeArguments = {
width: number
height: number
aspect: number
dpr: number
}
export type UseThreeJsReturns = {
templateRef: Readonly<vue0.ShallowRef<HTMLElement | null>>
renderer: WebGLRenderer
scene: Scene<three0.Object3DEventMap>
camera: PerspectiveCamera
controls: OrbitControls
clock: Clock
pause: _vueuse_core0.Fn
resume: _vueuse_core0.Fn
isActive: Readonly<vue0.ShallowRef<boolean>>
dispose: () => void
onIntersectObject: (obj: Object3D | Object3D[], event: PointerEvent | MouseEvent, callback?: (obj: Object3D[]) => void) => boolean
onRendered: _vueuse_core0.EventHookOn<[WebGLRenderer]>
onResize: _vueuse_core0.EventHookOn<[ResizeArguments]>
onDestroy: _vueuse_core0.EventHookOn<[]>
onBeforeLoop: _vueuse_core0.EventHookOn<[WebGLRenderer, LoopEvent, UseRafFnCallbackArguments]>
onLoop: _vueuse_core0.EventHookOn<[WebGLRenderer, LoopEvent, UseRafFnCallbackArguments]>
onAfterLoop: _vueuse_core0.EventHookOn<[WebGLRenderer, LoopEvent, UseRafFnCallbackArguments]>
onClick: _vueuse_core0.EventHookOn<[MouseEvent]>
onDoubleClick: _vueuse_core0.EventHookOn<[MouseEvent]>
onContextMenu: _vueuse_core0.EventHookOn<[MouseEvent]>
}