1

我正在尝试通过将正确位置的立方体合并到一个几何体中,然后创建一个网格并绘制它来创建一个我的世界类型(仅限立方体)地形。目前,我正在从 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 ...             ]

这可以正常工作,但是将这些块中的每一个合并到一个几何图形中非常耗时,因此不适用于我的用例。

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

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

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

编辑:读完这篇文章
后才想到。如果在初始化时我创建了一个包含块的整个块的几何图形,因此为 10x10x10,那么当发送数据数组(如上)时,我可以隐藏不应该存在的块的面。通过隐藏,我的意思是给脸一个看不见的材料。我相信这会更快,甚至不需要我发送顶点。

在那种情况下,谁能解释我将如何确定要隐藏哪些面孔?谢谢。

4

1 回答 1

1

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

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

于 2013-06-09T21:27:50.717 回答