ゲームを作り続ける人生を送るikosamiのブログ

Grass-Moss

Unity

Unityでの簡単なメッシュ変形のやり方

更新日:

Unityのメッシュ変形

こんにちは。無謀な挑戦を続けるプログラマーikosamiです。

 

2019年3月のUnity1週間ゲームジャム 「unity1week」に参加して、

下のgif動画のようなmesh変形を作りました。

本記事では、このメッシュ変形について解説していきます。

 

https://unityroom.com/games/earth_connected

ゲーム性が微妙ですが、サンプルだと思って遊んでみてくれると嬉しいです。

 

変形できるオブジェクト

これを間違えてしまうと、後述の説明がすべて動かないので、先に説明しておきます。

メッシュ変形は、メッシュの頂点を移動させることで形を変えるものです。

そのため、CubeやQuadのように、頂点数が少ないものはまともに変形することはできません。

Cylinderも、頂点数が微妙なため、まともに動くか怪しいです。

 

後述の説明を実際に行う場合は、SphereやPlaneで行うことをお勧めします。

当然ですが、頂点数が多すぎる3Dモデルで行うと、

すさまじい処理時間がかかる可能性もあるのでご注意ください。

 

メッシュ変形の基礎部分

この記事を読んでいるということは、メッシュ変形はすごく複雑そうな印象があるかもしれません。

ですが、メッシュの変形は それほど難しくありません。

 

まずは、見た方が早いと思うので、最低限にシンプルなサンプルを作ってみました。

unityで作った新規C#ファイルのStartをこれと入れ替えただけで、もうメッシュは変形されます。

y座標がプラスの頂点だけ、位置をずらす処理です。 ※全頂点を動かすと、ただ移動するだけにしか見えませんです。

これを、Sphereに付けると、こんな感じになります。もう変形できてますね。

 

 

各頂点座標そのものは、オブジェクトのローカル座標

頂点座標の数値は空間上の座標ではありません。

頂点の座標(0,0,0)が、そのオブジェクトの中心位置になります。

そのため、オブジェクトの位置がどこにあろうとも、

中心を変形させた場合はオブジェクトの中心が変形します。

 

 

各頂点座標の移動量(距離のみ)

座標の位置そのものはオブジェクトの中心位置からの座標ですが、

メッシュの頂点情報のVector3の値を動かしたときに移動する距離は、オブジェクトを普通に動かした場合と同じ距離になります。

なので、全頂点をy+=3したものと、オブジェクト位置をy+=3したものは同じ位置になります。

 

つまり、オブジェクトを思い通りに移動させることができる人なら、

メッシュの頂点を思い通りに移動させることは可能です。

 

続く・・・

少し長くなりすぎたのと、次が少し長いため、一旦記事を分けます。

続きはこちら

 

 

-Unity

Copyright© Grass-Moss , 2019 All Rights Reserved Powered by STINGER.