アニメーション 揺れ物に愛を その3 1


アニメーション 揺れ物に愛を その1
アニメーション 揺れ物に愛を その2

揺れ物の動きが甘いと、体の動きが台無しになる
なので、揺れ物には時間がかかるのだ
時には体本体よりも時間がかかる、そういうモノサ
では言ってみましょう

揺れ物に愛を

 

ずらして揺れ物を作る

アニメーター誰もが知っている、
手っ取り早く、ソレっぽい
揺れ物の付け方がある

それは位相を利用する方法なのサ
つまり、同じアニメーションを、順番にずらすのだ

以前にはsin波を使ってウネウネしてみた

ただし、この方法
ソレっぽいだけで、リアリティは無い

簡単だけど、メリットとデメリットは必ずあるんだ

ひとまず、口で説明しても
ぱっとイメージが浮かばないと思うので動画をどうぞ

適当に作ったので動きは突っ込まないでね・・・

【まず、一律同じアニメーションを付けた後】

【子供の構造の方のアニメーションをずらしている】のだ

列順にずらすことと、行順にずらしている
すると、こんな感じで揺れ物を付ける事ができる

少々作り込めば、ソレっぽくはなる
おしまい・・・・って、そういう事じゃない

この手法の要は、”ずらす事” なので
ワザワザ手でやらなくてもいい
ココは賢く、スクリプトを利用してみよう

 

ディレイスクリプトを使う

といっても、大した話しではない
さっき手で作った、”ずらし”を自動で行う様にするのサ
つまり・・・こういう事だ

こんな感じで、一つの”オブジェクトの動きをずらし”て
手でやった方法を簡単に作成するのサ

まぁ、どこででもやっている方法だとは思うので
珍しくはないと思うけど

サンプルシーンを付けたよ
簡単なのでリガーならば見れば分かると思う
(サンプルはページ下記にあります)

 

それでは、簡単に解説

構造は、ベース、スクリプト、オフセット

といった感じ

構造はこんなモンだ

ベースを設ける事で、常に値が0起点でアニメーションを再生できる

オフセットは、スクリプトで揺れた結果に
さらにアニメーションを加える時にでも使う
言わば、アニメーションレイヤだ

アトリビュートの設定

アトリビュートに、コントローラーとなる
オブジェクトを設定出来るようにしている
方法としてはnodetransformMonitorを使って
アトリビュートのプロパティにオブジェクトを保存する

スクリプトはこんな感じだ

[as3]

/********************************************************
オブジェクトを選択して
Ctrl+Eで実行
*******************************************************/
newAttrib1 = attributes Params –アトリビュートに追加
(
parameters Params rollout:param_rol
(

targetNode type:#maxObject; –tabSize:0 tabSizeVariable:true;
delay type:#float animatable:true ui:delaySpn default:0;
ratio type:#float animatable:true ui:ratioSpn default:0;
sjRoller type:#boolean animatable:false default:true;

);–param end

rollout param_rol “Setting” width:180 –height:316
(
fn update_Fn =(
try(param_rol.deleteBt.images = #(“$Scripts/SJTools/Images//SJ_button_delete.png”, “$Scripts/SJTools/Images//SJ_button_delete_a.png”, 2, 1, 1, 2, 2)
)catch();
–アップデート時にはボタンに文字列を適応
if (targetNode != undefined) and (isvalidnode targetNode.node) then
(
–オブジェクトが有効なら
param_rol.pickBt.caption = targetNode.node.name;
)else(
–有効でないなら
param_rol.pickBt.caption = “Undefined”;
);–if end
);–fn end

label lbl1 “ターゲットオブジェクト” pos:[8,12] width:144 height:16
label lbl2 “Delay” pos:[8,68] width:40 height:16
label lbl3 “Ratio” pos:[8,92] width:40 height:16
–label lbl4 “Random” pos:[8,116] width:40 height:16
spinner delaySpn “” pos:[52,68] width:76 height:16 range:[-1e+006,1e+006,0]
spinner ratioSpn “” pos:[52,92] width:76 height:16 range:[-1e+006,1e+006,0]
–spinner ZSpn1 “” pos:[52,116] width:76 height:16 range:[-1e+006,1e+006,0]
pickButton pickBt “Undefined” pos:[8,32] width:100 height:28
button deleteBt “X” pos:[108,32] width:20 height:28 toolTip:”削除”; –images:delImg;

–////////////////////////////////////////////////
–アクション
–////////////////////////////////////////////////
on pickBt picked obj do
(
–ターゲットを格納
targetNode = (nodeTransformMonitor node:obj forwardTransformChangeMsgs:false);
pickBt.caption = targetNode.node.name;
–classOf targetNode
);–end

on deleteBt pressed do
(
targetNode = undefined;
update_Fn();
);–end

on param_rol open do
(
–アップデート
update_Fn();
);–end
);

)–end attributes
custAttributes.add $.modifiers newAttrib1;

[/as3]

少々長いが、大した内容ではない
単に、パラメーターを作って、そこに、オブジェクトを保存しているだけだ
対象オブジェクトが消えているかどうかの処置もいれてある

delay は ずれるフレーム数
ratio は アニメーションの強さ(1でターゲットと同じ)

続いて

 

ディレイスクリプトの設定

スクリプトはコレだ

さっきのアトリビュートの設定を拾って、
実際に値を与えてみる、こんな感じサ

[as3]

if (this.modifiers[1].targetNode != undefined) then
(
local f = currentTime – (this.modifiers[1].delay);
local v = this.modifiers[1].ratio;
–at time で指定時間からの取得
local x = at time f (in coordsys #parent(this.modifiers[1].targetNode.node.rotation.X_rotation)) * v;
local y = at time f (in coordsys #parent(this.modifiers[1].targetNode.node.rotation.Y_rotation)) * v;
local z = at time f (in coordsys #parent(this.modifiers[1].targetNode.node.rotation.Z_rotation)) * v;
(eulerAngles x y z);
)else
(
(quat 0 0 0 1)
);

[/as3]

ミソは、 at time f の部分
この部分で、ターゲットの回転値などを”ずらして”取得している
ほか、in coordsys parent とすることで、親からの参照値として計算する
その方がアニメーションが素直だ
thisとう名の変数を作っているので注意、変数がないとエラーが出てしまうのサ

 

サンプルシーンとツール

ろーらーで一度に編集できるのサ

ひとまず、

こんな細かい設定を
手でやらなくてもいいように
すでにできあがったシーンを
サンプルで付けておいたサ

使うときは、
【オブジェクトを構造ごとコピー】すれば、【スクリプトもコピーできる】

論より証拠、使えば分かると思う


ダウンロード:ディレイスクリプト

ほか、ろーらーを使って頂ければ
リストで一気に値が設定できるのサ

ろーらーはこちらから

 

ふぅ

ひとまず、ずらしの揺れ物はこれで簡単に付けられるはずだ
でも先も上げたが、

単に揺れているだけで
映像的な善し悪しは、別問題!!
注意が必要だな!

あっはっはっはっは

 

次回は、シミュレーションと
その”爆発力”について語っておこう


Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

One thought on “アニメーション 揺れ物に愛を その3