[miRA]フェイシャルリグテスト

2017年05月18日 04:27

デモリールを最新判として更新し、最初にいくつか表情テストを入れ込みました。

レタッチ無し、撮影処理無し。

なお、後半に作業動画を入れ込みましたので、以前に公開した個別の動画は近日削除予定です。

それから、れいなさんは撮影無しの一発レンダー画像ばかり公開していたいので、一枚撮影してみました。
(クリックで拡大↓)
reinaStl.jpg

一旦デモリールも充実し、こちらでひと段落となりそうです。
後日アニメーション等をつけることがあればデモリールには加えず個別でアップしていきますので、上記パスの動画はこちらで最終版とさせてください。
スポンサーサイト

[miRA]bipedBuilderについて

2017年05月15日 03:35

(クリックで拡大↓)
keyVisualA07.jpg

先日ポストしたmiRAについて、個別の機能をご紹介していきます。
今回は「bipedBuilder」というツールの紹介です。

miRAは独自の「miRAコマンド」というパイソンモジュールを多数備え、その組み合わせでモジュラーリギングを行います。
基本的にGUI上からのビルドが可能ですが、よく使うものについはテンプレート化を行っているというお話も以前紹介しました。
その中でもbiped(二足歩行)やfacial(表情)のコントローは本当によく使うため、短時間でセットアップが行えるよう関節位置やスキンウエイトも含め短時間でセットアップが可能なデータを用意しています。
そもそもmiRAはキャラクタ専用のリグではなく、プロップやヴィークル、背景などあらゆる要素をセットアップできるように想定してあるトータルリグシステムですが、それを使った上で特化したツールも開発可能・・・という例として見てもらえればと思います。


■デモリール
今回はタイムラプスの動画を作成しましたので、まずはこちらをご覧ください。
(※今回はあくまでプライマリリグに特化した内容です。一番時間のかかるセカンダリーは割愛していますので、ご理解のうえご覧ください)


今回はリアル向けのキャラクタとして以前作ったユーフォのキャラとは別の素体でセットアップをしましたのでケージのフィット作業を手で行っていますが、同一トポロジーや同一UVなど仕様の一致しているキャラクタ同士で移植を行う場合、さらに短い時間でのセットアップが可能となります。
フェイシャルというフレームがありますが、大体フェイシャルリグの作成も似たような手順での作業となります。

■GUI
とりあえず市販ソフトではないので地味の極みですが、こんな感じのGUIがあります。
左がsetupタブ。右がcontrolタブ。
セットアップタブでは、ケージからスケルトンの関節位置を計算させたり、必要に応じて追加のモジュールを作成できるような機能を実装しています。
コントロールタブは、コントローラの作成。補助骨の作成。標準的なウエイトや筋肉表現のドリブンキー読み込みなどをボタン一発で作成できるようにしています。
その他にはプロキシーの作成やコントローラのペアレント切り替え作成。ダイナミクスの実装など、標準からさらに踏み込んだセットアップを盛り込みたい場合もよくあるツールはこのGUIからアクセスできるようにしてあります。
01_20170515021702d0e.jpg


■関節位置の自動検出について
ベースとなるローポリのケージを読み込んでフィットさせると、そこから関節の位置を自動検出します。
これはクローゼストポイントで最至近距離の一点から計算などをしてしまうと体系の変化時に位置ずれを起こす可能性があるため、最低でも断面の2点。重要な場合4点の参考位置から関節位置を計算するように設計してあるため、かなり精度の高いポジションの取得が可能となっています。
さらにIKを作成する上で直線状に並ばなければいけない部分はこういった検出作業時大体ずれるため、そこを補完する計算も入れられるようにしてあります。
その上で気に入らなければさらに手動で位置や軸変更を入れられるようにしてありますが、少なくともテストで作成した2体のキャラクタについては自動検出一発で骨位置を決定しています。


■(オマケ)今回作ったキャラクタモデルについて
今回はゼロからセットアップをするというテーマを満たすため、新たにキャラクタをモデリングしました。
うつ星やつらのラムちゃんで、高橋先生へのファンアートとして。。。

