お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

Second Life(セカンドライフ) - タイニーアバター検証(1):アニメーションの優先度

2007/10/28 02:02
  • このエントリーをはてなブックマークに追加

ミキ・オキタWebClip ウェブデザインのニュース


とにかく小さい形状を「維持する」アバター

こんにちは。“時代の3歩先をねらうWeb屋さん”ミキ・オキタです。
このブログ「WebClip ウェブデザインのニュース」では、Webデザイン・Webマーケティングの話題をお届けしています。最近はSecond Life (セカンドライフ)が中心です。

前回より、別のオンラインゲーム「女神転生IMAGINE」に出てくる「エアロス」というキャラクターをアバター化しようと目論んでいる。

20071014_aeros_s.jpg
エアロスってこんなの。

前回は、インビジプリム(透明化プリム)で身体を隠す方法を検証した。
インビジプリム(透明化プリム)部分的に身体やオブジェクトを隠すには素晴らしい。
ただし、全身にまとってみると不具合が多かった。

前回の記事の翻訳にもたひたびあるように、インビジプリム(透明化プリム)は、その背後にある透明度をもつすべてのオブジェクトを透明化してしまう。なので、たとえば窓ガラスの前にたつと影がすっぽり見えて、非常に格好悪い。
そんなとき、前回の記事で紹介させていただいたoitake氏より「アニメーションで下半身を折りたたむ」というアドバイスをいただいた。

oitake氏のブログ

確かに、下半身を折りたたんで、腹の中に隠してしまえば、それだけでもエアロスになるかもしれない。
だが、実際はそんなに単純では済まなかった。

そんなわけで、今回からは次の技術について、検証していく。

  • タイニーアバター(Tiny Avatar)
  • アニメーションの優先度
  • AO(Animation Override アニメーション・オーバーライド)

最終的にはエアロスにしたいが、検証でわかりやすいように、まずは「とにかく小さい形状を維持するアバター」をつくることを考えることにする。

ところで、どこかこういう情報をきちんと既に検証して掲載しているサイトはないんだろうか・・・。Googleで探しても見つからない・・・。

アニメーションの優先度の基礎は「何も設定されていない」こと

まず、最初に行ったのは、アニメーションの優先度の検証。

Second Life(セカンドライフ)では、アバターに動きをつけたり、ポーズを取らせたりするために、アニメーションという機能を使う。
ジェスチャーやポーズもすべてアニメーションだ。
テクスチャや音声と同じく、アニメーションも1ファイル10リンデンドルでアップロードできる。
制作には、フリーソフトのQAvimatorやAvimator、市販のPoserといったソフトを使う。今回はAvimatorを使った。

Avimator

アニメーションにはそれぞれ「優先度」が定められている。
アニメーションは複数同時に再生される。アバターには「優先度」がもっとも高いアニメーションが適用されるが、そのアニメーションで定義されていない身体の部位については、次に「優先度」が高いアニメーションが順次適用されていく。

たとえば、「右手を挙げるアニメーション 優先度4」を再生するとアバターは右手を挙げる。
この状態で「左手を挙げるアニメーション 優先度3」を追加で再生すると、両手でバンザイした状態になる。

20071004_avi_1_1s.jpg
「右手を挙げるアニメーション 優先度4」 Avimator


「右手を挙げるアニメーション 優先度4」

20071004_avi_1_2s.jpg
「左手を挙げるアニメーション 優先度3」 Avimator

20071027_img_1_6s.jpg
「左手を挙げるアニメーション 優先度3」を追加で再生

右手を挙げるアニメーションでは左手は水平にしている。感覚的には、優先度3のアニメーションは再生されず、全身が優先度4の「右手を挙げる(左手は水平)」アニメーションを継続しそうなところだ。
ここがはじめに戸惑うところだ。

実は、この右手を挙げるアニメーションについて、Second Life(セカンドライフ)のシステムは、「左手を水平にしている」アニメーションだとは理解せず、「左手に何のアニメーションも設定されていない」と理解する。
そのため、何も設定されていない左手には優先度3の「左手を挙げる」アニメーションが再生され、結果としてアバターはバンザイする。

また、同じ優先度のアニメーションを再生した場合、基本的には後から再生したほうで上書きされる。
(ただし、試してみると、実際には意図どおり動作しない場合もあり、苦労する)

主要なアニメーションの優先度一覧表

優先度は、一般には1?4までの範囲で設定できると言われているが、厳密には間違っている。試したところ、0?4までの5段階で設定できた。

20071027_img_1_1s.jpg
アニメーションの優先度を0に設定

20071027_img_1_2s.jpg
優先度0のアニメーションを再生したところ

ただし、優先度0のアニメーションは、それ以後に何らかのアニメーションが再生されると、以後上書きされたまま戻らない。初期設定の歩きポーズにすら上書きされてしまう。これの設定を何に使えば良いかは思いつかない。

Second Life(セカンドライフ)では、アバターに初期状態で設定されているアニメーション、立つ、歩く、飛ぶ・・・などは、一般には優先度2だと言われている。

・・・が、これも正しくないようだ。試してみたところ、アニメーションによって優先度が異なるうえ、全身を上書きしているアニメーションと身体の部位のみを上書きしているケースもあり、わかりづらい。

