シェケナベイベー

れっつだんしんぐ!

Unityリハビリめも

しばしUnity学習をサボってたおぢさんw

まずは最新の環境チェックから。

 

Unityエディタバージョン

LTS版は2021.3.8f1を確認。通常通り従来LTS版の改良、改善ルート。

最新版は2022.1.3f1を確認。以下のテーマへの注力が見られる。

・HDRP/URPモデルへの更なるシフト

・DOTS対応。緩やかではあるがDOTS方向への移行は確実に

・2D機能の充実は一段落の気配

 

なおUnityHUBも地味にアップデートで3.2.0へ。

 

最新Techデモなど

youtu.be

電ファミニコの解説動画が分かり易い。筋肉やFur表現はCG業界初期からある注力テーマであるが、プリレンダでないリアルタイム描画でもここまで来たのだなぁと感慨深い。

ライバルUE5の方が派手さでは先行してる感もあるが、これらをツールとして落とし込む手法としてはUnityに蓄積がある。すなわち本デモでの技術は現在βであるが近日リリース予定の2022.1.3f1に搭載予定であるからだ。

 

まず体感レベルではあるが実際に触った限りにおいてUE5はPCとGPU力任せでゴリゴリ描画しているツールの手応えなのだw 言い換えれば最先端のマシンを開発機に用意できれば非常にパワフルなのがUE5エンジン。そしてそれをそのまま製品化出来るかと言えば微妙。デチューンを必要とするだろう事は想像に難くない。なお悪い事ばかりでもなく、先端を突っ走る事でのみ得られる技術の蓄積が時代を作って来たのも事実でありいずれ民生レベルに落とし込まれるのは時間の問題ではあるのだ。

 

対するUnityは現場での実用的な開発エンジンたろうとするポジションを取っている。ミッドスペックPC&GPUであれば十分恩恵を受けるであろう範囲での美麗な表現力をエディタレベルで提供し、成果物に関しても市場に出回っている物を可能な限りカバーすべく整備している印象は強い。だが同時にそれゆえにスピード感や先端感にはUEエンジンに一歩譲るというのがUnityの立ち位置でもあると思われる。

 

IronSource社との絡み

Unity買収劇のニュースが多少流れて来ていたのは既知であるが詳しくは調べて無かった。ざっくり理解するに

・IronSource社はイスラエルにHQを置くモバイル広告を主力とする世界企業。

・IsonSource社自身も開発エンジンを持っているがUnityを取り込めればカバレッジ範囲が爆発的に広まる期待。Unity側はどうしても弱かったマネタイズ部分をIronSource社のノウハウに期待出来るという事で、わりとWin-Winな合併策とみられる。

・そこに待ったをかけたのがIronSource社と近しいAppLoving社。こちらはUSAはLAがHQで自社ゲームエンジンは持たないがモバイルに関するマネタイズに特化した企業の印象。

 

共通するのはモバイルプラットフォーマーはまだイケるとの判断であろうか。フリーミアムモデルは失墜の気配は強いが、まだマネタイズ可能な手法は十分残っているとの判断であろうし、確かにコンソールゲーなどとは比較にならないユーザ数が眠っているのも確かである。

 

となれば汎用開発ツールを目指すUnity社としては何処かのモバイルに強い企業と手を結ぶのは悪い判断では無いと同時に、開発者もなんらかのモバイルデバイスでのリリースを今後強く意識して行く流れはトレンドになるのだろうなーとも。

 

AI方面への対応は?

こちらはニュースがGigazineでしか確認出来ていないので信憑性は怪しい。

gigazine.net

がしかし、AI分野は有力ではあるが既にビジネス的にはレッドオーシャン化が早々に起きるであろう事も分かり易く、昨今であれば例のmidjourneyではないが開発した技術で自分たちの食い扶持を食ってしまう危うさも感じ取れる。

 

ならばと言う判断で早期にAIに関する開発人員を捨てたと本記事から読めなくもない。切られた人材がAI分野であるなら引く手数多であろうしなぁ。日本的肌感からするとレイオフは悲劇に映るがあちらではごく普通であるし、なんなら自分から積極的に渡り鳥して行く文化だもんな。

 

ゆえに、Unityに関するAI機能開発に関してはいったん停止しているのかもしらんね。UnityでML学習も提供されていたけど、その後に続くコンテンツが一向にリリースされぬし。

 

 

PS4コンをめぐる我が闘争の記録ッー!

吾輩とPS4コントローラーをめぐる顛末はツイッターに放流してしまうには少し惜しいのでブログにまとめて弔う事とする。南無南無。

 

なお大前提であるが、吾輩コントローラマニアで、PC用だけでも軽く両手近く所有歴あるしX箱系もPS系もわんさか互換機含めて乗り換えてきた変態勢。なので参考になる事はまったく書かれてないし書く気もなひ。またコントローラの思い出を語るには流石に壮大に過ぎるし、記憶も既に怪しいのでPS4コンにまつわる部分のみとさせて戴いた。

 

闘争の始まり

