もさぷい

ゲーム、3D関連技術ついて

3次元点集合を使ったドロネー分割

ドロネー分割は、頂点群を与えるだけで、三角ポリゴンのメッシュを作ることができるというもの。

 

ドロネー分割を使えば、モデリングとか自動化できて楽になるかも?と思ったのと、勉強のために3次元のドロネー分割を行うプログラムを作ってみた。3次元空間に頂点群を与えると、それに応じたメッシュを作ってくれる。

 

こんなデータを与えると、

D3DXVECTOR3 v[10];

v[0] = D3DXVECTOR3(0.0f, 0.0f, 0.0f);

v[1] = D3DXVECTOR3(0.0f, 0.0f, 5.0f);

v[2] = D3DXVECTOR3(5.0f, 0.0f, 5.0f);

v[3] = D3DXVECTOR3(5.0f, 0.0f, 0.0f);

v[4] = D3DXVECTOR3(0.0f, 5.0f, 0.0f);

v[5] = D3DXVECTOR3(0.0f, 5.0f, 5.0f);

v[6] = D3DXVECTOR3(5.0f, 5.0f, 5.0f);

v[7] = D3DXVECTOR3(5.0f, 5.0f, 0.0f);

v[8] = D3DXVECTOR3(8.0f, 2.5f, 2.5f);

v[9] = D3DXVECTOR3(10.0f, 2.5f, 5.5f);

こんな感じになった。

f:id:kumaiga:20180501055021j:plain

f:id:kumaiga:20180501055025j:plain

形状を三角錐の集合で、つくることができるみたい。

 

頂点群を与えるだけで、メッシュを作ってくれるのは、おもしろい。しかし、次のことも気ががついた。

「意図する形状モデルを作るためには、意図する形状モデルを作るための頂点群を自分で考える必要がある。」

「テクスチャ貼るときは、結局、自分で座標を設定してやる必要がある」

「凹の部分を表現できない。」

 

いろいろ大変そう。

モデル作るなら、素直にモデリングソフト使った方がよさそうだと思った。