我想尝试测试一张 3D 地图。最简单的是,一个平面窗格,上面绘制了地图线等,平面的(就像我在 HTML 画布上绘制一样)。但我希望该窗格可以在 3D 空间中移动。
我知道我可以非常简单地在 three.js 中制作一个平面窗格,但是是否可以实现某种“自定义纹理”,让我以编程方式在该窗格上绘制?
我想尝试测试一张 3D 地图。最简单的是,一个平面窗格,上面绘制了地图线等,平面的(就像我在 HTML 画布上绘制一样)。但我希望该窗格可以在 3D 空间中移动。
我知道我可以非常简单地在 three.js 中制作一个平面窗格,但是是否可以实现某种“自定义纹理”,让我以编程方式在该窗格上绘制?
它在 webGL 中称为渲染到纹理。
Three.js 提供了 WebGLRenderTarget 可以用作进一步纹理的图像源。您将场景渲染到 WebGLRenderTarget 而不是主 WebGL 屏幕。然后使用这个 WebGLRenderTarget 作为纹理的图像源。
很多 2D 后处理都是这样工作的。他们将世界渲染为 2D 纹理,然后使用片段着色器来应用每个像素的后处理代码,例如模糊。
例如,参见http://mrdoob.github.com/three.js/examples/webgl_postprocessing.html
它为 2D 后处理渲染场景,但原理是一样的。
这是 WebGLRenderTarget 设置代码:
https://github.com/mrdoob/three.js/blob/master/examples/js/postprocessing/EffectComposer.js#L14