さて。あれはニーソがPS5を出荷し出した頃の事。PS4コントローラーが不調を叫び始めたのが旅の始まりだった。ニーソはPS5をじゃんじゃか出荷して世代交代を促す計画であり、つまり当時のニーソはPS4関係の生産ラインを全部PS5にシフトしたと云うワケだ。コントローラー含めて。つまりPS4コントローラが流通市場から急速に無くなる状況が発生した。これに目を付けたのが2種のビジネスマン。

  • 転売業者
  • コピー業者

どちらもチャンスに賭けたのだろうしそれを咎める気は吾輩にはなひ。ただし、転売業者を儲けさせるのはシャクではあったので出回り始めた中華コントローラーを試す事にしたのが始まる。厳密にはHORIコントローラなども試しているが話題としては小さいので割愛ッ!

 

中華コンその1

記憶では最初に買ったのはWirelessタイプの互換コントローラー。お値段は正札の半値以下と攻めているのでその理由を調べた事がある。そこで判明したのが中華系のIT系コピー業者の氾濫ぶり。PS4本体はCPUなどの入手ルートが限られるので原価を絞ろうにも無理があったが、コントローラなどの周辺機器は基盤もパーツもぶっちゃけコピーし放題。量産効果もあるだろうがハード原価おそらく1000円以下で十分ペイするビジネスとして成立したのだろう。

そして肝心のコントローラ本体の方と言えば想像していた通りあちこちの出来が悪い。タッチパッドの押し込みがガタついたり、ボタン精度や反応が悪かったり。終いには3か月程度でオシャカと言う体たらく。研究用に購入したしフトコロの痛みも大した事は無いのでさっそく分解してパーツ類もチェックする流れ。素人調べではあるが原価削減の努力はあちこちに見て取れる。なおパーツ取りとして流用出来たのはバッテリーパックのみ。それも600mAとかなり容量低めでここでも予算ケチっているのが努力の証。

 

※中華コンその2

今度はUSB有線タイプを試してみた。同様に操作系の手触りがやはり落ちる。そして今度はUSBケーブルのコントローラからすぐ出る部分で被膜が破れたなと思ったらすぐに断線を起こしこれまたあえなくオシャカ。ケーブルの手抜きはイカンねぇ。目ぇ細めて調べてみると撚線が3~4本とまるで耐久性考えて無いチープっぷり。USBケーブル全体を置き換える修理も考慮してみたが、その前にコントローラ本体を分解するとパーツ類に流用出来るものも無くこりゃ捨てたほうが早いかと断念。有線/無線で云えば中華IT機器は無線のが逆に信頼置けそうかもなぁと云う無駄知識を得る。

 

※その後

そうこうしているうちに本家ニーソがPS4コントローラを再生産し始めて転売ヤー達は無事滅亡したが中華コントローラー業者はさらに跋扈し価格競争を始める始末。2000円台前半まで落ちてくると云う争いのなか、最新を調べると1000円台の投げ売りとか怪しすぎて笑える。

www.amazon.co.jp

なお中華コン1のバッテリーパックは純正コントローラに装着してしばらくは保ったのだが、急速に充電&放電頻度が増えてゆきやがて充電が効かなくなった。再び分解してみると例のバッテリパックがぷっくら膨らんで破裂しそうになっているのが確認された。剣呑である。

 

※PS5コントローラはPS4で使えるか?

そのままでは流用不可能。ただし以下の様な対応パーツは出ている模様。端的にコンバータなので遅延が発生したりするのはご愛敬だし、吾輩自身で試す気もなひ。誰か~?

www.amazon.co.jp

 

※その他PS1~PS3コンはPS4で使えるか?

これも結論から言えばコンバータ噛ませば可能。ただしPS3コンにあったジャイロ=6軸センサはPS4コンで廃止された点に注意だし、その他SHAREボタンなど互換性無い機能はどうしようも無いので現実味は無い。

 

※おまけ

世に蔓延る転売業者であるが吾輩は嫌いでは無いし、それこそ行商が成立し出した太古から連綿と続く基本中のキホンでもあるので否定する気はさらさらない。ただ吾輩自身がそいつらに儲けさせたくないと思うだけである。そもそも安く仕入れて高く売るのは商売における基本中の基本であるし在庫を抱えるというリスクを冒しているのでその点を咎めるのはお門違い。もちろん法的にアウトなケースもあるだろうが、商売人の思考を少しは勉強すべきだろうし単純にレッテル張るのも間違いであろう。

 

またIT系コピー業者も言葉は悪いが現代に於いてはAppleみたくファブレス=自社工場を持たぬのが主流なので一概に悪いとは言えぬのだ。台湾TSMCなどが大手の代表であるが本土に行けばもっと細分化された半導体集積回路の生産業者はわんさか居るだろう。例えば今回のテーマであるPS4コントローラにも基盤、チップ、パーツ等は乗っているが基盤などは立ちどころに解析するどころか設計図すらおそらく所有している。なんなら乗っているパーツのコピーまで行うが、パーツはパーツでそれ専門のコピー業者が居る。つまりリスクテイカーが資本を用意してGoサイン出すだけでじゃんじゃかコピー製品が生産されるのがいたって普通だし、ファッションデザインブランドよりVery Easyな産業なのだ。

 

