1

我正在尝试但未能解决如何在单个平面上实现材质(图像)的四叉树,就像谷歌地图风格的可缩放瓷砖越接近越精确。

简而言之,我希望能够拥有一个 1x1 图像纹理(覆盖一个 256 单位宽和高的平面),然后可以用 2x2 纹理替换,然后可以用 4x4 纹理替换,依此类推。

就像下面的图片示例……</p>

纹理级别

理想情况下,我想避免为每个缩放级别/段数创建不同的平面。一个完美的解决方案将允许我将单个平面分成 8x8 段(最高缩放)并即时更新纹理数量。所以它会从所有 64 (8x8) 段的 1x1 纹理开始,然后变为 2x2 纹理,每个纹理覆盖 4x4 段,依此类推。

不幸的是,我无法弄清楚如何做到这一点。我探索了materialIndex为每个面设置,但您无法在第一次渲染后更新它们,因此这不起作用。我试过查看 UV 坐标,但我不明白它在这种情况下是如何工作的,也不明白如何在 Three.js 中实际实现它——对于这种特定情况,文档/示例的方式很少。

顶点着色器是研究中出现的另一种选择,但我又一次不知道如何构建它。

我将不胜感激任何和所有的帮助,我敢肯定,这将是一种对其他 Three.js 用户很有价值的技术。

4

1 回答 1

0

不是 100% 确定您正在尝试做什么,无论您是在谈论纹理图集(查找和基于当前设置/缩放的不同纹理),但是如果您正在寻找基于四叉树的纹理,当您放大时会增加细节那么这本质上就是 mipmaping 的作用。

(因此,它也可以用来做各种奇怪的事情,但这完全是另一种冒险)

通常 mipmapping 是根据您使用的过滤自动进行的 - 但是听起来您需要对它进行更多控制。

我创建了一个隐藏在 three.js 源代码树中的示例,这可能会有所帮助:

http://mrdoob.github.com/three.js/examples/webgl_materials_texture_manualmipmap.html

它向您展示了如何手动加载每个 mipmap 级别,而不是让它自动生成。

高温高压

于 2013-03-21T00:56:40.680 回答