我使用three.js在页面上创建360全景 我在页面上有几个缩略图,点击缩略图可以做两件事。它将正确的纹理交换到全景画布(这可以),然后在自定义框中使用画布创建一个自定义框模式。
这不起作用。我所看到的是原始的canvas元素仍然存在于DOM中并且正在工作。在自定义框中有第二个canvas元素,但它看起来是空的,没有任何功能。
我是否误解了canvas元素的工作方式,使得它无法出现在模态对话框中?
答案 0 :(得分:1)
我假设,没有任何代码显示您的CustomBox目标是包含您的画布或画布本身的div的ID。在这种情况下,CustomBox将克隆你的div / canvas。您将看到所需的所有组成部分,但是three.js并不了解它们,因为您在实例化时将原始div传递给渲染器。您正在使用的render()调用采用以下参数:
.render ( scene, camera, renderTarget, forceClear )
由于渲染可以指向一个新的renderTarget作为第三个参数,我将从这里开始,并传入CustomBox显示的新画布的唯一ID。有很多可用的方法:https://threejs.org/docs/#api/renderers/WebGLRenderer,例如getRenderTarget,这样你就可以看到当前正在绘制哪个画布,重要的是setRenderTarget()也可能对你有用。