そしてその進化速度は恐ろしく早い。今回のPS4コンの事例を見て学習すべきは安かろう悪かろうではもはや無いのだ。いかにコストを安くかつ素早くニーズに応じてリリース可能な産業体制が整っているかどうかだ。確かに耐久性は落ちるがこれだけ安ければ買いなおせば良いだけだし、なんなら2個3個まとめ買いすれば良いだけという発想なのだ。

 

日本国内では出てこない発想だよな。品質至上主義で保証期間内は確実に動作するが保証期間超えたらストンと壊れると云われた様な品質管理はもはや時代の遺物なのだ。あえて修正するなら品質保証できるギリギリのラインを見極める努力をもっとすべきだったのだ。ブクブクに太るのは簡単であり、そこから削るのは非常に難しい道理である。

 

※まとめ

ともあれ吾輩単純にコントローラマニアであるし、歳くったとはいえ未だ反骨精神は消えておらぬ所存。納得しかねるものには敢然と立ち向かいたいと願うし、安易な解決はなんの骨身にもならんと思っておるヨ。そこんとこヨロシク!!

3Dアニメーション処理の学習まとめ~その5


※本ページはUnityエディタ2021.3.5f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。Unity Learnにおいては2.1章からのまとめになります。

 

assetstore.unity.com

learn.unity.com

 

Unityにおける3D Animator機能の学習まとめ。2.3からとなります。

 

モデル固有のアニメーション設定について

本章はInspectorに表示されるモデル固有のアニメーション設定に関してまとめる。

まずProjecrtから2.3 - Model specific animation import settingsを開きHumanoidIdleを選択状態にした際のInspectorを以下に示す。

デジタルコンテンツ作成(DCC)プログラムからデータをインポートする場合、モデルには2つのセクションに分かれたアニメーション設定がある。

モデル固有の設定:モデルでインポートされた全てのアニメーションに影響する

アニメーション固有の設定:モデルでインポートされた個々のアニメーション全てに影響する。

これらを踏まえた上でこれからまとめる設定は上記InspectorのAnimationタブに集約されている。

 

モデルアニメーションの基礎

Unity のモデルは三角形のメッシュで表されます。モデルをアニメートする場合は、三角形の位置と形状が変わるようにメッシュを変形する必要があります。

モデルに含まれる三角形が多すぎて、各モデルを個別に移動できない場合があります。モデルの定義が高いほど、三角形の数が多くなります。アニメーション中に各三角形を個別に移動する代わりに、モデルはアニメーション化される前にスキン設定されます。

スキニングは、三角形を構成する各頂点に「ボーン」への依存を与えます。このボーンはアニメーションデータを使用して移動され、関連付けられた頂点はボーンの位置と回転に基づいてどこにあるべきかを判断します。

ボーン階層とそれらがメッシュに与える影響は、リグの一部です。リグの詳細については、 2.8 汎用リグの設定を参照してください。

 

Unity では、ボーンはトランスフォームで表されます。このチュートリアルでは、次の 2 種類の変換について説明します。

  • Forward Kinematics(FK)
  • Inverse Kinematics(IK)

 

Forward Kinematicsについて

変換には階層構造があります。これは子変換が親に対して相対的に移動することを意味し、同じことがBonesにも当てはまる。例えば手の骨の位置は、下腕の骨の位置に依存するし、連鎖して上腕の位置に依存して位置が決まると云う事である。

この依存関係はForward Kinematics(FK)と呼ばれ、目的の全体的なアニメーションを取得する為に、必要に応じて位置と回転のプロパティを取得できるため、アニメーションの手法としてはよく利用される一つであります。

 

Inverse Kinematicsについて

アニメーションのもう一つの手法がInverse Kinematics(IK)と呼ばれる手法で、FKと逆の発想に基づく理論です。すなわち、骨のチェーンを想定した場合に先端から末端へと向かって終端位置から逆算するアルゴリズムに基づきアニメーションを計算で求める手法です。

IKを使用してDCCソフトウェアでアニメーションを作成し、それをUnityへインポートする事は可能ですし、現在はこの手法が効率的であるので主流です。(ランタイムアニメーションにも使用可能)

 

これらの基本を理解する事はモデルアニメーションをUnityにインポートする際に利用できる様々な設定を理解するのに役立ちます。

 

Import Contraints & Import Animation設定

以下の様にInspectorのAnimationタブ設定群の中の上位に位置する設定をですが、

Import Contraintsは関節の動きに関する制限です。この設定にチェックを入れてインポートを行うと元データに含まれている関節の稼働領域がUnity側にも取り込まれます。

Import Animation設定は言葉通り、元データに含まれるAnimationデータをインポートする際にチェックを入れます。これを外すとUnityのClipは生成されません。

 

Bake Animation設定は少しややこしいが、IKとしてインポートされたアニメーションをBakeと呼ばれるプロセスを通じてFKに変換する設定となります。(通常は使わない) この機能にチェックを入れて利用するには以下の上限がある。

  • 読み込まれたアニメーションはMaya,3DS Max,Cinema4D形式のいずれかである。
  • アニメーションはIKまたは趣味レーションデータとして記録されている。

