スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Cinema4D R12

R11.5を購入して使っていたんだけどR12のお知らせがきた。

モジュール制を廃止?!
MOCCAで一番気に入っていた機能であるビジュアルセレクタを使うには一番上位のVarを選ばなきゃいけない?・・・
価格を見たらアップグレードするのに33万円
ふざけてる。

このブログでもC4Dは何度か取り上げてきた。
モジュールを自分で選択するため無駄な機能を省いて価格を抑えられると・・
しかしそれが出来なくなったのである。

使いたい機能にだけお金を出してハイエンドバージョンと変わらない機能を手に入れる形態

4つくらいのランクがあって上位になればなるほど機能が増える形態

となったわけだ。
趣味ユーザーが10万出してほとんどの目玉機能が全部使えないとか。誰が買うんだよ。
30万出すならオートデスク製品を選ぶだろうし。

R12になったらC++で作成したプラグイン使えなくなるんだって。
サポートセンターに問い合わせてもプラグインに関するサポートは日本ではやってないって言われたしね。
よってアップグレードはしないことにした。


ソフトはものすごく気に入っていたけど、切り捨てられた感が否めない。寂しいね。
C4Dの記事はもう書いてやらないんだから!!
当分は11.5で大丈夫だろうけど時代遅れにならないように他のソフトも眺めることにしようっ。


ねよっと。
スポンサーサイト

アニメーション実装の仕組み。

今日はアニメーションに使われている行列まわりの知識を載せてみる。
難解なようで結構あっさりしている。

基礎知識①
ボーンは必ずボーン空間のZ軸に沿っている。

基礎知識②
一般的にフレームと呼ばれるものは以下を所持している。

・三角ポリゴンの集合体 = メッシュ
・子情報
・兄弟情報
・ボーン行列(フレーム行列、TransformationMatrix)= 親空間内に子(空間)を配置する行列(4x4Matrix)




ボーン行列は相対値であるためローカル変換座標を得るにはすべての親の情報が必要である。
具体的には
ボーン変換行列をローカル変換行列にするには
ローカル(孫→親) = 孫*子*親
と駆け上る必要がある(移動は加算だが行列は掛け算)
言い換えると
ローカル座標変換行列 = ボーン行列*それまでの親のボーン行列を掛けたもの


もう一つ必要な概念としてオフセット行列というものがある。
ボーンオフセット行列(inverseBindPoseMatrix) 
言い換えると= ローカル座標上にある頂点をボーン空間の座標に変換する行列
言い換えると= ボーン空間の視点で頂点を見せてくれる行列
言い換えると= 初期姿勢行列の逆行列で求まる



では実際の挙動を見てみよう。

ある点Pを動かす行列(P*合成行列)を求めるにはまずその点が同調するボーンの目線に変える
P = P * ボーンオフセット行列

ボーン目線(ボーンの空間)なのでそのまま変換行列を適用してやればよいので
P = P * ボーンオフセット行列 * 変換行列

もとのローカル目線になるまで戻す
P = P * ボーンオフセット行列 * 変換行列 * (親ボーン行列*親の親ボーン行列*・・・)

で求まることになる。

ボーン空間で見ていた目線をワールド座標目線まで戻す行列(親ボーン行列*親の親ボーン行列*・・・)ワールド変換行列と呼ぶ



まとめると

合成行列 = ボーンオフセット行列 * 自身のローカル姿勢 * ワールド変換行列

ボーンオフセット行列初期姿勢の逆行列
ワールド変換行列親の姿勢を再帰などをして求める



分かりやすく書きたかったのに微妙に分かりにくい。。
ねよっと。

C4Dでマテリアルを弄ってみる。

C4Dのマテリアル管理は直感的で大変気に入っている。


以下、実験で色々なマテリアルを作成してみたときのメモ

金属
Danel_金属シェーダを作成
異方性のチェックを入れる
異方性のヘアラインをお好みにする
鏡面反射と環境マップの設定をする


ガラス
Banji_ガラスシェーダを作成

光るオブジェクト
エリアライトを作成
詳細タブ
・エリア形状の中にオブジェクト窓からライト光らせたいものをドラッグ(ポリゴン化しておくこと)
・ライトをレンダリングにチェック
・鏡面反射から見えるにチェック
・減衰を好きなものに設定して距離を入力
・表示の倍率を200%ほどにする
・サンプル数を400ほどにする
・お好みでコントラストを上げる
一般タブ
・ライトカラーを設定
・強度で光の強さを調整
・影のタイプでエリアを選択


もしかしたらもっといい方法があるかもしれないのであしからず。
GIモジュールがあれば光るオブジェクトなんかは楽に奇麗なのが作れそうだけど・・・高い
製作に余裕ができたら専用のシェーダとか書いてみるかもしれない。


