【发布时间】:2014-11-23 02:54:30
【问题描述】:
所以我正在尝试构建一个由瓷砖组成的基于 3D 的世界。
我已经成功地使用平面几何和高度值等来做到这一点。但现在我已经到了可能不得不改变一切的地步。
问题是我希望一个图块有多个纹理(使用着色器,因为我想混合它们)。我能够在全局范围内执行此操作(因此每个图块将具有相同的纹理 + 使用一些 uv 映射)。
但是我无法理解如何指定哪个图块具有哪些纹理(我有大约 100 个纹理),因为平面几何只有 1 个着色器材质。而且我也不确定通过着色器发送 100 个纹理是否是个好主意?
所以我的问题基本上可以归结为:
是否有一种体面/高性能的方式将图块/顶点链接到纹理,以便我可以保留平面几何形状。
- 如果是:如何?
- 如果不是:我是否应该分别创建每个图块(因此是 1x1 的平面)并以某种方式将它们合并在一起(性能/顶点混合?)所以它充当单个平面(在这种情况下,合并的平面由许多 1x1 平面)并使用每个图块(1x1 平面)的着色器?
这些事情一般是怎么做的?
编辑:
一些额外的信息,因为我的问题似乎不是很清楚:
我想要的是一个瓦片(2个面)有多个“materialIndexes”这样说。目前,我需要 1 个图块才能拥有 3 个纹理,因此我可以使用特定算法将它们混合到着色器中。
例如,我想要一个心形(红心/黑色背景)作为纹理,而不是基于我想要混合/更改其他 2 个纹理的颜色,这样我就可以获得木心和蓝色背景。或者例如我应该能够在正方形上均匀混合 4 个纹理,每个纹理占正方形的 1/4。但这里的重点不是必须对纹理做什么,而是如何为我的面/瓷砖指定这样的 3、4 或更多纹理。
【问题讨论】:
标签: javascript three.js textures tile