私の Unity プロジェクトには、大幅に最適化する必要がある動的メッシュ システムがあります。現在、実行時に重複する頂点を削除してメッシュを最適化するアルゴリズムを探しています (メッシュは 1 つの巨大なメッシュに結合されます)。同じスペースを占めていた重複した面を削除するのはかなり簡単でした。なぜなら、それらがしきい値内で同じスペースを共有している場合、両方とも安全に削除できるからです (それらは表示されないため)。
特定の方法で頂点を削除する必要があるか、メッシュが完全に台無しになっているため、頂点の重複にもう少し問題があります。最初の試行の後、Vector3
頂点を含むオブジェクトの配列を取得し、それをある程度操作することができました。ただし、メッシュ トポロジを詳しく調べたところ、他のトポロジを削除した後にさらにマージを行う必要があるように思われるため、削除は半分に過ぎないようです。
これは私が本質的に立ち往生している部分です。一見すると、かなり単純だと思いました。削除する必要がある頂点が接続されているすべての三角形を取得し、残っている頂点に三角形を再割り当てします。しかし、実際にはそれほど簡単ではありません。
まず、もっと簡単な方法はありますか?Unity が頂点をマージするスクリプトをどこかに持っていないこと、または少なくとも例がないことに非常に驚いています。第二に、より良い方法はありますか? 空間ハッシュに出くわしましたが、何とか頂点をマージする部分でまだ立ち往生しています。3 番目に、実際の頂点をマージします。可能な限り最も効率的な方法でこれを行うにはどうすればよいですか?