スポンサーサイト

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

ずっと書いてなかった!

毎日製作はしていたんだけどブログを書いてなかった!
明日からまた頑張って書き始めようと思います。

最近はモーションまわりをしっかり作っていた。TPSになる予定。

以下を実装した
・キャラクターが見ている方向を向く(高さも考慮して腰のボーンが変形する)
・下半身と上半身で別のモーションを適用する
・武器が変わるとモーションが変わる
・上半身と下半身がそれぞれ別モーションに移行するときブレンドを行う
・モーション推移の時間をモーションごとに設定できるようにする
・モーションの再生FPSをモーションごとに設定できるようにする(後で調整が楽)
・作るモーションをできるだけ少なくする設計にする
・アイテム用のボーンを用意する
・スケールを扱わないので行列ではなくVec3+クォータニオンを利用する
・ローカル変形情報まではCPUで行いそれ以降はGPU


恐らく動いている。
がんばった。

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

軸反転とかそういうの。

現在、全身のボーンをコントローラのみで操作していて、コントローラは位置情報のみしか持たせていない。
回転情報を含めたら全身でも10個くらいでコントロールできるかもしれない。

回転情報を持たせていない理由は後からモーションを弄るときに「軌跡」が目に見えないからだ。
XYZ軸における回転情報をグラフで見ることは可能だけれど分かりにくい気がする。

例えば首のボーンを制御するとして、

・首の位置と回転情報をもったコントローラがある

・首の位置情報と、どこを見ているかの位置情報がある


あとから編集してみると断然後者のほうが扱いやすかったのである。
(軌跡は3Dビュー窓で直接移動できるのも便利)


自作のコントローラが増えてきたときに姿勢を軸によって反転させたくなった。
しかしそんな機能が見当たらない。
そもそも名前も適当につけてあるし対称にして欲しくないものもある。

そんな時便利なのがCoffee機能やXpresso機能。
慣れてくるとC4DのCoffeeは今までのソフトで例を見ないほど便利に感じると思う。

汎用的なものを作るなら
・名前のルールを作ってLeftとRightに反応して位置を入れ替える
・単品のものは自身の位置を軸によって反転させる

といった感じのものになるとおもう。
自分用なら決まった名前を入れておいてスクリプトに登録してボタンに割り当てちゃえばOK。


ソースは長いので重要そうな部分だけ抜粋

//X軸反転
Xchange(name,doc)
{
var obj = doc->FindObject(name);
var m = obj->GetMg();
var pos = m->GetV0();
var v1 = m->GetV1();
var v2 = m->GetV2();
var v3 = m->GetV3();
var scl = vector(vlen(v1),vlen(v2),vlen(v3));
pos.x = -pos.x;
v.y = -v1.y;
v1.z = -v1.z;
v2.x = -v2.x;
v3.x = -v3.x;
m->SetV0(pos);
m->SetV1(vnorm(v1) * scl.x);
m->SetV2(vnorm(v2) * scl.y);
m->SetV3(vnorm(v3) * scl.z);
obj->SetMg(m);
}

後で見ても分かるように書いたけどどうかな・・・

V0は位置行列
V1~V3は回転拡大行列が入っている。

最初X軸に対して完全に対称なボーンを作成していたんだけど、よく考えたらそれだと姿勢が崩れてしまう。
そこで基底ベクトルのX軸要素をもう一度反転させる必要がでてくる。


ちなみに作成したコントローラに回転情報を持たせていないのなら上記のようなことも考えなくて済む。
  var obj = doc->FindObject(name);
var pos = obj->GetPosition();
pos.x = -pos.x;
obj->SetPosition(pos);


らくちん。


ねよっと。

コンプレッサーについて

久々に家の奥に埋まっていたコンプレッサーを触る機会があったので記事にしてみた。

コンプレッサ(リミッタ)とは音を圧縮して理想の音域を保ったまま出力するエフェクタの一種である

以下、コンプレッサ系のエフェクタで設定できると思われる項目をまとめてみた

入力レベル(INPUT)
機器の音の入り口のレベル


出力レベル(OUTPUT、GAIN)
機器の音の出口のレベル


スレッショルド(THRESHOLD)
コンプレッサー/リミッターがかかり始めるレベル


レシオ(RATIO)
コンプレッサーのかかり具合
これをMAX(∞)にするとリミッタとして働くことになる
値が高いと音の余韻が少し残る感じに抑えられる
圧縮率が2:1 ~8:1 の比較的低い値の場合は演奏中にボーカリストのマイク距離の差で生じる音の変化を和らげる効果などに使用したりする


アタックタイム(ATTACK)
スレッショルドを超えてからどのくらいで圧縮を開始するかの反応速度
反応が早いと音の頭(アタック音)が死ぬのでフラットな演奏になる
逆に遅くするとタイトさは失わずにコンプをかけることができるが抑える能力自体は弱くなる


リリースタイム(RELEASE)
スレッショルドを下回ったときにどのくらいで圧縮を戻すかの速度
これを短くするといきなりコンプが切れるためどうしても違和感がでてしまう
音の緩急が少ない楽器の場合は自然な長さを十分にとるのが吉


エクスパンドゲート(エキスパンダ、EXPGATE、GATE、ゲートスレッショルドレベル)
演奏していないときに用いるハムやノイズを消すための機能
調整の仕方は大体以下の通り
1:
まずはインプットをぎりぎりまで上げる(最大の音を出したときにPEAKランプがかすかに点灯)
ここで出来るだけ音の幅を大きく取っておくことでゲートを詳細にかけられる

2:
無音状態でゲート値を徐々に上げ、ノイズが聞こえなくなった位置より若干上に設定
3:
ものすごい小さい音で演奏を行い音の余韻に対して不自然なコンプがかかるようならゲートを少しずつ下げる(ノイズは若干増えることになる)




これ以外にコンプのタイミングを任意の入力から切り替えできたり調整できるダイヤルがあったりするが基本的に上記の内容が分かっていれば問題ないと思う。

記事を書いていてブログの方向性がまったく違うことに気付いたけど、消すのも勿体無い。



ねよっと。
プロフィール

あしゅ

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

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

この人とブロともになる

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