3

私は今朝から小さな Web プロジェクト (ここで見つけることができます) に取り組んでいます。Babylon JS を使用して小さなボクセル エンジン (Minecraft のようなテクスチャを使用) を構築します。

私は小さな世界 (サイズ 50 * 50) を作成しました。他のブロックは下にありません (最初のレイヤーを歩くだけです)。Java で同様のプロジェクトを作成しました。プロジェクトを最適化するにはどうすればよいですか? 遅れているからです。

Java では、次のことが必要でした:
- 立方体の内面の表示を無効にします (「backFaceCulling = true;」は知っていますが、面ごとに 1 つの画像ではなく、すべての面に対して 1 つの画像を持っているブロックでのみ機能します)。
- ブロックがすぐ隣にあるときの顔の表示を無効にします。
- VBO を使用します。
- 大きなオブジェクトの草を作ります (複数の草のキューブを作るよりも、すべての草ブロックで構成されています)。

どうすればこの4点ができるか知っていますか? (および最適化する他の方法)?
PS : 私のコード ソースはすべてこのメインにあります。ここに書いてくれませんか?

################################### 編集 ############## ############################


キューブを作成するには、img/block/ フォルダーの plg ファイルまたはその他のフォルダーを使用します。すべてID(0、1、2 ...)で名前が付けられています。iがフォルダーの場合、6つのjpgファイル(ブロックの各面)が含まれています。したがって、これを行うコードは次のとおりです。

function readAllCube(scene, tab, nb){
    for(var cpt=0; cpt<=nb; cpt++){
        tab.push(new BABYLON.StandardMaterial("cube"+cpt, scene));
        tab[cpt].backFaceCulling = true;
        switch(cpt){
            case 2:
                tab[cpt].reflectionTexture = new BABYLON.CubeTexture("img/block/"+cpt+"/"+cpt, scene);
                tab[cpt].reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE;
                break;
            default:
                tab[cpt].diffuseTexture = new BABYLON.Texture("img/block/"+cpt+".png", scene);
                break;
        }
    }
}

だから私はテクスチャのタブを持っています。しかし、テクスチャが複数の画像で構成されている場合、そのテクスチャへの描画を無効にする方法がわかりません(内側の面)。

すべてのキューブからカスタム メッシュを作成する方法がわかりません。625 ブロックよりも 1 つのカスタム メッシュをレンダリングする方が速いと思いますよね?

そうすれば、他のブロックのすぐ隣に隠れている顔を削除できると思います。

4

0 に答える 0