【问题标题】:How to merge three.js renders with other HTML elements?如何将three.js 渲染与其他HTML 元素合并?
【发布时间】:2019-08-31 14:28:34
【问题描述】:

我对编程、stackoverflow 和这里的一切都非常陌生。所以请多多包涵。

我使用 Three.js 制作了简单的场景,并分别使用 HTML Canvas 制作了一些效果。 我想知道是否可以将两者结合起来,或者一般来说,如何将 Three.js 渲染器画布与其他 HTML 元素结合起来。

我当前的代码包括类似的内容:

var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
renderer.domElement.id = 'WebGLCanvas';
document.body.appendChild(renderer.domElement);

【问题讨论】:

    标签: html three.js html5-canvas


    【解决方案1】:

    WebGL 内容和 HTML 元素的无缝集成是不可能的。您可以将 HTML 元素放置在渲染器的画布元素之上,也可以反过来做。通过将THREE.WebGLRenderer 的alpha 标志设置为true,您可以将渲染器的画布置于其他HTML 内容之上。

    但是,您应该记住,WebGL 内容始终是单独呈现的。无法将 3D 对象(如网格、线或点云)与 HTML 元素合并,以便将它们排序并一起呈现。

    THREE.CSS3DRenderer 与THREE.WebGLRenderer 结合使用是正确使用的一个很好的例子。查看以下演示,该演示显示了两个渲染器都集成在简单的应用程序中。

    https://threejs.org/examples/css3d_orthographic.html

    【讨论】:

    • 啊,谢谢...但是 THREE.CSS3DRenderer 仍在渲染 3d 对象,是吗?我想要的是在一个正常的网页上集成一个 3d 模型。例如,here,蓝色背景上有一个 3d 模型,旁边有一些文字在同一个空间中。像这样简单的东西应该是可能的,不是吗?
    • THREE.CSS3DRenderer 上下文中的“渲染”一词有些误导,因为它只是根据 3D 对象的转换来转换 HTML 元素。无论如何,sketchfab 在其起始页面上所做的是将 canvas 元素集成到普通网站中。当然,这没什么特别的,也很容易做到。我指的是更高级的场景;)
    • 啊...那么你能推荐一些解释如何实现sketchfab结果的教程吗?我强调 as simple as 因为我知道这可能是一个菜鸟问题,但不知何故我就是想不通....
    • 也许像这样:jsfiddle.net/ztjLfsm0。如您所见,您可以在普通网站中放置一个canvas元素,然后将其用作THREE.WebGLRenderer的绘图表面。
    • 如果对你有用,请采纳答案;)
    猜你喜欢
    • 2018-08-07
    • 1970-01-01
    • 2012-05-07
    • 2019-07-08
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2017-04-01
    • 2012-09-21
    相关资源
    最近更新 更多