1

正しい位置にある立方体を 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 ...             ]

これは問題なく機能しますが、これらの各ブロックを 1 つのジオメトリにマージするのは時間がかかるため、私のユース ケースでは機能しません。

私の考えは、キューブをサーバー側でマージし、頂点のみをブロック型配列とともにクライアントに送信することです (上記と同じ)。私の質問は、これらの頂点の面を作成して、ジオメトリが異なるマテリアルの複数の立方体として表示されるようにすることは可能ですか?

クライアント側のストレスが軽減されるだけでなく、サーバーは各チャンクを一度だけマージする必要があるため、これはより良いと思います。現時点では、各クライアントはそれをマージする必要があります.

どんな助けでも大歓迎です!ありがとう。:)

編集:これを読ん
だ後、ちょっと考えました。初期化時に、ブロックを含む 10x10x10 のチャンク全体であるジオメトリを作成した場合、(上記のように) データ配列を送信すると、そこに存在するはずのないブロックの面を非表示にすることができます。非表示にするということは、顔に見えない素材を与えるということです。これはより高速であり、頂点を送信する必要さえないと思います。

その場合、どの顔を非表示にするかをどのように決定するかを誰か説明できますか? ありがとう。

4

1 に答える 1

1

「ネイティブ」Three.js JSON モデルをサーバー上で直接作成し、JSONLoader でロードするだけです。速いはずです。少し簡単に文書化されていますが、こちら: https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3.1で、examples フォルダーのサンプル ファイルを調べることができます。理解するのはとても簡単です。

JSON では、複数のマテリアルを持つことができ、面ごとにマテリアル インデックスを定義できます。

于 2013-06-09T21:27:50.717 に答える