【VR,OculusGo,Unity】素人がメッシュカットについて実際に触って理解する Part3
前提知識がなさすぎて、まだポリゴンメッシュを作るところしか行なっていない。
それなのにPart3!
まぁのんびり学ぼう!興味のある新しいことを学ぶって楽しい。
今度こそポリゴンメッシュを切るPlaneを作る
参考記事
実践
とりあえずPlaneを作る
参考記事1を見ながらPlaneなるものを作る。
- CreateEmptyでGameObjectを作る
- 作ったGameObjectの名前をPlaneにする
- スクリプトCreatePlaneを作成
- 参考記事のスクリプトをコピペ
- CreatePlaneをPlaneにアタッチ
- 実行
なんだかよくわからないが、ピンクの四角ができた。
CreatePlaneを解読
public void Create() { _lineRenderer = GetComponent<LineRenderer>(); _plane = new Plane(); position = (_lineRenderer.GetPosition(0) + _lineRenderer.GetPosition(1)) / 2; var p1 = _lineRenderer.GetPosition(0) - position; normal = (Quaternion.Euler(0f, 0f, 90f) * p1).normalized; _plane.SetNormalAndPosition(normal, position); }
全然わからん。
Planeとはたった一つのpointとたった1つのnormalを持つ平面を表す構造体。 らしい。
lineRenderer.GetPosition
_lineRenderer.GetPosition
がまずわからん。
LineRenderer型でGetPositon関数を呼び出してる。Unityのライブラリを見てみよう。
ライブラリ見ても全然わからなかった。
参考記事2を見てInspectorのLineRenderer上にPositionという項目があることを知った。
たった一つのpointとたった1つのnormalを持つ平面を表す構造体
- このPointがPositionにあたる?
- Pointは増やせる
- Pointの型はVector3
InspectorでPositionのSizeを増やしたり、数字を変えると途端に理解できた。
Pointを増やしてそれぞれ数値を変えるとぐねぐねする。どっかでLineRendererは帯みたいなものと形容していた。確かにScene上でカメラを変えると向きが勝手に変わる。カメラに対して自動で法線が変わってるのか?
とにかくGetPosition(0)はPositionの座標を取得していることがわかった。
position = (_lineRenderer.GetPosition(0) + _lineRenderer.GetPosition(1)) / 2;
なのでこれは2つの点の中心座標を取得している。
これは2点の次の行からまたわからん
次の行もすんなり理解できると思ったら、なぜか0の地点から2点の中心座標分引いている。
// Position(0)から2点の中心座標を引く?? // ⇨なぜ引くんだ?わからん。 var p1 = _lineRenderer.GetPosition(0) - position;
そしてそのp1を使い、
normal = (Quaternion.Euler(0f, 0f, 90f) * p1).normalized;
法線を定義して、
_plane.SetNormalAndPosition(normal, position);
SetNormalAndPositionなるものを使って、planeに代入している?
だめだ。わからないことだらけ。
一旦力尽きた。ゆっくり解読していこう。
わからないこと
- plane.SetNormalAndPosition
- normal(法線)もう一回調べる
まとめ、感想
一歩ずつ一歩ずつ。