仅从顶点创建面?

时间:2013-06-09 20:29:12

标签: javascript merge three.js

我正在尝试通过将正确位置处的立方体合并为一个几何体然后创建网格并绘制它来创建一个类型为Minecraft的(仅立方体)地形。目前我正在从Node.JS服务器发送一个数组,该服务器包含构成每个“块”的块类型。然后代码知道给每个块的材料索引。例如,10x10x10块的数据将是:

[1,1,1,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,1,1,
 2,1,1,1,2,2,1,1,1,2,
 etc ...             ]

这样可以正常工作,但将每个块合并为一个几何图形非常耗时,因此对我的用例不起作用。

我现在的想法是合并服务器端的多维数据集,然后只将顶点与块类型数组一起发送到客户端(与上面相同)。所以我的问题是,是否可以为这些顶点创建面,以便几何体显示为具有不同材质的多个立方体?

我觉得这会更好,因为不仅客户端压力更小,而且服务器只需要合并每个块一次,而目前每个客户端都需要合并它。

任何帮助将不胜感激!谢谢。 :)

修改
刚刚reading this之后想过。如果在初始化时我创建一个几何块,这是一个带块的整块,所以10x10x10,然后当发送数据数组时(如上所述),我可以隐藏那些不应该存在的块的面。通过隐藏,我的意思是给脸部一个看不见的材料。我相信这会更快,甚至不需要我发送顶点。

在这种情况下,任何人都可以解释我将如何确定隐藏哪些面孔?感谢。

1 个答案:

答案 0 :(得分:1)

您可以直接在服务器上创建“本机”Three.js JSON模型,然后使用JSONLoader加载它。应该快。它有点简要记录,但在这里:https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3.1,您可以研究示例文件夹中的示例文件。这很容易理解。

在JSON中,您可以拥有多种材质,并定义每个面的材质索引。