(クリックで拡大)
rumTyan.jpg

前回は線ありのルックだったため、今回はデフォルメしつつもリアル寄りの質感で作成しています。


■最後に
「リグってなんだか難しそう」
CGをやっていて、そう考えている人は多いと思います。
そう考えているモデラーが「自分で骨を入れてみたい」とか、アニメータが「自分でギミックを作ってみたい」とか、そういう風にカジュアルにリグに向き合える日が来るといいなと思いながらこの記事を投稿します。

[miRA]モジュラーリギングシステム「miRA(ミラ)」

2017年05月08日 06:32

久しぶりのCGトピックスです。

miRAについて
開発のきっかけですが、CG業界でスタンダードになりつつあるプログラミング言語「パイソン」を勉強するため、数年前から題材として「リグシステム」を趣味で書き始めました。結果面白くなってしまいC++にも手を出してしまいましたが・・・
(元々別の名前で開発していたのですが、コアの設計に問題があったため一度全て捨てて書き直したという経緯があったりします。)

もう一つの開発理由として、いわゆるハイエンド系のCG用に設計されたリグはアニメ業界での運用にマッチする部分もあればそうでない部分もあると長年感じていました。
そういった部分も含め、何か一つ自分なりの回答となりうるリグを作りたいというのが最も大きな開発理由だと思います。

細かい話は置いておき、とりあえずデモリールをご覧ください。
(※HD720でアップしていますので、可能であれば画質を上げてご覧ください。)

なお、リグのサンプル用としてモデリングしたのは響けユーフォニアムから麗奈さんです。ファンアート兼ねて作ってみました。
reina.jpg


■モジュラーリギングについて
モジュラーリギングは兼ねてより提唱されている、腕や背骨や手といった部位をバラバラにセットアップし、それを組み合わせて複雑なリグ構築を可能にするという考え方です。
概念としては、英語ですがこちらのスライドで分かりやすく説明してあります。
http://halo.bungie.net/inside/publications.aspx
Modular Procedural Rigging

最近では、スクウェアエニックスの佐々木さんが「CRAFT」という素晴らしいモジュラーリグシステムの情報をCESECで発表されていたり、海外では「mGear」というオープンソースのリグシステムが公開されていたりと、勉強する上での情報はだんだん出てきたなという印象です。

DFtalkさんでも、よい情報をたくさんまとめてくださっています。
https://dftalk.jp/?p=17463


■リグの軽量化
上記CRAFT開発者佐々木さんが以前のCEDECで発表されていた内容がすごく参考になりました。
http://cedec.cesa.or.jp/2014/session/VA/971.html
ここで発表された「ローカルコンストレイン計算」をモジュール内では基本とし、可能な限りワールドでの計算を行わないようにマトリックス接続を最適化しています。
そのためサンプルのように大量のリグを構成しても、現実的な速度でリグが動きます。


■Module(モジュール)とUnit(ユニット)
miRAの特徴として、リグが大きく分けて「モジュール」「ユニット」の2つにカテゴライズされます。
--モジュールの例--
・root
どのリグにも必ず作られる基礎モジュールです。
WorldリグとLocalリグ、セッティングノード(表示非表示やリグのステータスを変更するための歯車のようなリグ)が最低一つづつ作られます。
WorldとLocalはそれぞれ9個までオフセットを増やせます。

・chain
尻尾や背骨など汎用的に使えるリグ。
たとえば、背骨は4本。肩や頭、首は1本で作成する等することで色々と使いまわしています。
(本数はカスタマイズ可能)
IKスプラインハンドルなどアドバンスドビルドも可能。
スカートやヘア、顎やベロ。視線などもこれで作成している非常に汎用性の高いモジュールです。

・limb
腕や脚に使う、いわゆる2ボーンIKを基礎としたリグです。
3本モードといういう特殊モードも用意していますが、こちらは指などに使っています。


--ユニットの例--
・parentSwitch
IKハンドルや色々なリグの親を切り替えられるスイッチを作成します。
移動のみ、回転のみなどのカスタマイズも可能。