Resample Curves設定はヒューマノイドタイプのリグが自動的にResampleされる為に汎用リグを搭載したモデルでのみ利用可能となっている。この設定を利用すると回転にオイラー角を使用してインポートされたアニメーションを、代わりにQuateernion角度に変換する。

Anim. Compression設定はディスク上&メモリ内の両方でインポートされた元のファイルから近似値を作成する事によってアニメーションサイズを縮小する方法を指定します。各オプションは以下の通り。

  • Off:圧縮しない
  • Keyframe Reduction:同様の値を持つ一部のKeyフレームを圧縮しサイズを圧縮。このオプションを選択するとさらに圧縮で許容されるエラー量に関するサブオプションが表示される。
  • Optimal:最適な設定は以下参照。

 

Anim. CompressionのOptimal設定

Optimalを設定した場合にはUnityは最初にKeyフレームリダクションの使用を試みます。アニメーションカーブの値の変更頻度が高い場合には圧縮によるサイズ現象はあまり期待できません。この場合、アニメーションクリップの簡略表示が各フレームの値間の線形補間とともに使用されます。これによりアニメーションクリップのサイズは最小となりますが、アニメーションの外観に影響が出る事になります。

Keyframe Reduction設定の一部としてKeyフレームを削除するかどうか決定する時、Unityは特定のKeyフレームの位置とスケール値の両方を評価します。これは、Keyフレームの削除が特定の誤差範囲内のアニメーションカーブに影響を与えるかどうかを調べる為に行われます。Keyフレームがエラー設定値の余白の外側にある場合、Keyフレームは削除されません。

位置とスケールに非常に大きな値がある場合はKeyフレームが削除される可能性が高くなります。このプロセスは回転誤差を利用した回転曲線でも同様ですがQuaternionが評価されます。

Animation Custom Properties設定はモデルの作成に使用されたパッケージでアニメーションされた追加プロパティをインポートするかどうかのオプションです。詳しくはデータ作成元のマニュアルなどを参照してください。

 

以上、モデル固有のアニメーションインポート設定に関してほんの触りだけ解説しましたが、作成元のデータと密接に関係する機能でもあるので詳細はここではまとめきれません。さらっと流していただいて構いません。

 

 

3Dアニメーション処理の学習まとめ~その4


※本ページはUnityエディタ2021.3.5f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。Unity Learnにおいては2.1章からのまとめになります。

 

assetstore.unity.com

learn.unity.com

 

Unityにおける3D Animator機能の学習まとめ。2.2からのまとめとなります。

 

最初に

まずはProjectから2.2 - Editing Animation Clips>ScenesからStreetLampExampleをダブルクリックで開く。2.1の復習としてAnimator関連のオブジェクトとClipなどを確認する。確認できたら以下の様にアニメーションクリップ編集ウィンドウを開き、Add Propertyボタンが利用可能な状態にある事を確認する。(HierarchyでStreetLampを選択しないとダメだぞ)

 

Add Propertyをクリックしたら表示されるPopupからStreetLamp>Lightと展開してColorを選択して右側にある+をクリックすると、Spot Lightの下に新たにプロパティがバインドされる事を確認してほしい。

 

ここまで確認できたら次は実際のアニメーションを作ってゆく。追加したColorを展開すると以下の画面になる事と、Keyが最初と最後の2点に追加される事が確認できるはずだ。(Curvesモードであれば新たな直線と2個のKey点)

 

まずはDopesheetモードでの編集について。このモードではKeyを全把握するのに便利な編集モードであり追加したColor値を見てみると最初のフレームと最終フレームで1となっている事が確認できる。これを編集する例として10フレームまで進めてColor.R値を5にしてみるとKeyフレームが追加される事が解る。Curvesモードであればより変化が解るだろう。またKey部分をクリックしたままドラッグ移動する事によりKeyフレーム位置を移動させることが出来るし、接線ハンドルを操作する事によりカーブの緩急変化を編集することも可能だ。なおCurvesモード独自の編集機能としてKey値部分を右クリップしてPopupするメニューからEditKeyを選ぶ事によりそのKey値を直接編集する事も可能となっている。

より実践的なアニメーションカーブの編集

既に編集モードをある程度触った前提で上記の様なCurves編集状態を想定するが、赤く四角で囲まれた部分に着目する。接線ハンドルはすでに説明したが実はCurvesはより変化にとんだ編集を行う機能が用意されている。Key部分で右クリックするとPopupするメニューを再確認すると以下が確認できる。

Clamped Auto:現在のデフォルト。アニメーションがよりスムーズに描画される設定

Auto:Unity3系の旧システムのデフォルトでClamp処理が含まれない

Flee Smooth:Clamped Autoと似た設定。

Flat:接線ハンドルが水平となるFlee Smoothのバリエーション

Broken:接戦ハンドルの左右が独立して自由に設定可能な編集モードとなるがスムーズさには欠けるので利用には注意を要する。

 

