次世代クリエイター
文化庁やら経済産業省やらの認定する「次世代クリエイター」とやらには年齢制限で足切りされる悲しき旧世代の皆さんこんにちは。世の中のインディゲーム制作者の大半は特に支援されることがなくとも自力で頑張っていると思いますが、こうも公的に線引き指さるとガッカリしますね。モノづくりに年齢制限はないと思いますが
Lattice Modifer
偶然X(旧Twitter)での投稿を見掛けて気なったので購入しました
3Dモデルのメッシュを変形させて動かすことが出来るアセットです。どんな機能を持つアセットなのか文章で説明するよりデモの動画を見た方が早いので下に載せます。
メッシュを変更させるアセットはUnity Asset Storeに複数ありますが、このアセットの特徴は3Dモデルの各頂点をそれぞれ移動させるのではなく、モデルにリンクづけられたLattice(格子)の頂点を移動させることでメッシュの変形を行う事にあります。
下の動画は黒い立方体で表現されたLattice(格子)の頂点を動かすと、それにリンクづけられた3Dモデル(アヒル)が紐づいて変形する様子になります。
3Dモデルに対して分割等の処理を特に行う必要はないため、非常に簡単にモデルの変形を行うことが出来ます。
使い方
Lattice Modifier の使用を開始するには、シーン内に空のゲームオブジェクトを作成してそこに「Lattice」コンポーネントを追加します。
シーン内に黒い立方体が出来ますが、これが変形を行うためのLattice(格子)となります。
次に変形させたい3DモデルをLattice(格子)と関連付けさせるため、「Lattice Modifer」コンポーネントを3Dモデルに追加します。
この時、3DモデルにはMesh Rendererが存在する事が必要です。
3DモデルがMesh RendererではなくSkinned Mesh Rendererを使用している場合は「Skinned Lattice Modifer」を追加してください。
InspectorのLatices欄に先ほど空オブジェクトに追加した「Lattice」コンポーネントを指定します。これで3DモデルとLattice(格子)がリンクづけられたので、エディタ上でLattice(格子)の頂点を動かすとそれに応じて3Dモデルも変形するようになります。
先程のデモ動画の例を見てみるとパイプの入口部分、出口部分にLattice(格子)が作られていてアヒルの3Dモデルが関連付けられていることが分かります。
また、パイプ部分はそれ用にLattice(格子)が作られてパイプが膨らむような変形が設定されています。
これをアヒルの動きに合わせてLattice(格子)のアクティブ化(true/false)を切替え、パイプ用のLattice(格子)を形状に沿って動かしてやると上の動画のような動きになります。
アニメーション設定
Lattice(格子)の各頂点の位置、角度はAnimationで記録して再生することが出来ます。
Animationウィンドウの録画ボタン押下してLattice(格子)の頂点を動かし記録していくと、モデルが変形するアニメーションを作ることが出来ます
このAnimationを設定して実行モードで動作させるとこんな感じ
今回はアニメーションを利用して動かしていますが、スクリプトからでもLattice(格子)の各頂点を動かすことができます。
その為のAPIは色々用意されていますが、代表的なものを上げると
/// 現在位置からの移動量を設定して移動 void SetHandleOffset(int x, int y, int z, Vector3 offset); /// ローカル座標を指定して移動 void SetHandlePosition(int x, int y, int z, Vector3 position); /// ワールド座標を指定して移動 void SetHandleWorldPosition(int x, int y, int z, Vector3 position);
他にありますが残念ながら各APIに関してはドキュメントが用意されていないので、実際に動かして確認するしかないようです。
注意点
このアセット自体はBuilt-in,URP,HDRPどれにも対応していますが、サンプルシーンはURPのみです。
また、通常のImportではサンプルは含まれておらず、パッケージマネージャから必要なサンプルをインポートする必要があります。
- パッケージマネージャのPackageからIn Projectを選択
- OtherからLattice Modifierを選択
- Samplesタブを開いて各サンプルのImportを押す