・adjustInfluence
肘の突き出しや脇下の補助骨など、コントローラを持たない補助インフルエンスを作成するためのユニット。
フラグがたくさんあり、自分でドリブンキーを組むためのシンプルなものからパラメータで複雑な動きを作れるものまで色々と作れるようにしています。

・physicalChain
チェーンと書いていますが、limbや他エンドジョイントが存在するリグなら全てに実装できるダイナミクス。
詳しくは後述

・meshAttach
ボタンやリベット、ジッパーなど変形するものの表面に変形しない硬いものを追随させる際に使います。
フェイシャルリグのセレクタなど顔のメッシュに追随させたい場合にも使います。
--------------------

モジュールは上記+いくつか専門的なものが数個ある程度ですが、ユニットは他にもかなりたくさんあります。

なぜモジュールとユニットをカテゴライズしたかを家の建設に例えてみます。
家を建てるには、まず柱を立てて壁を塗り、天井を塞いだりと「家としての基礎」を最初に作ります。これがモジュール。
その後、カーテンをつけたり冷蔵庫やテレビを置いたりと、実用に向けてのカスタマイズを組み合わせて運用していきます。これがユニット。

なぜこのようにカテゴライズしたかというと、一つ一つの機能をシンプルにすることによって汎用性を高めようという狙いがあったからです。
例えば、ダイナミクスを実装するための機能をチェーン専用ではなくユニット化することで、指や背骨、首などにもダイナミクスを実装できるようになります(やらないと思いますが・・・)
他にも、adjustInfluenceをチェーンモジュールとlimbモジュールにまたがって構成できたりとモジュール内のオプション機能にしてしまわずに独立させることで汎用性がぐっと上がり、さらに組み合わせた際の多様性が非常に広がります
(最初に紹介したデモリールのサンプルキャラクタに使っているモジュールは、セカンダリやフェイシャルを含めてもたったの5種類。多様性を出すためいかにunitとの組み合わせが重要かが理解できるかと思います。)

■GUIベースとスクリプトベース
モデラーやアニメータでも簡単にセットアップができるという敷居の低さを目標として開発しているのがmiRAです。
スクリプトの知識がなくとも、GUIからモジュールやユニットの作成。ビルドデータやウエイトデータ等の書き出し、リグの再構築などプロダクションパイプラインに必要とされる物を満たせるように設計しています。
(例)chainモジュール作成GUI中、スプラインIKのオプション
ik_201705080652594cd.jpg


ただし、GUIから作成可能とはいえ例えばスカートなど、繰り返し処理でモジュールを作った方が便利な場合があります。
そういった場合には全てスクリプトからのアクセスも可能としています。
さらにそのスクリプトを所定のテンプレートフォルダに配置すれば、GUI上から読み込みと再構築を実行できるようにしてあります。
(例)表情リグ関連のテンプレート
template.jpg


例えば、標準的なbiped(二足歩行)リグを作る場合以下のモジュールを使用して作成します。
-----
・背骨:chain
・首:chain
・頭:chain
・鎖骨:chain
・腕:limb
・手首:chain
・手の甲:chain
・指:limb
・腰:chain
・脚:limb
・足:step(リバースフット用モジュール)
-----
上記のような構成をイチイチGUI上から一個一個作っていると非常にめんどうですので、テンプレートスクリプトを記述して登録しあとはGUI上からボタン一個でbipedとして構成できるようにしてあります。

■その上で・・・
ここまで紹介したお話は「シンプルな機能の組み合わせで多様性を出していく」というモジュラーリギングのロジックをmiRAなりに解釈した内容です。

その上で、どのようなリグを設計するか。アニメータが何を求め、案件ごとにどのようなリグを提供していくか。
会社やチームによって、リグに求められる要素は想像以上に違います。
(例えばmiRAの売りとして、ほぼ全関節をトランスレート、ローテート、スケール、ローテートオーダーをkeyable開放しています。
これは会社によってはロックしろと嫌われることもあったりします。)

そういった状況の中でイチイチ機能をプログラミングしなくても、既存のモジュールやユニットの組み合わせで要望に対応していく事のできる仕組みを、今後も時間をかけて作って行ければと考えています。


最新記事