一般に、任意の3D設定での質問(「オブジェクトを正しい順序で並べ替えるアルゴリズムはありますか?」)に対する答えは「いいえ」です。オブジェクトが三角形のように単純な場合でも、そのようなアルゴリズムは存在できません。周期的に重なり合う3つの三角形を作成するのは簡単です。たとえば、3つの細長い三角形でZ軸を見下ろすことを想像してください。
- A:(2.1、1.9、1)、(1.9、2.1、1)、(-1、-1、0)
- B:(-2.1、1.9、0)、(-1.9、2.1、0)、(1、-1、1)
- C:(2.1、1、0)、(1.9、1、0)、(-2、1、1)
次に、画面上でAとBが重なり合う場所(XYポイント(0,0)の近く)で、Bが一番上になります(Z値が高くなります)。そのZ値は約0.66ですが、Aは約0.33です。同様に、AとCが重なっている場合(XYポイント(1、1)の近く)、Aが上になります。また、BとCが重なっている場合(XYポイント(1、-1)の近く)、Cが上になります。これらの3つの三角形を指定した順序で画面に描画すると正しい結果が得られるように順序を付ける方法はありません。
Nathan Reedが示唆しているように、アイソメトリックビューを使用しているという事実は、おそらくこの特定の問題を回避できることを意味します。問題は、それを回避する価値があるかどうかであり、それは環境と利用可能な特定の機能により依存します。あなたが開発しているほとんどのプラットフォームは、少なくとも何らかの形の3Dレンダリングをすぐに利用できますが、私の最初の傾向は、目的のためにその上に便乗することです。