【发布时间】:2020-05-28 21:29:51
【问题描述】:
我正在尝试使用 ThreeJS CSS3dRenderer (https://threejs.org/docs/#examples/en/renderers/CSS3DRenderer) 在 Forge 模式下以 3D 显示 HTML 内容。
功能示例:http://learningthreejs.com/data/2013-04-30-closing-the-gap-between-html-and-webgl/index.html
在纯粹的普通 ThreeJS 上下文中,所需的步骤是:
- 为 DOM 内容创建 ThreeJS 场景 #1。
- 为 3D 内容创建另一个场景 #2。
- 将带有 HTML 内容的 CSS3DObjects 添加到场景 #1 中
- 在启用混合的情况下将 匹配 3D 元素添加到场景 #2。这使得 HTML 内容能够遮挡场景 #2 中的对象。
- 将其他 3D 对象添加到场景 #2。
- 使用 CSS3DRenderer 渲染 #1,使用普通 WebGLRenderer 渲染 #2。
在 Forge 查看器上下文中,场景 #2 被替换为覆盖场景。
我应用了这里介绍的技巧https://forge.autodesk.com/blog/transparent-background-viewer-long-last 使 CSS 场景通过查看器场景可见并且工作正常,除了当启用渲染器 alpha 时,覆盖场景中的元素仅在遮挡时渲染的奇怪效果Forge 模型。
我遇到的问题是第 4 点。在两个普通 ThreeJS 场景的情况下,场景 #1 中 CSS3DObject 的位置、旋转和缩放可以复制到场景 #2 中的对象,并且它们完美匹配。在 ThreeJS 场景和查看者的覆盖场景之间并非如此,因为单位不匹配。 (或者这就是我的推理方式。)
有什么方法可以在这些单位之间转换吗?
【问题讨论】:
-
您能否发布您的代码以及一些屏幕截图,以便我可以将其传递给我们的工程部门以解决/修复问题?
-
我编辑了透明背景示例以包含 CSS3D 内容:jsbin.com/nawonomixu/1/edit?html,js,output。如果旋转场景,您可以看到模型上的叠加对象。我应用了一些猜测的偏移值以使它们可见。出于某种原因,当您缩放 Forge 场景时,CSS3D 内容根本不会受到影响,即使它是使用相同的相机渲染的。
-
谢谢!刚刚转给 cmets 工程部门 - 很快就会回来。
标签: autodesk-forge autodesk-viewer