なんか凄いのがMITライセンスで公開されたのを知って、取り急ぎ使い方をば。メッシュを変形させるライブラリです。以下のようなことができます。
沢山種類があるので、詳しくは上記のGitHubリポジトリーで動画が見れます。
目次
要件
Unity2018.3以降が必要です。
インストール方法
依存関係を解決する必要があるので、リポジトリーのファイルをそのままプロジェクトに突っ込むだけでは動きません。以下のインストール手順に従います。
Deform/Installation.md at master · keenanwoodall/Deform · GitHub
- Unityを閉じておきます
- 組み込みたい2018.3以降のUnityのプロジェクトの
Packages
フォルダーをエクスプローラーなどで開きます
manifest.json
を何らかのエディターで開きます
- すでに書かれている部分はそのままにして、
"dependencies": {
の下に以下の行を追加します
// : "com.beans.deform": "https://github.com/keenanwoodall/Deform.git",
- 上書き保存してエディターを閉じます
以上できたら、Unityを起動してプロジェクトを開きます。そうすると、自動的に依存関係も含めてDeformがインストールされます。
原文には、ZIPをダウンロードして組み込む手順も掲載されています。
変形させる
以下を参考に、Twistでキューブ(Cube)をねじってみます。
Deform/GettingStarted.md at master · keenanwoodall/Deform · GitHub
ねじるためのCubeを作成する
変形のための頂点が必要なので、通常のGame Objectから作成するCubeだとうまくいきません。Deformがそれ用のCubeを作ってくれますのでそれを使います
- ToolメニューからDeform > Creatorを選択します
- Creatorウィンドウが開きますので、Create Deformableボタンをクリックします
Wireframeを表示してみると、以下のように1辺が16分割された立方体であることが確認できます。
ちなみに、普通に作ったCubeは以下の通りなので、辺の途中がねじれないのでうまくDeformできません。
- Hierarchyウィンドウで、作成したDeformable Objectをクリックして選択したら、CreatorウィンドウのTwistボタンをクリックします
以上で、TwistのDeformerが設定されました。
ネジってみる
- 作成したCubeの子供に追加されたTwistオブジェクトを選択します
- Cubeの上下にオレンジ色の円柱状のハンドルが表示されるので、それをドラッグするとCubeがねじれます!
- Twistの座標や回転、大きさを変化させると、ねじれ方が変わります
Cube以外のメッシュを変形させたい場合
既存のモデルに適用したい場合は、そのモデルを選択して、CreatorウィンドウのCreate DeformableボタンをクリックすればOKです。あとの作業は同じです。
スクリプトから使う
利用したいコードの先頭に以下を追加します。
using Deform;
Twistを制御したい場合は、TwistDeformer
のインスタンスをInspectorかGetComponent<TwistDeformer>()
で取得して、StartAngle
やEndAngle
プロパティーに値を設定すれば動きます。
using UnityEngine; using Deform; public class TwistTest : MonoBehaviour { TwistDeformer twistDeformer; float now = 0; private void Awake() { twistDeformer = GetComponent<TwistDeformer>(); } void Update() { now = Mathf.Repeat(now + Time.deltaTime * 360f, 360f); twistDeformer.StartAngle = now; twistDeformer.EndAngle = -now; } }
上記のようなスクリプトを作成してTwistオブジェクトにアタッチすると自動的にねじれます。
詳細は...
英語ですが、以下の動画で操作が分かります。控えめに言って凄いです。