[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開放しています。
これは会社によってはロックしろと嫌われることもあったりします。)

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

個人作品でmayaを使う意義は本当にあるのか

2011年01月27日 02:04

久しぶりにCGについての真面目な日記を投稿しようと思います。

以前から「自主制作やるよ!」と言い続け、未だに発表すら出来ていない始末。
忙しいなんて言い訳にならないとは思いますが、それでも少しずつ前に進めております。


そんな中、今日会社でショッキングな事態に遭遇しました。
今会社にいる元サンジゲンの方に、bipedというmaxの標準的なキャラクタリグを見せてもらいました。
オペレーションを開始して、かなり少ないクリック数でキャラクタの頭身が出来上がり、調整もサクサク。
数分で男性や女性のプロポーションが出来上がり、アニメート可能な状態に。
コネクションサイクルがNGのmayaでは中々難しいと言われている、IKとFKの共存も普通にこなしている。

私の周りで自主制作をやろうとしているmayaの人は、たいていリグで挫折します。
mayaにはcatやキャラスタのような標準リグといわれるものは存在せず、ある意味標準でついているフルボディIKを実戦で使っていますという例はあまり聞きません。コンストレインもあまり充実していないので、いちいち作らないといけない。
各社、自社開発のリグツールを保有してそれをアップデートしている感じです。そのためツールを勝手に持ち帰ることもできず、自宅でリグをやろうにも、まず開発から始めないといけないという問題に突き当たります。



----------
私が自分の作品を作りたいと思い出したのは、まだスクウェアエニックスのムービーチームでキャラモデラーをしている頃。専門学校の卒業制作で賞品としてmayaをもらったばかりだったので、家でも何か作りたい。。。と思ったのが始まりでした。
モデリング自体は学生の頃からさんざんやっていたのですが、やはりリグは壁でした。
会社のツールを解析しようにも、当時melをはじめたばかりというくらいの私にとっては、ブラックボックスの多いプロダクションリグを理解できるはずもなく、挫折。
しばらくはルック開発の名目でモデリングばかりをしていました。

その後IGへ渡って「自分の作品を作りたい!」という気持ちが明確なものになり、実際にツールの開発やらを始めました。
リグと一言に言っても、汎用的なhumanリグだけではありません。ゆれものやめり込み修正のためのリグやシミュレーションの管理。フェイシャルを効率的に仕込むためのツール。あらゆるものが必要になります。
私が個人でそれをそろえるのに、デザインや脚本と平行してですが、3年かかりました。
さらに、シーン構築やアニメーションの出荷。LODの管理やディレクトリストラクチャなど、今後決めないといけない物はたくさんあります。正直いつになったら作品を作れるんだと気が遠くなるくらいです。

このような煩わしさを、maxであればかなり解消できるのでは?という可能性を今日感じたわけです。
maxはプラグインも充実しているようで、小規模で何かをやる時にお金さえ出せば大抵の事はなんとかなるとか。
----------



本題に戻りますが、mayaを使う意義。
最近、ソフトをmayaに切り替える中小プロダクション・アニメ会社が増えています。
そういった人たちに理由を聞くと、かなりの割合でこう返ってきます。

「周りがmayaの会社ばかりになって来ているので、mayaを使わないと仕事が取れない。仕事を振れない」

確かに、会社や個人事業主は食っていくのが大前提。最もな選択なのかなと思います。

元々日本の大手プロダクションでは、mayaが採用されているケースが多いです。
ポリゴンピクチュアズやデジタルフロンティアなどの大手はもちろん、ヴィジュアルワークスやマーザ。私が勤めている東映アニメーションのデジタル部でも、mayaをメインストリームとして扱っています。
そういった会社でシステムを担当している人に、なぜmayaなのかという質問をすると、大抵以下の二つが理由です。


①大人数でデータを共有するのに向いているから
②mayaで規模の大きなシステムを組んでしまったので、変えるに変えられない


もちろんmayaにはもっとたくさんの優秀な部分がありますが(ブラックボックスが少ないですし)、上記二つは理由としてかなりの決定打のようです。
実際問題として、ヒュームなどの優秀なプラグイン。レンダラ選び放題。などなど、maya使いから見てmaxには指をくわえてうらやましくなる要素がたくさんあります。前述のリグもしかり。
白組のmayaチームが手がけた「ヤマト」のプロジェクトでも、崩壊の表現にmayaでは限界があり、そこにはmaxを使ったとかなんとか。

緑で色取った上の3つの理由のうち、「大人数で~」以外の理由は、作品の本質に関わるというよりも、どちらかというと政治に近いものです。
個人や小規模で作品を作る場合、さらに「大人数で~」という理由も薄れます。

そう考えていくと個人で作品を作るのにmayaを使うというのは敷居をあげているだけで本質的な理由は少ないように思えてきます





ただし、最近は個人でもmayaを使って物を作れるのでは?という希望がいくつか出だしています。

①mayaのmax化
「だんだんmayaがmax化してきているという流れがあります。
mayaHairやニュークリアスのように、1つのノードに大量の機能が搭載されている「大きいノード」が出来だしたからです。本来mayaのノードというのは、一つ一つは単純な機能しかないですが、コネクションで組み合わせる事で複雑な事をやろうという物が多いです。
そのため「自由度は高いが敷居も高い」という結果につながります。しかし、「それ専用」として用意されている巨大なノードは開発の短縮につながり、ジェネラリストにとってはありがたい存在です。

このまま行けば、mayaでも市販の優秀なリグが出てくるのではないかという期待が持てます。
(ネイティブ機能になるかは置いといて)


②国内の「オープン」思想
ダンデライオンの「opencode」というプロジェクトがあります。
これはプロダクション運営で必要になるツール類を契約している各社で共有化しようという試みです。
現在個人や不特定多数に対して公開するという流れにはなっていませんが、今後このような試みが増えていけば、いずれ本当に「オープン」なプロダクションツールを公開する会社もしくは個人が出てくるのではないか・・・という期待があります。
もしくは、国内で個人作品を作っている人間同士でネットワークを作ることができれば、その中で第二のオープンコード」ネットワークを構築する事も可能なのでは・・・と思っています。

などなど。




長々と書いてしまいましたが、今後「個人ないし少人数でアニメーションを作る」という流れは確実に増えていくと思います。
その中で、パイプラインやツールをどうすべきか。3Dをやる以上テクニカルは避けて通れない課題です。
何とかして敷居を下げられないものか・・・。今後も悩みは絶えそうにありません。


最新記事