※Left Tangent以下はBroken指定のサブオプションでここでの詳細は割愛。詳しくはマニュアルを参照されたい。通常はClamped AutoもしくはFlee Smooth指定で十分である。

 

録画モードを利用したKey編集

赤い録画ボタンを利用したKey編集モードも補足しておく。この編集モードは正確性には欠けるが直感的にアニメーションを作成するのに長けており、大雑把に動きを付ける際に重宝するかもしれない。例えば右に移動を行うことを想定した場合、数値で指定管理するよりも、実際の移動を見た目で操作してアタリを付けて初期値と終値を出してから細部を詰めてゆくと云った編集スタイルだ。代表的なのはストップモーションを利用したクレイアニメの表現方法などであるな。少しづつフレームを進めながら、手足の移動先をちまちまと画面内で操作するケース。

 

複数のKeyを同時に編集する方法

今までの説明だと単体Keyの編集しか説明していないがもちろんまとめて編集する操作も用意されている。モード毎に操作方法が異なるので以下にそれぞれまとめておく。

 

DopesheetモードにおけるKeyの複数選択操作

本モードの特徴としてKeyの時間値のみしか表示されていないのでBindされた値は変化しない事にまず注意すること。そのうえでDopeシート上で左クリックホールドを開始すると領域選択モードが開始される。そのまま領域を操作してまとめて選択したKey値を囲む様に出来たらクリックを外せば選択完了だ。選択された複数Keyはまとめて移動可能だが先にもまとめたようにフレーム時間しか編集できないことには注意すること。

 

※Ripple編集モードが用意されているがよくわからんかったw

 

CurevesモードにおけるKeyの複数選択操作

Dopesheetモードと同様に領域選択が可能となっているが、こちらではBind値も移動する事になる違いに注意すること。なおCurevesモード特有のUIとして、複数Keyを選択状態にした場合には、垂直のみor水平のみの編集ロック機能が用意されている。

 

まとめ~BounceBallアニメーションを編集する~

本章のまとめとしてバウンドするボールのアニメーション編集を例に挙げる。Projectから2.2 - Editing Animation Clips>ScenesとたどりBallExampleシーンを開いてくれ。続けてAnimationClipsフォルダ内のBounceクリップをダブルクリックで開き、SceneのBallをクリックすると編集モードに入れるはずだ。Runした様子とClipのCurvesモードの内容などを確認して、今までに学習した内容に基づき色々編集を試してみて欲しい。例えば以下の課題などを確認しつつRunしながら挙動を確認する。

  • 録画モードでのアニメーション編集
  • Keyの追加、編集、コピペなど
  • 複数Keyの操作

 

これまでの学習でUnityに内蔵されるAnimation処理の仕組みとツールをざっくり理解できたはずだ。前回紹介した様にもっと使いやすい環境やツールを外部に求める事は可能であるが、何らかの理由でこれらのツールを利用した作業を強いられるケースも出てくるであろう。また概念としてのAnimationは共通なので役に立たないと云うことはない。次章以降はより実践的なAnimationに関する応用例をまとめて行きたい。

 

 

 

3Dアニメーション処理の学習まとめ~その3


※本ページはUnityエディタ2021.3.5f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。Unity Learnにおいては2.1章からのまとめになります。

 

assetstore.unity.com

 

learn.unity.com

 

Unityにおける3Dnimator機能の学習まとめ。章を改め2.1からのまとめとなります。

 

最初に

まずはProjectから2.1 - Animation Window Features and Settings>Scenes>と辿り、StreetLampExampleを開いく。試しにRunして暗いシーンに街頭が点滅するアニメーションが描写されるのを確認できればOKだ。

 

同様にAnimationClipsフォルダからLightFlickerをダブルクリックで開く。AnimationClip編集ウィンドウが開き内容を確認すると、ここでは

Spot LightのLight.Intensityの値が0と5を繰り返すアニメーション

になっている事が今までの学習から理解できるはずだ。Curvesモードにするとよりはっきり確認できる。ここでは滑らかな変化でなくパルスのOn/Offで指定されている事が確認される。

 

※Assetとして表示、あるいはContextとしてとして表示

今度は同じフォルダからHumanoidCrouchクリップを開いてみましょう。▼クリックで折りたたまれているリストを表示させるとこれには幾つかのサブクリップが含まれている事が解ります。中から例えばHumanoidCrouchWalkをダブルクリックして開いてみてください。これはReadOnlyとなっていて現状では編集できません。

 

※そこでCtrl+Dで複製しろとあるがどーにも出来ないwww

 

AnimationClipを表示させる場合にはAssetoとして表示するか、Contextとして表示するかの2つがあります。例えばまず同じフォルダからLightFlickerをダブルクリックしてAnimationClipウィンドウに表示します。この時にはAddPropertyがクリック出来ない=アニメーション編集ができない状態になっています。

 

続けて今度はHierarchyからSpotLightをクリックするとScene画面にGizmoが表示されると同時に先ほど使えなかったAdd Propertyが使えるようになっている事に気付きますか?この状態をContextとしてAnimationClipを表示すると言い、この状態でやっと各Propertに編集操作も可能となるのです。

 