実際試してみると、優先度4のアニメーションでも、上書きされてしまうケースがあった。
以下に主なアニメーションについて検証した結果。

初期設定のアニメーションの推定優先度
優先度(推定) 優先度1
上書き
優先度2
上書き
優先度3
上書き
優先度4
上書き
Sitting on Ground 地面に座る 3 × × ×
Sitting プリムに座る 4 × × × ×
Striding 大股で歩く 該当動作不明 - - - -
Crouching しゃがむ 1 ×
CrouchWalking しゃがんで歩く 1 ×
Soft Landing 軟着陸 3 × × ×
Standing Up 立ち上がる 3 × × ×
Falling Down 落ちる 3 × × ×
Hovering Down 飛んで下降する 3 × × ×
Hovering Up 飛んで上昇する 3 × × ×
FlyingSlow ゆっくり飛ぶ 3 × × ×
Flying 飛ぶ 3 × × ×
Hovering 浮く 3 × × ×
Jumping ジャンプする 3 × × ×
PreJumping ジャンプしようとする 3 × × ×
Running 走る 3 × × ×
Turning Right 右を向く 3 × × ×
Turning Left 左を向く 3 × × ×
Walking 歩く 3 × × ×
Landing 着陸する 3 × × ×
Standing 1 立つ 2 × ×
Talking Off 話す 2 × ×
Away 離席 2 × ×

上記の結果からわかるように、単に腕や足を折りたたむアニメーションを再生していても、ふとした拍子に折りたたんでいた足が出てしまう。
とくに問題になるのが「Sitting(プリムに座る)」アニメーションで、検証した限り、これは下半身にのみ設定されたアニメーションで優先度4の強さがある。
そのため、上半身・下半身ともに優先度4のアニメーションを再生している状態でプリムに座った場合、下半身は座るアニメーションで上書きされ、上半身はそれまでのアニメーションが継続する。
下半身を元に戻すには。再度元のアニメーションを再生しなおしてあげないといけない。

20071027_img_1_7s.jpg
元の優先度4のアニメーション

20071027_img_1_8s.jpg
優先度4のアニメーションを再生中に、プリムに座ると、上書きされてしまう。

20071027_img_1_9s.jpg
アニメーションを上書きしなおすと再生する

更に、もうひとつ留意する点が判明した。アニメーションはシム(SIM)をまたぐと再生がストップする。これはアニメーションの優先度に関わらず停止するようだ。
ステータスは再生になっていても、画面では再生されない。優先度4でも止まってしまう。
たとえば、アニメーションで腕や足を折りたたんで腹の中に隠していても、シム(SIM)をまたいだとたんに全部出てきてしまう。
次の記事に詳細を書くが、これ以外にも注意点がある。

フェーズイン・フェーズアウトは設定されたアニメーション自身にしか影響しない

気になったので、あわせてフェーズイン・フェーズアウトについても少々検証。

フェーズインは既存のアニメーションから再生したアニメーションへ変化するのに要する時間。
フェーズアウトはその逆で、再生していたアニメーションから元に戻るのに要する時間だ。
試してみたところ、それぞれ10.0まで設定できた。

注意事項で、フェーズインの値付近には操作バグがあるのか(僕のパソコンだけ?)、ループにチェックを入れないと、フェーズインの値の最大値が0.033から上がらなかったり、突然数字が動かなくなったりする。

20071027_img_1_4s.jpg
アニメーションのアップロード画面

このフェーズイン・フェーズアウト、他のアニメーションとの変化時間は干渉するのだろうか?
優先度2で、フェーズイン・フェーズアウトを限界値10.0まで長くして検証した。
結果は、他のアニメーションが再生されたとたん、瞬間的に上書きされてしまった。
そして他のアニメーションが終わるとまたもとのアニメーションに戻った。
フェーズイン・フェーズアウトはそのアニメーション自身の開始・終了にのみ影響し、他のアニメーションに上書きされたときは影響しないようだ。

ちなみにフェーズアウトのアニメーション移行中に、他のアニメーションを再生すると上書きされるが、停止すると元の移行中にアニメーションに戻った。

おまけで試してみたが、ループインとアウトはアニメーションの再生位置の指定で、同じ値を指定して固定したポーズの再生もできるようだった。

アニメーションを繰り返し自動的に再生し続ける仕組みが必要

さて、上記までの検証からわかるように、アバターを折りたたんでおくためには、優先度4のアニメーションを繰り返し自動的に再生し続ける仕組みが必要だ。
そうしないと、ふとしたはずみでせっかくの姿勢が崩れ、手足がはみ出てしまう。
それには、AO(Animation Override アニメーション・オーバーライド)を使う。

次回は、AO(Animation Override アニメーション・オーバーライド)について検証する。

[女神転生IMAGINEについて]

© ATLUS
© CAVE
当ブログに掲載されている「女神転生IMAGINE」の画像及び文章等の著作権は、株式会社ケイブ及び株式会社アトラスに帰属します。
無許可転載・転用を禁止します。

女神転生IMAGINE





アクセスカウンタ:

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー