AnimeStudio 9 pro smartbone覚え

CG技術・3D

AnimeStudioも9が出ました。(英語版のみ)イーフロンティアから出てるAnime Creator はいつ9になるのかわかりませんが、私は英語版を日本語ファイルで翻訳して使ってるのでもう購入しちゃいました。64bit正式対応ということで確かにずいぶん軽くなった気がします。あとオニオンスキンの改善、レイヤーのパレット色設定が可能になったこと、タイムラインの操作の大幅な改善などが今回のバージョンアップの主な点ですね。

で今回は9pro版の目玉であるsmartboneに関する簡単な覚えです。続きからどうぞ(現在まだ途中ですが)。その前に9日本語化の方法とscriptの仕様が変わったことへの対処方法の覚えをつけておきます。

2012-10-19 一応完成。

9日本語化方法・スクリプト訂正方法

以前書いたこちらの方法と同じです。ASのプログラムファイルのあるフォルダのResorce>stringフォルダに解凍してできたStrings.JA.txtを入れASを立ち上げ、メニューのedit>preferenseのlanguageをJapaneseにして一旦終了しまた立ち上げます。すると再度シリアルを聞かれるのでもう一度入れます。これでOK。今回はスプラッシュ画面はアニクリになるのを見越してかすでに用意されていますので、作成する必要はないようです。

スクリプト等従来8で使っていた自作素材なども基本そのまま8の時と同じ名前のフォルダにコピーすれば大丈夫です。(lmではじまる公式のスクリプトは今回機能追加等されてますので、上書きコピーしないようにしてください。)