ねよっと。

C4Dでアニメーション

意外とC4Dのアニメーションの情報が少ないのでまとめてみた。

【骨の作成】
表示>グローシェーディング(線)のチェックをいれると見やすい
ジョイントの作成方法
①配置

・キャラクタ>ジョイントツールを選択

・対称設定をしてモデファイアを上から「描写」「分割」「整列」にする

・F2~4を使って任意の場所にジョイントを追加(Ctrl+クリックで途中にジョイントを追加できる)

・対称が重なっている場合は移動ツールで移動すると現れる

・対称側のジョイントは操作をすべて追従してくれているので操作時は消しておいても構わない

・移動や回転を利用して微調整(位置などを変える時に子に影響を与えたくない場合はオブジェクト軸モードを使う)

②編集

・対象ジョイントを後から作成したくなった場合は「キャラクタ」>「ミラーツール」を使用する(作成されたものはすべて整列を行うこと)

・ctrl+ドラッグでコピー

初期のボーン配置で完全に対称な位置に起きたい場合は、まず全部のボーンを選択>対称のタグの「使う」にチェック、始点をワールド、平面をYZにしたら対称になる片方のジョイントに対になるものをドラッグして入れていく

対称をいつまでも追従させておく必要がないので対称側のジョイントをすべて選択して「対象タブ」の「使う」のチェックを外す(OFFにしても一度設定した対称オブジェクトや軸は保存されたままになるので、また対称にしたいときは一度ONにしてまた切れば移動できる)


③仕上げ


・親から子までのジョイントを選択して「キャラクタ」>「整列」を行う



【リギング】
①IKを作成

・任意のジョイントの位置にヌルオブジェクトを作りたい場合はジョイント選択>「キャラクタ」>「変換」>「ヌルオブジェクトに変換」

・設定したいジョイントを2つ選択した状態で「キャラクタ」>「IKチェーン」を選択 IKタグの「ポールを追加」で制御軸が作成される

・別の作り方としてはジョイントを右クリック>「キャラクタ」>「IK」を選択 IKタグの終端に任意のジョイントをドラッグドロップ「ゴールを追加」「ポールを追加」を行う

②モーション作成時の効率化

・ビジュアルセレクタを利用するとコントローラになるオブジェクトを探す時間が短縮されて便利

・ビジュアルセレクタの使い方はオブジェクトをドラッグしてアイコンを作るだけ アイコンが気に入らないときはドラッグ中に↑キーを押して変更できる

・アイコンをクリックしたときに移動ツールに切り替えさせたりコマンドを実行させたりすることもできる



【アニメーション】

・好きなフレームに移動してF9を押すと記憶させる

・Ctrl+F9を押すことでいちいちキーを打たなくても動かしたものを全部保存してくれるモードになる

・形が違うジョイントのアニメーションを移植するにはジョイントを右クリック>「キャラクタタグ」>「モーション移植」

・BVHなどのキーが多すぎるものをアニメーションを崩さずに削減するには トラックを選択した状態で「タイムラインのファンクション」>「キー削減」
(注意点 トラックごとに削減を行うこと & フーリエではなく屈折削減を行うこと)

・移植タグやIKによって間接的に作成されたモーションデータを実際のトラックとしてベイクしたい場合は「タイムラインのファンクション」>「オブジェクトを固定」



【モーションシステム】

・アニメーションを作成したらそれをモーションソースとして管理することができる(別に使わなくてもいい)

・やり方は「アニメーション」>「モーションクリップの追加」で作成できる(タイムラインモードがモーションモードに切り替わる)

・左下にあるのがモーションソースで、それをインスタンスとして利用することになる(インスタンス化したものをモーションクリップと呼ぶ)

モーションクリップの内容を変更してもモーションソース自体は変更されない

・モーションシステムは「モーションシステムタグ」で管理される これは子に対しても有効に働くタグであり、断層が違っても複数割り当てられるべきではない
(1つのオブジェクトにタグが複数あるべきではないだけであって モーションの重複はレイヤを使っていくらでも表現できる)

・モーションタグの「追加」を押すとアニメーションレイヤを追加することができる このレイヤは直接キーを打って編集することができるレイヤである
(タグを確認してもどこにもアニメーションレイヤという名前が載っていないけれどHELPではそう書いてあったのでそう呼ぶことに・・タイムラインのアイコンが違うので分かるはず)

・複数のアニメーションレイヤを一度にキーモードで表示することはできない 「モーションシステムタグ」でチェックしたレイヤがキーモードで表示される

・キーを打つとき「選択されたレイヤ」に対してキーを打ってくれるわけではなくて上記の 「モーションタグでチェックされているレイヤ」に対してキーが打たれる

