我们可以在 webGL 中用 HTML 元素制作平面几何吗?

Can we make Plane Geometry with HTML element in webGL?

我想在 webGL 中用 HTML 元素制作一个平面,并且可以像真实的 HTML 一样做一个动作,例如:制作一个按钮,当我们点击它时,它会给我们一个动画反馈和 运行 函数。我已经在寻找答案并找到了 html2canvasrasterizeHTML.js,但它只是给出了一个不自然的图像 HTML。有没有图书馆或任何方式让我像上面的例子那样做。提前致谢...

NOTE : For some reason i can't use CSS3DRenderer in Three.js

例如您可以在下面的 link 中看到的图片:

如果我没理解错的话,您想要使用 HTML 定义一个以“3D 透视图”呈现的交互式用户界面。

有几种方法可以做到这一点 - 一种是根本不使用 WebGL,而是使用 CSS3 transforms and perspective:

/* Add click handler to demonstrate that elements are still 
interactive, even when orientated in 3D space */
const button = document.getElementById("clickme");
button.addEventListener("click", () => {
  alert("hi!");
});
/* Optional - just for purpose of demonstration */
@keyframes movement {
  from {
    transform: rotateY(20deg);
  }
  to {
    transform: rotateY(-20deg);
  }
}

/* Define a "perspective wrapper" to give
the child elements the effect of 3D perspective */
.perspective {
  width: 500px;
  perspective: 500px;
  perspective-origin: 50% 50%;
  padding: 1rem;
}

.surface {
  /* Style the UI surface using regular CSS */
  background: red;
  padding: 1rem;
  text-align: center;  
  
  /* Orientates the surface in 3D space */
  transform: rotateY(20deg);
  animation: movement 5s infinite;
}
<div class="perspective">
  <div class="surface">
    <button id="clickme">Click me, I'm in 3D and I'm interactive!</button>
  </div>
</div>

这种方法保留了声明式 HTML、现有 JavaScript DOM WebAPI 的优点,同时还为您提供了流畅的硬件加速 3D 渲染 HTML视角。

或者,如果您需要在 canvas 元素中呈现交互式用户界面(即,没有 CSS3 转换),您可以考虑像 Babylon.js 这样的库,它提供相当全面 GUI framework

Here is an example show casing 一个相当复杂的 3D 图形用户界面 space,使用 Babylon.js 框架构建 - 需要注意的是,图形用户界面是用 JavaScript 定义的(而不是HTML) 然而更类似于做事的"Three.js way"。