ただ今回ユーザーメイドのscriptは幾つか使えなくなってしまっているものがあります。これはscriptフォルダの階層が変わってしまったせいもあるのですが、Luaの仕様が変わっているからです。utilityフォルダを一緒に導入の際にコピーする複雑なスクリプトではダメな場合もありますが、以下の方法で回避できるものもあります。(公式フォーラムのこちら参照

実行しようとするとエラーメッセージが出て末尾にRefresh()という単語が出てくる場合、scriptフォルダから該当するスクリプトを探してメモ帳などで開きます。(ただし変更する際にセキュリティ設定によっては上書きできないかと思いますので、その場合はまず該当のファイルのプロパティを右クリックで開き、セキュリティタブから該当するPCユーザーを選んで編集でアクセス許可をフルコントロールにしてください)
そして
mouseEvent.view:Refresh()
をすべて
mouseEvent.view:RefreshView()
に置換して保存します。これで使えるようになるはずです。もしこれで無理なら何かコピーしてきたファイルが足りないかスクリプト作者さんによる対応を待たないといけません。

 

smartbone(1)超基礎

今回のpro版の目玉はsmartboneという機能です。これは要はポイントに限定したモーフブレンド+αをボーンの操作で加減して行うというものです。どういうことができるかは公式フォーラムのこちらを見ていただければだいたい分かると思います。あとこれとか。

 

実際超簡単なのを作ってみましょう。まずフレーム0でボーンを作り、その中にベクターレイヤーを入れます。

ボーンレイヤーにボーン作成ツールで一本作り、ボーン影響範囲ツールで範囲0にします(場合によっては0にしなくて可ですがこの場合はとりあえず)。そしてボーン選択ツールで選択し名前をB1にします。
下のベクターレイヤーには図形作成ツールで適当に丸を描きました。

そしてメニューのウィンドウ>アクションを開きます。

左上の新規アクションボタンで、smartboneを設定したいボーン名と同じ名前のアクションを作ります。


すると、ボーン名と同じ名前のアクションはSmart Bonesというタブにも共通の行ができてきます。
そしてモーフのタイムライン設定画面に移ります。これは実際のアニメーションのタイムラインとはまた別のものです。(実際のアニメ作成に戻る際にはメインラインをダブルクリック)

試しにフレーム1で、ボーンを時計回りに90度回転させます。

タイムラインはこんな感じになりますね。


そしてベクターレイヤーで適当にポイントを動かします。これだけで設定は完了です。アクションウィンドウのメインラインをダブルクリックして実際の制作画面に戻ります。


メインラインで、smartboneを設定したボーンB1を時計回りに回転させると…


こういう風に、時計回り90度になるまでだんだんとボーンの角度に従ってモーフィングしていくという寸法です。

 

smartbone(2)中間アクションと逆向き

回転は別に時計回り90度に限りません。360度グルッとしたっていいのです。また、回転する途中で別の形を経由することもできます。

 また新しくアクションを1から設定するため、とりあえずメインラインのキーフレームを消去します。(このバージョンから従来タイムライン上にあった削除等のボタンがなくなっていますが、delキーやCtrl+Vなどのショートカットまたはメニューの編集コマンドで行えるようになっています。)

(8pro)

(9pro)
キーフレーム追加はタイムライン上で右クリックして行います。Smoothの横の数字は、指定した範囲だけxコマ落ちにできるという便利機能です。他にもタイムラインに関してはいろいろ変わってますがまたの機会に。

話戻って、アクションでB1をダブルクリックして設定に入ります。ボーンとベクターのそれぞれ1フレームにキーフレームがありますね。これをタイムライン上でドラッグしてCtrl+Cでコピーし、24フレーム目に移動してCtrl+Vでペーストします。ボーンとベクターどちらもです。
そしてフレーム1を同様にフレーム0をコピーしてフレーム1にペーストすることで初期化します。(このままだと微妙に変形しちゃってるので念のため)

タイムバーを動かすと、1フレーム目から24フレームまでの動きが確認できると思います。(念のため24フレーム目のベクターをこのままの形にしたい場合コピーして後の方にペーストしてバックアップしておきます)ここで、12フレーム目に移動して、ボーンとベクターでそれぞれタイムライン上で右クリックし、キーフレームを作成します。こんな感じになってると思います。

 


このボーン45度の状態だけ、ベクターの方を更に変形させたいのでベクターの編集をしてしまいます。


24フレーム目も確認しておきましょう。(なんかさっきと違う場合さっきバックアップしてたのをコピペしてきます(コピー元は消す))実際にメインラインに戻って、さっきと同様にボーンを動かしてみましょう。中間アクションのかかり具合が確認できると思います。

 このようにしてアクションを設定していきますが、フレーム0から時計回りするのと反時計回りするのとでは別の設定をしないといけません。逆回転の場合、新規にスマートボーンアクションを作成し、名前を(設定したいボーン名) 2にします。2とボーン名の間には半角スペースを入れてください。

また、スマートボーンで設定できるのはポイントに関する変形だけです。つまりポイント移動、ポイント曲率、ポイントごとのストローク幅設定だけなのです。(追記:9.2アップデートで格段にやれることが増えました。スマートボーンがあるボーングループ上の別のボーンの変化、ボーングループ内のレイヤー移動回転等、またシェイプの色替えなどほぼ従来のモーフィングと同じことができます。ただ子階層ボーン・グループ内までは制御できません)(追記2:9.5でレイヤー順移動などが更に増えています。詳しくはこちら)従来のモーフィングでは中間アクションは設定できませんが、レイヤー移動やシェイプのカラー等も設定できます(逆変化も可)状況によって使い分けると良いでしょう。モーフィングについてはまた後で。

続きはまた仕事の後で…

 

smartbone(3)スクリプトを利用する

だいたいの使い方はこうなんですが、ボーンの名前をいちいち確認して打ち込んだりコピペするのは数が多いと予想以上に手間なものです。のでそれを保管するためのスクリプトがユーザーメイドで出ています。
Smart Bone Helpers by Ramón López http://www.lostmarble.com/forum/viewtopic.php?f=12&t=23041

Anime Studio Pro 9のルートフォルダの中、Resources\Support\scripts\toolに解凍した中の.luaと.pngを放り込み、toolフォルダの中の_tool_list.txtに次の5行を付け加えます。(セキュリティ上書き換えられない場合は予め_tool_list.txtを右クリックしてプロパティからセキュリティの設定を変更しておくこと)

group MOHO.Localize(“/Tools/Group/SmartBones=SmartBones”)
button rl_smart_bones_add M
button rl_smart_bones_n1 ,
button rl_smart_bones_n2 .
button rl_smart_bones_remove /

 (M , . / はショートカットキー設定をする場合ですので不要な場合は…に置き換えてください)

ASを立ち上げるとツールパレットにsmartbonesというグループが増えて4つのボタンが増えているはずです。

 

例えばこんな長くてめんどくさいボーン名をつけたのを普通にスマートボーンにしようとすると結構めんどい。でも設定したいボーンを選択した上でこのグループの左端の+ボタンを押すと、一発でそのボーン名のついたスマートボーンアクションを作ってくれます。


もう一回+を押すと、逆回転用のスマートボーンアクションができます。

1,2と書いてあるボタンは、スマートボーンを設定しているボーンを選択した後押すと、この順回転用と逆回転用のスマートボーンアクションの編集にそれぞれアクセスするためのものです。ちなみに繰り返し押すと、アクション編集とメインラインに戻るのを繰り返します。

また、スマートボーンアクション編集の際に-ボタンを押すと、そのスマートボーンアクションを削除します。

 

smartbone(4)2ボーン併用変形

複数のスマートボーンを併用するとどうなるのでしょう?


例えば上にABC…、下にJKL…とつけた2つのボーンにそれぞれ順回転と逆回転のスマートボーンアクションを付けてみます。単純に円の移動で試してみましょう

ABC順回転で上

ABC逆回転で下

JKL順回転で左

JKL逆回転で右

ABC順回転とJKL順回転をメインラインで同時にさせてみると単純にこうなります。こうやってアクションを組み合わせて、例えば口を開ける×口角を上げる=口を開けて笑うみたいな動きをつけていくわけですね。

smartbone(5)入れ子構造の場合

たとえばこんなレイヤー構造で、最上階層ボーングループLayer3にあるB1ボーンに以下のようにスマートボーンアクションを設定すると結果はどうなるでしょうか?

結果はこうなってしまいます。実はsmartboneは子関係にあるグループやボーングループの中まで(スマートボーンアクション設定画面では一応設定できるのですが)突き抜けて動かすことができないのです。この仕様は結構厄介で、例えば腕と上腕部分袖をそれぞれマスキングのために子階層に入れてしまうと同じ一本のスマートボーンアクションで制御できないということになってしまいます。割り切ってすべて同じ階層に置くようにしてしまうか、それぞれの子階層ボーンでさらにスマートボーンアクションを作って別々に制御しないといけません。

あとすごく重要なことを書き忘れてたのですが、スマートボーンでポイントを制御するには、設定しようとするベクターレイヤーはレイヤーごとボーンにバインドするのではなく、ポイント割り当てにしないといけません(レイヤーごとすでにバインドしてる場合はメニューからボーン>レイヤーの解放 を行い、ツールのボーン>ポイント割り当て)。言われてみりゃそりゃそうだって話なのですが、最初のころ何で動かんのだ…ってかなり悩んだので念のため。(追記:このへんはいつの間にか改善されたようです。子階層グループの中は相変わらずいじれませんが、smartboneで別のsmartboneを動かし連動させることが9.5で可能になったため大分ましになりました。)(追記2:9.5でボーンがネストできるようになったため、「子階層のボーンレイヤーにボーンが配置されておらずなおかつそのボーンレイヤーが上の階層のボーンに親設定していない」という条件のもとなら、その中に入っているベクターもスマートボーンで直接いじれるようになりました。)

 

モーフブレンド(1)従来のモーフィング

 さて、従来よりASには似たような機能としてモーフブレンドというのがありました。というかsmartbone自体がモーフブレンドの発展系機能なのですが、この項ではモーフについての覚書をしていこうと思います。

モーフブレンドはスマートボーンと同じくアクションから作ります。アクションを作る際に適当に(ボーン名とかぶらない)名前を付けて、アクション編集の1フレーム目で変形を設定します。これでOK。

・重要なのは1フレーム目のみに設定すること。ほかのフレームにもキーフレームがあるとモーフとして認識してくれません。つまりsmartboneのように中間アクションが設定できません。
・アクションの新規作成ボタンを押し名前を付けると、子階層まで一挙にALLタブで同名のアクションができています(アクションパレットのタブは9からの機能)。が、1フレーム目のみにアクションを設定したレイヤーでのみ、そのアクションはRegularタブからmorphタブに移動してきます。
・その代り子階層まで制御できるのと、ポイント以外の様々な要素の変化が設定できます。

実際やってみましょう。

アクションパレットで1というアクションを新規作成し、以下のようなレイヤー構造で最上部のボーンとそれぞれのベクターレイヤーに以下のようなアクションをフレーム1のみで付けました。

こういう構造で…

フレーム0

 


アクションを設定しフレーム1にのみそれぞれこういう変形をかけてモーフにしたもの。ポイント変形だけではなくストローク露出やレイヤー移動・シェイプ色変更も使ってます

そして8ではメニューのアニメーション>モーフ合成、9ではウィンドウのBlend Morphs(日本語化で置き換わってないので)を開くと、モーフスライダーが現れます。これらの画面は9のもの。

モーフ合成には2種類あって、絶対的(Absolute)と相対的(Relative)があります。絶対的はアクションのフレーム1を100%としてフレーム0からの変化量がそのまま反映されます。(デフォルトを同時に100%にするとちょうどその中間つまり50%になる)相対的を使うと倍の移動量200%までつけられさらに逆への変化もできます(9より)。

でタイムライン任意の場所でモーフスライダーを動かすとスライド量に応じて変化が起きるのでApplyをして適用していきます。

 

ただ変化をくりかえすと期待した変化にならずわけがわからなくなってくるので、例えば12フレーム目で絶対100%にして24フレーム目で絶対30%に戻すなどするときは、24フレーム目に移動したときに一度リセットしてデフォルトを100%にしてフレーム0の状態に戻して適用してから(状態戻ってスライダーも戻る)モーフを30%にして適用する、とした方がわかりやすいでしょう。相対の場合はデフォルトスライダーは動きませんがやはり設定する前に一度リセットを押してから必要な%指定をした方がいいかもしれません。

モーフブレンド(2)便利スクリプト

そもそも公式にスマートボーン機能ができたきっかけがこのユーザーメイドの便利スクリプトでした。

Anime Studio Forum • View topic – Bone morph dials script http://www.lostmarble.com/forum/viewtopic.php?f=12&t=14122&sid=ee4fb67afe8da5a4fc2c2b6c8bec5aab

モーフブレンドをボーンの位置角度によって制御しようというスクリプトです。


とりあえずの使い方

・0.3版をダウンロードし、解凍してできたrt_apply_morph_weightsをASで制作しているファイルと同じ階層にコピーします(テスト段階とかなら別の階層でもいいですけど、保存して継続作成するような場合立ち上げ直すとまたフォルダ階層指定しなおしとか手間かかるので)
・MorphDialsというボーングループを作り、ボーン(影響範囲0にする)を作成し、そのボーンで制御したいモーフの名前にします。
・MorphDialsのボーングループの外に変形させたいレイヤー(グループやボーングループに入ってても可)を作り、レイヤーパレットの・・・をクリックするかレイヤー行ダブルクリックでレイヤープロパティを開きます
・さっきのスクリプトrt_apply_morph_weightsを埋め込み(embedded)します。変形対象にしたいレイヤー全てに。グループやボーングループでも可
・埋め込んだレイヤー全てで、先ほど作成したボーンと同じ名前のモーフを作成します。
・メインラインに戻って、MorphDialsの中のモーフ名のボーンを回転させてみると、そのボーンと同名のモーフを設定したレイヤーがボーンの動きに応じて変化します。モーフ以上の変化量や逆向き変化もできます。

ただ、Smartboneと違い、何度回転させると100%になるとかがいまいちわかりづらいのが難点。

このスクリプトにはもう一つ、先ほどのsmartboneでの複数ボーン併用変形のようなことができるやり方が用意されています。2番めの動画で出てるようなやり方です。

・MorphDialsボーングループをつくり、モーフ名のボーンを作り変形対象にスクリプトを埋め込んでモーフを設定するところまでは一緒。
・2つ目(例えば1つ目がangry、2つ目がsmileとします)を同じように設定します。
・ここで、もう一つMorphDialsボーングループにangry;smile(区切りは半角;)というボーン(影響範囲0)を作成します。全てのボーンのIKリンクは切っておいてください。タイムライン上でこのangry;smileをボーン移動ツールでangryかsmileに近づけると、距離に応じてモーフ変化が起きます。

ただ、こちらだと例えばangryとsmileを同時に100%にする事はできないので使いどころは考えないといけません。
また、環境によってはかなり重くなりますし、レイヤーにスクリプトを埋め込んでしまうので他の埋め込み系スクリプト(他にもレイヤー複製ポイント移動追従とかボーンを親階層ボーンと同じく動かすとかあるのですが)が使えなくなってしまうのでそこら辺がデメリットでしょうか。でもかなり便利なスクリプトですので、smartboneと使い分けて動き付けなどに利用されると良いと思います。

 

 番外:スイッチグループの切り替えをスマートボーンのように行うスクリプト

またこちら(準備中)でスイッチグループについてちゃんと書いたらそちらに移動しますが、とりあえず覚書です

Anime Studio Forum • View topic – Control all switch layers and bones from parent bone layer http://www.lostmarble.com/forum/viewtopic.php?f=12&t=22830&sid=b91ef1f522db00b887abe8d5d380e5a0

表題通り、スイッチグループの切り替えをボーン角度によって制御するユーザースクリプトです。また、ボーンの拡縮にともないスイッチグループを拡縮することもできます。

使い方
・上記フォーラムページからスクリプトの.zipを落として解凍する。できた.luaをさっきのmorphdialのと同じように編集するASドキュメントと同じ場所にコピーしておく
・ボーングループを作り、そこにこのhm_switch-layer-bone-control.luaを埋め込む
・ボーングループの中にスイッチグループを作り任意の名前にし(例:body)、その中に切り返したい内容を作る。スイッチグループの中にさらにスイッチグループを作っても可(例:hand)。
・スクリプトを埋め込んだボーングループに、そのボーンで制御したいスイッチグループと同じ名前のボーン(影響範囲0)を作る(ここではbody)。そしてボーン設定(英語版日本語訳だとコンストレインツ。あにくりではどう訳されてるんか知らん)で可動範囲を-90~90にする
・タイムライン上でこのbodyボーンを動かすと、フレーム0の角度に対して-90度をスイッチグループ内の一番上のレイヤー、90度を一番下のレイヤーとしてレイヤー枚数で均等に割って切り替わっていく

同じくhandボーンを作って動かすと、bodyスイッチグループの中にあるhandスイッチグループもちゃんと動いてくれます。また、bodyボーンをボーンスケールツールで拡大縮小すると、bodyスイッチグループの大きさもそれに応じて変化します。

もうひとつ便利な機能があって、このスクリプトを埋め込んだボーングループにあるボーンと同名のボーンをスイッチグループに作ると、埋め込んだボーングループのボーンを動かすと下(第一階層まで)のスイッチグループのボーンも追従して動いてくれます(この場合bodyスイッチグループに更にスクリプトを埋め込んで入れ子でもOK。ただし角度だけならいいけど位置を動かすと下も同じ所まで動いちゃうので注意)。たまに上の階層のボーンと下のボーンと一緒の動きをさせたい!って時があるのですが、そういう場合にはとても便利だと思います。

Copied title and URL