AnimationClipウィンドウの操作方法

それではAnimationClipウィンドウの操作方法を学習して行こう。開き方は先ほど説明したので割愛して、以下の様にLightFlickerアニメーションClipが編集可能な状態を操作してみて欲しい。

 

そしてこのウィンドウだが、大きく2つに分けられ

  • 左側にBind対象
  • 右側に値の変化グラフ

が表示される。上記サンプルでは1つしかBind値が表示されていないがここには通常複数のBindが並び、右側にも複数のカーブが描画されるのがこの編集ウィンドウだ。

 

キーフレーム

各Bind値にはグラフ全ての数値が記録されているワケではなく、Keyと呼ばれる位置の数値データを基本単位として管理されており、これをキーフレームと呼ぶ。具体的には右側のグラフにおける◆の各ポイントだ。

 

DopesheetモードとCurvesモード

この2つのモード切替方法はすでに学習したはずだが、適宜使いやすいモードでアニメーションの編集を行う。全体の描画タイムラインを調整するにはDopesheetモードが適切であり、特定タイミングのアニメーション変化カーブを調整したい場合にはCurvesモードを利用する。(Curvesモードにのみ頂点編集機能であるヴェジェ曲線UIが使える)

 

タイムラインとFPSの変更

タイムラインは共通のUIでありアニメーション時刻を『秒あるいはフレーム』単位で表示している。表示方式を切り替えるにはウィンドウの右の方にある『・・・』部をクリックして表示されるPopupウィンドウからだ。(わかりづらい) またマウスホイールでタイムラインのスケールを変更することも出来るし、この時刻も合わせて可変する。

さてアニメーションFPS速度の変更方法だ。解りづらいのでまずは先に説明したやり方でFrame表示モードになっているか確認してほしい。そして画面左側上部を見ると60の数字が確認できるかな?(これも先ほどのPopupメニューでShowSampleRateにチェックが入っていないと表示されないので注意) この数字は現在1秒あたり60Frameでアニメーション描写速度が設定されていると云うことだ。これを30に変更すれば良い。

 

AnimationClipウィンドウのツールバー その1

この部分に編集ウィンドウのツールが集約されている。また先にも説明した通りContextモードでないと利用できないしAssetモードだと一部しか利用できない。

 

まずはPreviewモード。トグルスイッチになっており、タイムラインなどで青色に描画が変化する事が確認できるだろうか。(後述のRecモードと対になる機能だが使うシーンはあまり無い印象)

 

Recモード。赤い◎ボタンで世界共通のアイコンだな、アニメーション録画を行うボタンだと理解して良い。前述のPreviewに対して本番編集モードであり、この状態でのオブジェクトの操作はタイムラインに直接記録されて行くモードである。

 

残るのがこれも共通アイコンなアニメーションの再生ボタン。想像の通りそれぞれ『頭出し、逆送り、再生、早送り、ケツ出し』のボタンだ。タイムラインの時刻ラベル部分クリックで直接移動も出来る。

 

あとは右端の数字は現在表示しているフレーム数だ。

 

AnimationClipウィンドウのツールバー その2

LightFlicker▼と表示されている段のツールバー。これを順に説明してゆく。

まず新たにClipを追加する方法だが、LightFlicker▼からCreate New Clipをクリックする。このリストボックスはAssetに記録されているClipを切り替えるUIでもある。

 

次にSamplesの横にある十字照星のアイコンであるがアニメーションCurveのフィルタリング機能だ。サンプルの単純なケースでは一つしか無いので有用味は無いが、複数のClipが保存されている場合に、このアイコンをOnにした状態でHierarchyで対応するオブジェクトを選択するとそのClipに関するCurveのみをフィルタ表示する事が出来る。

 

残った2つのアイコンはそれぞれキーフレームの追加とアニメーションイベントの追加ショートカットだ。

キーフレームの追加は現在再生している刻限にKeyを追加する。◆が縦棒カーソルの部分に生成されるのを確認してほしい。なおアニメーションイベントでは別章にて説明するのでここでの詳細は割愛する。

 

以上でアニメーションクリップ編集ウィンドウの説明まとめとする。正直ツールとしては最低限しか用意されておらぬ貧弱な機能であるが公式が提供するツールなので最低限の理解は必要であろう。

 

なおUnityにおけるアニメーションツールは外部ツールやAssetで作成する方が効率的であり以下のツールやAssetを参考にされたい。なお3Dモデリングの用意はblenderなどが有用であるしblender内でアニメーション制作までも可能な時代でもある。

 

※2Dアニメーションツール

www.webtech.co.jp

 

ja.esotericsoftware.com

 

※3Dキャラクターアニメーションの定番アセット

assetstore.unity.com

 

assetstore.unity.com

 

※オブジェト単体アニメーション操作定番アセット(Scripting用)

assetstore.unity.com

 

3Dアニメーション処理の学習まとめ~その2


※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。Unity Learnにおいては1.3章からのまとめになります。

 