・アニメーションレイヤを作らずにキーを打つとデフォルトレイヤにキーが作成されるが、モーションシステムが存在する部分は上書きされるためブレンドがうまくできないので注意



【ウェイト付け】
①ジョイントと形状データを関連付ける

・ジョイントをすべて選択してから形状オブジェクトを選択して「キャラクタ」>「バインド」を選択

・タブをダブルクリックでウェイトツールの属性を編集できる

・ウェイトツールのウェイトタブで色を変えてやることで見やすくなる

・初期姿勢をウェイトタグでポーズをセットすることで記憶させておく

②ウェイトを自動で付ける

・ウエィトツールの自動機能を利用してまずはウェイトを自動でつける

・この時 モードは「交差」か「法線」を選んでおくとかなり奇麗に実行してくれる(自動のわりに)

・自動ウェイトに存在する「選択されたポイント」にチェックをいれるとメッシュで選択されたポイントのみに変更してくれると思いがちだが、ウェイトタブで選択されている頂点のみに影響を与えることになる。
よって、ウェイトタブの「選択範囲から」ボタンを押して選択範囲を教えてやる手間がある。

③ウェイトの微調整

・対称タグを有効>モードを名前>頭文字Left、Rightなどを入力>ジョイントを選択して塗り始める

・一つのジョイントで構成されている部分は対称のシングルモードが便利(頭など)

・ウェイトを減算したいときはCtrl+クリックすることで行える

・ジョイントは邪魔なので見た目を「標準」から「線」にしておくと便利

④この段階でジョイントの位置を変えたくなったら以下の手順で行う

・スキンデフォーマを切る(チェックマークを×に)

・ウェイトタグでポーズをリセット

・ジョイントを移動(整列しなおし)

・ポーズをセット

・スキンをオン

(最後にコンストレイント制限の距離とかのチェックを忘れないようにね!)

また似たような作業としてリグやジョイントを含んだモデルの拡大や縮小をしたい場合も、以下の手順で行えば関係を崩さずに行える

・ヌルオブジェクトを用意して拡大したいものを全部ドラッグして子にする

・スキンデフォーマを切る(チェックマークを×に)

・ウェイトタグでポーズをリセット

・キャラクタメニューの「IKを使う」「コンストレイントを使う」をオフ(CoffeeやExpressoを使ってたら手動でタグをOFF)

・ヌルオブジェクトごとスケール

・ポーズをセット

・スキンをオン

・「IKを使う」「コンストレイントを使う」をオン

ウェイトのミラーコピー

反転させればいいようなウェイトは基本的に作業時に対称の「名前」と「シングル」を切り替えて作っていけば問題ないのだけれど、たまにかけるのを忘れてしまい一気に反転させたくなる時がある。

そんなときは以下の手順

・コピー元になるジョイントを選択状態にする

・キャラクタ>ミラーツール

・コピー先のジョイントをターゲットにドラッグする

・ワールドYZを選択(任意)して、基点をワールド、断層とウェイトにチェックをいれて検索を近隣にする

・ミラーボタンを押す



【アニメーション作成時知っておくと便利なもの】

・ジョイント(またはリグのコントローラ)のすべてに対してクオータニオンタグ(線形)をプラスしておいたほうが補間が楽&奇麗
↑プロペラとかの場合だけはつけないほうがいいと思う

・移動情報は軌跡が表示されるのでポイントごとにクリックして属性窓を利用してラインの出し方や速度を後から調整できる



【オニオンスキン】

・表示したいオブジェクトに表示タグを作成

・ゴーストタブの「有効」にチェックを入れる

・フレームステップに「表示するゴーストの間隔」を入力

・前フレームと後フレームに「表示したいゴーストの数*フレームステップ」の数を入力

・キャッシュを計算を押す






な、長い・・・・
ねよっと。

C4Dでカメラの制御

カメラは属性のモードをカメラにすると色々設定できる。
この設定の中でオブジェクトの回転の部分を自身でよく変更するのだが、いちいち開くのが面倒である。

そこで項目を右クリックしてHUDに追加をしてみたんだけど開き直すと消えてしまう。。。
移動ツールなどのHUDは消えない。
原因は不明なので別のアプローチを考えた。

困ったときはスクリプト
てなわけで、

main(doc, op) {
var camera;
camera = doc->GetRenderBaseDraw()#BASEDRAW_DATA_camera;
if(camera#CAMERAOBJECT_MODE == 2)
{
camera#CAMERAOBJECT_MODE = 4;
}else{
camera#CAMERAOBJECT_MODE = 2;
}
}


これをショートカットに割り当てれば、押すごとに回転が「カメラ」と「中央」で切り替わるようになる。
4とか2の部分をお好みに変えてくだされ。

ねよっと。
プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。