深浅模式
Container 核心容器实体类
说明
本框架的核心模块,提供核心容器实体类以及一些适用的公共方法
安装
sh
npm install @poggi/three-core
pnpm add @poggi/three-core
yarn add @poggi/three-core基本用法
通过Container构建一个渲染容器,之后我们创建一个园区,并将园区通过mountGarden将园区挂载到容器中
重要
需要注意,在挂载园区之前,我们必须要挂载一个摄像机
loading
自动渲染/手动渲染
Container默认进行自动渲染,内部会自动帮你处理摄像机、控制器等的渲染逻辑,配合renderBeforeFunc以及renderAfterFunc,你可以进行额外的渲染扩展。当然,如果你觉得这样太麻烦了,或者你希望完全自己去做渲染,可以通过下面方式来实现。
loading
selectionBox
框架内置框选模式,使用
mountSelectionBox即可构建框选模块,之后在特定时,调用openSelectionBox即可启动框选,调用closeSelectionBox关闭框选; 在使用mountSelectionBox构建模块时,可以传入第二个参数,过滤回调函数,使框选模块只针对指定条件的模型进行框选,否则所有模型都会参与框选
loading
API
Attributes
| 属性名 | 说明 | 类型 |
|---|---|---|
| element | 视图容器 | HTMLElement |
| sizes | 容器尺寸(构造函数执行时,默认使用element的宽高,后续可通过resize方法更改) | Vector2 |
| renderer | 渲染器 | WebGLRenderer |
| camera | 摄像机 | Camera |
| controls | 内置控制器 | Controls |
| garden | 当前挂载的园区 | BaseGarden |
| renderBeforeFunc | 渲染前回调函数 | (delta: number, time: DOMHighResTimeStamp) => void |
| renderFunc | 自定义渲染函数 | (delta: number, time: DOMHighResTimeStamp) => void |
| renderAfterFunc | 渲染后回调函数 | (delta: number, time: DOMHighResTimeStamp) => void |
Methods
constructor(options: IContainerConstructorOption)
构造函数
setOption(option: IRenderOption)
当你希望在运行时修改渲染参数,可以使用该方法
mountGarden(garden: BaseGarden, oldCamera?: boolean)
挂载当前需要渲染的园区
- garden: 需要挂载的园区
- oldCamera: 是否在挂载园区后,将摄像机视角重新还原为园区的旧视角(用于多园区切换时使用)
mountStats()
挂载性能监视器
render(time: DOMHighResTimeStamp)
执行渲染
mountControls(controls: Controls)
挂载控制器
mountSelectionBox(params: ISelectionBoxParams)
挂载框选模块
openSelectionBox()
开启框选
closeSelectionBox()
关闭框选
resize
修改渲染尺寸(用于当容器尺寸改变时使用)
setView(params: ICameraToParams)
设置视角,参数值可以通过getViewInfo获取,也可以与本框架配套的在线编辑器,进行获取
getViewInfo
获取视角信息(在某些特定场景下,或许你可以用到)
pause
暂停渲染(主要用于开启自动渲染时使用)
resume
恢复渲染(主要用于开启自动渲染时使用)
destroy
销毁容器,用于释放内存
Interfaces
IRenderOption
| 属性名 | 说明 | 类型 | 是否必选 | 默认值 |
|---|---|---|---|---|
| toneMapping | 视图容器 | ToneMapping | 否 | - |
| toneMappingExposure | 色调映射曝光度 | number | 否 | 1 |
| logarithmicDepthBuffer | 深度检测(若开启,antialias将失效) | boolean | 否 | false |
| shadowMap | 是否开启阴影渲染 | boolean | 否 | false |
| shadowMapType | 阴影类型 | ShadowMapType | 否 | PCFShadowMap |
IContainerConstructorOption extends IRenderOption
| 属性名 | 说明 | 类型 | 是否必选 | 默认值 |
|---|---|---|---|---|
| element | 容器元素 | HTMLElement | 是 | - |
| camera | 摄像机 | Camera | 是 | - |
| autoRender | 是否自动渲染 | boolean | 否 | true |
| antialias | 是否开启MSAA抗锯齿 | boolean | 否 | true |
ICameraToParams
| 属性名 | 说明 | 类型 | 是否必选 | 默认值 |
|---|---|---|---|---|
| position | 摄像机坐标 | Vector3 | [number, number, number] | 是 | - |
| center | 观看目标 | Vector3 | [number, number, number] | 否 | (0,0,0) |
ISelectionBoxParams
| 属性名 | 说明 | 类型 | 是否必选 | 默认值 |
|---|---|---|---|---|
| filter | 过滤函数 | (object: Object3D) => boolean | 否 | - |
| class | 筛选框类样式 | string | 否 | - |
| selecting | 选中过程中回调函数 | (objects: Object3D[] | undefined) => void | 否 |
| selected | 过滤函数 | (objects: Object3D[] | undefined) => void | 否 |