assetstore.unity.com

learn.unity.com


 

Unityにおける3Dnimator機能の学習まとめその2。前回からの続きで今回はより実践的にAnimationブレンドの入門編と云った回。まずはProject>1.3 - Core Concepts Animation Blending>ScenesからCoreConceptsシーンをダブルクリックで開く。

 

シーンが開けたらCubeが一つあるのでダブルクリックあるいはクリックしてFキーでシーンの中心に持ってくる。Inspectorを見てみよう。重要なのは以下のAnimatorコンポーネントとBlendingExampleスクリプトの2つだ。

サンプルシーンをRunしてみて欲しい。そしてBlendingExampleのCircleWeight部分のスライダーをクリック&ホールドしながら左右にマウスを動かしCircleとSquareの比率に応じてAnimationの挙動が変化することを確認して欲しい。

 

まずはAnimatorコンポーネントだ。Controller部にはこのAnimationを統括するCubeControllerと名付けて保存された設定Assetが指定されておりダブルクリックするとAnimator編集ウィンドウが開く。ややこしくなってすまないが、AnimatorコンポーネントはAnimation Clipの上位に存在する管理目的のコンポーネントだ。すなわちCubeControllerの下にAnimationClipが保管管理される。(複数のClipを管理しうると言うことだ)

 

そのAnimator編集ウィンドウを見てみよう。念のために開き方はメニューからWindow>Animation>Animatorと辿っても良いし、InspectorのCubeController部をダブルクリックのどちらもで良い。以下の様にいくつか色分けされたオブジェクトらしき物が並んでいると思うが、その中からBlendTreeをダブルクリックしてみて欲しい。

 

冒頭で述べたAnimation Blendingの本体がコレだ。今は詳しく知らなくても構わない。後でちゃんと詳細は説明する。ざっくりとSquareとCirleと名付けられた2つのAnimationが一つのBlendTreeという要素にまとめて管理されており、この2種類はブレンドしてAnimationを表現しうる機能だということだ。

 

では実践的にオリジナルのAnimator Controllerを作ってみよう。まずProject>1.3 - Core Concepts Animation Blending>AnimatorControllersフォルダへ移動しよう。(移動しなくても良いがUnityでは機能種別ごとにフォルダを分けて管理するのが基本ルールだ) そこで右クリックからCreate>AnimatorControllerを指定し新規にExampleControllerと名付けたオリジナルコントローラーを作る。

 

現在ExampleControllerの中身は空なのでClipを追加してみよう。やり方はこうだ。まずは念のためにExampleControllerをダブルクリックしてAnimator編集ウィンドウをアクティブにしておく。(先の例のようにBlendTreeが無い事を確認してくれたまへ) 続いてProject>1.3 - Core Concepts Animation Blending>AnimatorClipsフォルダを開いてからCircleクリップをAnimator編集ウィンドウにドラッグ&ドロップする。以下の様にCircleが追加されラインが結ばれたのが確認できるだろうか?同様にしてSquareもドラッグ&ドロップしておいて欲しい。今度はラインで結ばれずに色もグレイの状態だが気にしないで良い。

 

さてまた新しい概念だ。頭がパンクしないように付いてきてるかい?Transitionと呼ばれる機能だが、日本語に訳すと遷移となる概念でようはアニメーションとは何らかの状態が遷移して行く様子を記録または再現する事なので、このTransitionを定義しないと始まらないという事だ。

 

そして上記のAnimator編集ウィンドウに並ぶアイコンを見るとこのTransitionを解りやすく表現する目的で用意されたものだと徐々に理解できてくる。まずはCircleを右クリックすると表示されるPopupMenuからMakeTransitionを選択する。するとラインを繋げるモードに変化しているハズなので続けてSquareを左クリックするとラインが結ばれる事が確認できるはずだ。

 

さてこの出来上がったTransitionであるが解りづらい事にライン部分をクリック出来る。そしてInspectorを見るとTransition設定内容が確認できる様になっている。中身を見てゆこう。まず折りたたまれているSetteings部分の▼をクリックして以下の様にパラメータをチェックする。

まずはExit Timeだ。デフォルトの設定は0.75。これがどういう事かと言えばCircleClipが75%進んだ時にTransitionが開始される事を指定している。下のグラフのが解りやすいかもしれない。残り25%から斜めの描写が始まりやがて消えていると同時にSquareClipのアニメーション描画に切り替わって行く事を示している。つまりBlendだ。

 

このままだとCircleClipが一度も完了しないままでSquareに遷移してしまうので1.5に変更してみよう。これにより一度円を描いてから二回目にSquare軌道に移行するBlendとなる。

さらに微調整しよう。1.5に変更してしまった為にSquare側では25%部分からのアニメーション描写が始まる事になる。これを調整する為にTransition Offsetに0.5を指定する。これによりSquareClipは中間地点から描写が始まる事になり、よりスムーズな遷移描写になるハズだ。

