TransformPanel 变形信息框
用于快速构建一个三维的信息面板,该面板与Panel
以及ZoomPanel
的区别在于,它会跟着摄像机的缩放而变化,并且它会根据模型的朝向一起变化
基础用法
通过使用TransformPanel
的静态方法createDOM
构建一个信息框专用的DOM节点,之后将节点挂载到面板中,即可构建出一个信息面板
需要注意,因为三维面板的节点最终统一构建在信息容器节点中,因此它们的样式不能使用
scope
封锁,需要放在全局中才可生效
案例中还使用了showLine
,构建一条连接线,可以清晰的表达出,该面板是谁的信息,不过需要注意的是,一定要在它被添加到对应模型或者场景中后再调用该方法。
连线锚点控制
我们可以在构建DOM节点时,通过anchorPoint
来控制面板的连线锚点,配合面板的坐标以此更为灵活的控制连接效果
注意,这里是控制的连线锚点,而不是面板的方位
刷新面板内容
在构建好面板内容后,我们可以调用updateContent
来修改其中的内容
第三方库管理DOM
在使用createDOM构建节点时,我们也可以传入由第三方库管理的DOM节点,以此更为方便的管理DOM内容,这里以vue3的方式来做示例,现在尝试修改一下输入框的值,可以看到面板中的数据会同步变更
注意,使用第三方库管理的DOM节点,无法使用
updateContent
来修改内容
嵌入网页引用
可以嵌入iframe用于场景中,不过需要注意的是,因为其本质还是DOM,所以层级不会被模型遮挡,需要根据实际情况来选择是否使用
Options
IPanel2Data
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
element | 面板管理的DOM节点 | HTMLElement | - |
initShow | 是否初始显示面板 | boolean | true |
IPanel2DOM
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
element | 节点html 内容 | string | - |
className | 类样式名 | string | - |
anchorPoint | 连线定位锚点(与offset 属性二选一) | AnchorPoint2 | AnchorPoint2.CENTER |
offset | 连线位置偏移值(与anchorPoint 二选一) | [string,string] | - |
IPanel2TemplateDOM
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
className | 类样式名 | string | - |
anchorPoint | 连线定位锚点(与offset 属性二选一) | AnchorPoint2 | AnchorPoint2.CENTER |
offset | 连线位置偏移值(与anchorPoint 二选一) | [string,string] | - |
AnchorPoint2
枚举值 | 说明 |
---|---|
LEFTTOP | 左上角 |
TOP | 上 |
RIGHTOP | 右上角 |
LEFT | 左 |
CENTER | 中央 |
RIGHT | 右 |
LEFTBOTTOM | 左下 |
BOTTOM | 下 |
RIGHTBOTTOM | 右下 |
IPanel3Line
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
startPoints | 线条起始坐标 | RTHREE.Vector3 | 原点 |
endPoints | 线条结束坐标 | RTHREE.Vector3 | 面板当前坐标 |
lineColor | 线条颜色 | RTHREE.ColorRepresentation | 0xFFFFFF |
static Methods
createDOM(domData: IPanel2DOM)
创建普通三维面板节点
const panelElement = RTHREE.Panel3.createDOM({
element: `<span class="model-name">正方体</span>`,
anchorPoint: AnchorPoint.BOTTOM
});
const panelElement2 = RTHREE.Panel3.createDOM({
element: `<span class="model-name">正方体</span>`,
offset: ['30px', '-50%']
});
createTemplateDOM(domData: IPanel2TemplateDOM)
创建用于第三方挂载的模板节点
Methods
updateContent(content: string)
要变更为的内容,仅用于使用createDOM
静态方法构建的三维面板
... //省略构建的过程
panel.updateContent(`<span class="model-name">修改后的正方体</span>`);
createLine(lineData?: IPanel2Line)
构建面板面板连接线条,仅当第一次调用时生效
... //省略构建的过程
panel.createLine();