ぐーるらいふ

底辺。

【Unity】メッシュカッターについて その2

これを切断するわけだが

 

ghoul-life.hatenablog.com

 

前回でメッシュの作り方は書いた。
メッシュカッターはズバッとこれを切断する。
ポリゴン数が増えても各ポリゴンで繰り返すだけだ。

 
どっちに頂点があるかチェックする

3つの頂点があり、これを2つのグループに分けた場合、以下になる

  • 全部1グループに属し、2グループは0になる
  • 全部2グループに属し、1グループは0になる
  • 1つが1グループに属し、2グループが2つ
  • 2つが1グループに属し、1グループが1つ

f:id:ghoul_life:20170518002102p:plain

 

外を切る!という考えがあることに注意。

 

この内

  • 全部1グループに属し、2グループは0になる
  • 全部2グループに属し、1グループは0になる

この2つは切る必要がないため、後回しにする。

 

グループ分けの方法


正直なんでもいい。自作でもいいし。
有り物で行くならUnityではPlaneを使うのがシンプルだ。

docs.unity3d.com

 

3DオブジェクトにあるPlaneでは無く、
たった一つのpointとたった1つのnormalを持つ平面を表す構造体だ。

 

この

Plane.GetSide(Vector3)


これを使う。

内部的には
その頂点が法線方向にあればtrue。
無ければfalseなだけだ。

これを使えば一定の位置からどっちのグループにあるか計算出来る。
まずは、Planeを作るスクリプトを組んでみよう
ここではLineRendererで引いた線に沿ってplaneを作る。

 

Create Plane source file

 

こんな感じにシンプルに。

OnDrawGizmosSelected()でPlaneの法線が見えるようにしている。
一歩踏み込んでマウスで自由に線を引けるようにして、
その都度Planeを作ってもいい。

 

f:id:ghoul_life:20170518003002p:plain

 

「もうこれで頂点分けてメッシュ作るだけでええやん」
と思ったかと思います。そのとおりです。

次はいよいよ本当にカットします。