最後にTransiton Durationsを2に変更して仕上げだ。これは遷移時間を変更するもので2秒かけてCircleからSquareに徐々にBlendされながら遷移する設定の出来上がりというわけだ。以下の様なグラフになっているか確認したまへ。(グラフの部分でマウスホイールを使って拡大率を変更させている)

 

では実際のアニメーション確認と行こう。CoreConceptsシーンに戻ってくれたまへ。Cubeを選択してAnimatorコンポーネント部を見つけたらControllerの設定をCubeControllerからExampleControllerに変更してRunだ。(◎クリックで変更しても良いしProjectからドラッグ&ドロップでも良い) どうだい?円運動から四角運動へ滑らかにアニメーションが遷移するのが確認できたかな?

 

これらの一連の作業がすべての基本だ。AnimationClipはアニメの基本単位、これを箱に収めるのがAnimatorで遷移などの挙動編集も可能だ。これらを適切に組み合わせる事で人形のダンスシーンや派手な爆発シーンが組みあがっているワケだ。

 

とまぁ、概念的な物から手始めにUnityにおけるアニメーション処理の概要をまとめてみた。単純ではあるが、どんな複雑なアニメーションもこれらの基礎の積み重ねである事をまずは理解されたい。AnimationBlendさえそのスタートの1技術に過ぎないのだ。

 

では次回でまた会おう!

 

3Dアニメーション処理の学習まとめ~その1


※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。

 

assetstore.unity.com

learn.unity.com

 

2DによるAnimatorやClipの作成はひととおり学習したが3Dにおいても学習コースが用意されているので復習と応用がてらまとめる事にした。すなわち本学習コースは映像制作を学ぶ為に用意されているワケではないので注意を。また中級者向け以上の内容なので初心者の方にはお帰り戴く方が宜しいかと。よろしければ以下概要まとめ。

 

  1. Unityの3Dアニメーションシステムの紹介
  2. アセットの操作
  3. Animatorコンポーネントの取り扱い
  4. アニメーションスクリプティングの概要

今回は1のアニメーションシステムの紹介から行ってみる。なお3DRUPテンプレートを利用した前提で冒頭に掲げた公式アセットおよびUnity Learnに準じたまとめであり、これらの知識がありかつプロジェクトは自前で用意できるのが前提条件とする。

 

Animation Clipについて

UnityにおけるアニメーションデータはClipと呼ばれるAssetとして保存管理されます。単純なPosition移動を繰り返す物から複雑な人体モーションのアニメーションまで様々な作成可能であり、それぞれを記録した単位がClipと言うことです。

 

Clipは2つの要素から構成されており、

 

Value(値)

通常アニメーションカーブで記録され(常にではない)、オブジェクトがどのように変化するかの情報が記録されます。

 

バインディング

上記のValueをオブジェうとまたはコンポーネントに特定のフィールドに接続する方法を別個に記録しており以下の2つの要素で構成されます。

 ・Hieracheyを経由したオブジェクトのTransformへのパス

 ・その変換コンポーネントからの特定フィールドへのパス

 

値とバインディングには一対一の関係があり、1つのアニメーションClipには複数の場インド値を含める事が出来ます。

 

Animation Clipエディタについて

メニューからWindows>Animation>Animation>とたどるとAnimation Clipウィンドウが表示されます。Projectウィンドウから1.2-Core Concepts Animation DataフォルダにおかれたCircleアニメーションクリップをダブルクリップで開いてください。

そしてAnimationClipウィンドウが開かれて小さくて解りづらいですがウィンドウの左の上の方にCircleとドロップダウンリストが表示されている事が解りますか。このウィンドウの使い方を学ぶのが第一歩です。

CircleClipには現在Positionのアニメデータしか定義されていませんが、これを▼クリックで開いてみましょう。X-Y-Zの詳細値が表示されましたか。続いて画面右側に着目します。デフォルトのままであれば上記の様に時間軸が刻まれ◆が一定間隔に縦3つ並んだグラフ状の表が確認できるはずです。

 

ここでAnimation Clipウィンドウの左下にあるDopesheetとCurvesに着目し、現在はDopesheet表示モードでありこれをCurvesに切り替えてみてください。

CTRL+Aキーを押してからFキーを押すと以下の様にCurveがきれいに表示されたかと思いますが、要するにこれがオブジェクトのX,Y座標を滑らかに遷移させるアニメーションを記録している結果だと言う事です。

 

またこのCurveはベジェ曲線として記録されていますので頂点を編集できますが、その操作の説明はここでは割愛。いま重要なのはこのサンプルアニメーションが80フレームで構成されており例えば40フレーム目ではPositionYの値が0から始まり3まで達するCurveで表現されている&そこからまた0に向かって減って行くアニメーションを記録しておりX座標も同様だと言うことです。

 

Unityにおいてアニメーションを作ると言う行為はすべて今の説明が基礎となります。すなわち、バインド指定されたオブジェクトの値を都度記録し、変化をグラフとして記録した物をClipと呼び、これらを複数組み合わせて複雑なアニメーションが完成されてゆくと言うことです。

 

今回は概念的な説明の入り口となりますので詰め込まずにここまでとし次回以降により実践的なアニメーション制作作業の学習に入ります。