Skip to content

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否