Adsense

2012年7月11日水曜日

mldu5+ ノートカードとプレイリスト

2012/8/13 新しい mldu5+(5.5+) ではノートカードのリモート更新機能を追加して、ここで紹介しているいくつかの問題を解決しています。以下のブログを参照してください。
http://snumaw.blogspot.jp/2012/08/mldu5_5.html

こんにちは。今日は multi motion mldu5+ の、たぶん難しいなぁ、と感じるノートカードとプレイリストの関係をご紹介したいと思います。MLDUシリーズは 2008年一般発売の MLDU3 から同じ仕組みなので知っている人も多いとは思いますが、mldu5+ では複数モーション指定とアバタ―位置・回転指定が加わった、そして扱うプレイリストの数が 35 に増えたのでノートカード(Animations, Animations 1, Animations 2, ….)をみると「うわぁ、、、」となっちゃうことが多いと思います。

コンテンツロード中

「中身」が表示されるまで時間がかかりますが、、、待ってください。状況にもよりますが 表示まで30秒以上かかることがあります。

コンテンツアニメーション枠付き
(フルパーミッションの編集可能な Animations が表示された状態)

multi motion mldu5+ (MLDUシリーズ) は Huddles EZ のようなダンスリストから踊りたいダンスを選択する方式をとっていません。各ノートカード(Animation X) に1つのダンスを入れればできないことはないのですが、現実的ではなく、そもそものコンセプトが違うからお勧めできません。(そうしたい場合は Huddles EZAD を併用するが一般的ですね)そのコンセプトのお話しから始めます。以下、文章が長いですがお付き合いいただけると幸いです。

 

MLDU の成り立ち

MLDU は元々、そう、まだ「ダンスマスター」(ダンマス)と呼ばれる役割の人が明確にいなかったころのクラブでの利用を念頭に、複数のダンスを順番に(ときにはシャッフルして)自動再生することを目的として作りました。テストをしていたクラブが「ASUKA 雷神」だったので 50 人程度のアバタ―が同時にシンクロダンスを踊れる仕組みを作るのが最初でした。

BPM (Beat Per Minutes) が同じの、ジャンル的にも似たようなダンスをその再生秒数と一緒に1枚のノートカードに記述して、そのプレイリスト(当時はダンスセットという呼び方をしていました)を選択すれば、BPM が比較的近いダンスを複数楽しめるようにしたのです。実際のダンス名ではありませんが、以下のような書き方をしていました。

<GLAMOROUS>
SineWave001,   22.4
SineWave005,   26.2
AbranimationA, 14.0
Animazoo01,     18.5
3FX dance,        22.0
</GLAMOROUS>

そうすると、ダンス選択のプレイリスト ダイアログには [GLAMOROUS] というラベルのボタンが出てきます。[GLAMOROUS] ボタンを押せば、SineWave001 を 22.4 秒、次に SineWave005 を 26.2 秒、、、と続き、最後の 3FX dance を 22.0 秒再生したら、またトップの SineWave001 に戻る、という動きをします。

この単純なノートカードでも、特に ASUKA 雷神オーナーの LINZOO さんは、ダンスで動き回るアバタ―の位置が次のダンスの開始位置と「重なる」時間を測定して、ノートを構成していったのでした。その仕込みがあって、複数のダンスなのに一連の流れで踊っているような「プレイリスト」を作成していたのです。ダンスとダンスのつなぎでいきなり位置がかわるようなことがあまりないわけですね。

実はこの作業は現在の SL ダンスの仕様が色濃くでています。ダンスアニメーションの「頭から終わり」の再生時間はコントロールできるのですが、「途中」からダンスを再生するのは普通はできません。凄腕のダンマスの中には Huddles を複数つかって「オーバーライド」というテクニックを使い、ダンスの途中から再生させる猛者もいますが、相当難しい操作と勘を必要とするので一般的ではありません。(オーバーライドについてはここでは詳しく説明しません。)

つまり、、、複数のダンスを組む場合は、ダンスの「最初」のポーズや位置がとても重要になるのです。ダンス慣れしている人だと、最初の位置とポーズを見ただけで使えるか使えないかが判断できる、という話を聞いたことがありますし、本当にそう思います。

 

MLDU5/mldu5+ での仕様拡張

MLDU4 まで上で紹介したノートカードの書き方で「シンクロダンス」「時間差ダンス」「シャッフルダンス」などのダンスモードの切り替えを可能にしていました。シンクロはアバタ―全員が同期して踊る、時間差はサイクル(mldu5+ではダンスグループと読んでいます)という番号順に 0.5 秒とかダンスの開始を遅らせて踊るモード(チューチュートレインを想像してください、、、というか、あれをやるために機能追加しましたwww)、シャッフルはサイクルごとにランダムにプレイリストの中からダンスを選んで再生させるダンスモードになります。

2007年当時からセカンドライフにカップルダンスはありましたが、BallRoom などで Intan というダンスボールが置かれていて、ドレスやタキシードを着て、ソーシャルダンスを踊る、、、というのがメインでしたので、個人的には興味がありませんでした。ただし、3FX Entertainment のカップルダンスはとてもクールでいつかこのダンス モーションを使えるようにしたいな、、、という思いはありました。

2008年に MikuMikuDance が出てくると、3DCG とダンス好きな私としてはスルーすることができず(笑  MikuMikuDance を 2008年後半くらいからいじりはじめました。そしてすぐに VMD と呼ばれるモーションを BVH モーションファイルに変換するツールが公開されました。それが mio になります。ただし、そのままの BVH ファイルでは SL では利用できず(ボーン構造/ボーン名称が違うため)、うーん、、、となっていたところに SL ユーザーでもあり、プログラマーでもある esetomo さんが MMDBVHToSLBVH.exe をオープンソースで公開されました。

これで MMD の VMD モーションファイルの SL へのインポートが可能になり、それまで SL ではあまりなかった 3人用ダンス(特に Perfume ですね)や4人用ダンス、5人用、6人用、、、という MMD の中でも力作のモーションの再利用が可能になったのです。

実は Secondlife のカップルダンス専用マシンの Intan は 2006年(?)少なくとも2007年にはすでに発売され、カップルダンスマシンのスタンダードとしての地位を確立していました。しかし、その後のスクリプト アップデートや拡張は行われておらず(私の知る限りだと)、3人以上のダンスに対応する、、、と表明していましたが結局されずにそのまま、と記憶しています。

Intan の Web page : http://intan.eksotics.com/?command=page&id=27

つまり、3人以上のダンスを汎用的に(これ重要)踊らせるダンスマシンは、たぶん、、プライベートで作られた方はいると思いますが、インワールドや marketplace で販売しているのをみたことはありませんでした。Huddles EZAD を全員がつけて /99n オプション、、、というのもあるのですが、汎用的ではありませんし、これではアバタ―の「位置と回転」の制御ができず、2人なら手作業や固定sit ballを使えばなんとかりますが、それ以上になるとかなりむずかしそうだったので、 MLDU4 に機能追加することになったのです。(というか、単純に MMD のグループダンスが踊りたかったww)

そこで、MLDU4 が持っていた「サイクル」を使って、時間差ではなく、同時に違うダンスを踊らせる拡張をしました。サイクルという名称がわかりづらかったので、ダンスグループという名称に変えたのもこのためです。以下は3人用ですが、Perfume-Global.com で配布された 3人用ダンスモーションのプレイリストです。

<Perfume(3)>
aachan_0|kashiyu_0|nocchi_0, 30.0, 0|0|0, 1.5|0|-1.5
aachan_1|kashiyu_1|nocchi_1, 30.0, 0|0|0, 1.5|0|-1.5
aachan_2|kashiyu_2|nocchi_2, 30.0, 0|0|0, 1.5|0|-1.5
aachan_3|kashiyu_3|nocchi_3, 30.0, 0|0|0, 1.5|0|-1.5
</Perfume(3)>

<> の中にある “Perfume(3)” という文字がラベルとしてダイアログのボタンとなります。”(3)” はユーザー(人間)に対して「これは3人用ですよ」という意味だけで、スクリプトではまったく参照していません。何人用のダンスなのか、最大のダンスグループはいくつなのかを判断するのは、アニメーション名で「|」で区切られている数を数えて判断します。

aachan_0|kashiyu_0|nocchi_0

この記述から、スクリプトは aachan_0 と kashiyu_0 と nocchi_0 を扱えばいいんだ、だからダンスグループ数は3つ必要なんだ、と理解します。(つまり、ダンス名/アニメーション名に使えない文字がひとつ増えたことになります。カンマ ( , ) と縦棒(パイプ)記号 ( | ) は使えません。名前を変更するか、利用をあきらめるしかありません。)

30.0 は 30.0 秒再生しなさい、という意味です。これはすべてのモーションに対して 30.0 秒再生させる共通の指定なので一つだけの記述となります。(個別に、、というやり方はありますが、今回は割愛します)

0|0|0 はX軸の移動です。X軸は前後を意味します。何に対しての前後かといえば、mldu5+ から REZ した Sit ball の各ダンスグループ番号表示の「玉」に座った時に向いている方向の移動距離となります。
すべてのダンスグループの移動は 0 なので、移動なし、という意味です、
ちなみに、慣れてきたら、0|0|0 と書かずに 0 を一つだけ書いても有効です。

1.5|0|-1.5 はY軸の移動です。Y軸は左右を意味します。ダンスグループ0 は 1.5 m Y軸移動なので左側に、ダンスグループ1は0なので動かず、ダンスグループ2 は –1.5m なので Y 軸で右側に移動することになります。

以降はなにも記述がありません。よって、何もしない(動かない、回らない)という意味ですが、本当は Z軸移動(上下)、X軸回転(アバタ―正面からみて横にぐるぐる回る)、Y軸回転(アバタ―正面からみて前転・後転のように回る)、Z軸回転(アバタ―の頭上からみて、ぐるぐる回る)の数値をいれます。移動は m 、回転は 度 になります。

もし、ダンスグループ0をZ軸回転で90度左周り、ダンスグループ2を -90度回したい(90度右回り)場合は、前にある数値は省略できません。以下のようになります。

a|b|c, 30.0, 0|0|0, 1.5|0|-1.5, 0|0|0, 0|0|0, 0|0|0, 90|0|-90

0|0|0 は 0 と省略できるので、以下のように書くこともできます。

a|b|c, 30.0, 0, 1.5|0|-1.5, 0, 0, 0, 90|0|-90

慣れてきたら省略形のほうがわかりやすいと思います。

 

ノードカード プレイリスト 編集のコツと注意

1) アニメーション記述があるが「無効」にしておきたい。

最初のプレイリスト名を「//」でコメント化してください。

//<Perfume(3)>
aachan_0|kashiyu_0|nocchi_0, 30.0, 0|0|0, 1.5|0|-1.5
aachan_1|kashiyu_1|nocchi_1, 30.0, 0|0|0, 1.5|0|-1.5
・・・・・・・

なお、プレイリスト名の前に // がなくても、以下のようにその中に記述がない場合も無視されます。

<Perfume(3)>
</Perfume(3)>

無視されると、プレイリスト ダイアログにボタン名として表示されません。

2) 一行だけ無効にしたい

上の 1) 同様に「//」でコメント化します。その行は無視されます。

<Perfume(3)>
//aachan_0|kashiyu_0|nocchi_0, 30.0, 0|0|0, 1.5|0|-1.5
aachan_1|kashiyu_1|nocchi_1, 30.0, 0|0|0, 1.5|0|-1.5
aachan_2|kashiyu_2|nocchi_2, 30.0, 0|0|0, 1.5|0|-1.5
aachan_3|kashiyu_3|nocchi_3, 30.0, 0|0|0, 1.5|0|-1.5
</Perfume(3)>

3) 2行目以降、位置・回転指定で同じことを書くのはどうかと。省略できないか。

残念ながらできません。省略すると 0 が入っていると認識します。
0はなにもしない、ではなく、ダンスグループのボールの位置・向きを意味します。
これにより、マルチモーション、シングルモーション、マルチモーション、、とプレイリストを切り替えても、適切な位置に「戻る」ことを可能にしています。

4) ダンスがおわったらしばらくそのままにしておきたいのですが、、、

たとえば 600 秒とかを指定すれば、 10分はその状態から動きません。もう一度繰り返したい場合は、メイン ダイアログの [次のダンス] ボタンを押せば、トップに戻ります。

5) 動画撮影やステージで曲の出だしにあわせてダンスを踊りたいので出だしは止まったままにしたい

同梱されている MMD グループダンスモーション、もしくはシングルモーションは初期ポーズアニメーションを作成しています。Perfume の例でいえば、末尾が 0 のものは初期ポーズです。ただし、ノートカードで「再生秒数」を指定しているので、次のモーションが始めるので、上記 4) と同じように 600 秒といった大きな数字にしておき、タイミングをあわせてメイン ダイアログの [次のダンス] ボタンを押して合わせる使い方になります。

6) ノートカード Animations は順番に使わないとだめですか?とびとびでは有効になりませんか?

問題ありません。たとえば Animations と Animations 3 と Animations 10 を有効な記述にして、あとはコメントもしくは空にしたとします。プレイリスト名は Playlist, Playlist3, Playlist10 とします。
プレイリスト ダイアログのボタンは以下のように表示されます。

プレイリスト有効

有効なプレイリスト名を順次詰めて表示します。たとえば、この状態で、Animations 6 で PlayList6 を有効化すると、以下のように並べ変えて表示します。

プレイリスト有効2

7) ノートカードを開いたら真っ白なんですが。。。。

アセットサーバーからのデータ取得に失敗した時など、たまに真っ白になっているときがあります。その場合はだいたい右上の赤い鍵マークがついたままになっていたりします。
ノートカードを閉じて、もう一度開きなおしてみてください。

真っ白ノートカード赤丸付

8) ノートカードが正常に保存完了しているかどうか注意してください!!!!

コンテンツ/中身に入っているオブジェクトが多くなると、どうしてもそれらを管理しているリンデンのアセットサーバーの処理が遅くなるようです。中身の表示が遅くなるのはまだしも、ノートカードの修正が反映されない場合もありました。

この問題は昔からあります。以下の記事も参照してください。
http://snumaw.blogspot.jp/2009/01/mldu.html

9) 自動スクリプトリセットについて

ノートカードを編集し、[保存]を押すと、自動的に該当するスクリプトのみリセットします。

自動スクリセット 

タイプミスや、ダンスアニメーションが mldu5+ に入っていない場合はエラーになります。mldu5+ で事前チェックにより、実行時にアニメーションがない、というような事態を回避します。

スクリセエラー
(最後の行に「アニメーションが存在しないので PlayList6 は処理を中断しました。」とある)

もし、この状態でノートカードのウィンドウを閉じていなければ、継続してノートカードを修正し、[保存] ボタンを押すことで自動スクリプトリセットが走ります。この作業を何度も繰り返すことができます。

ただし、上記 7) のようにノートカードが「真っ白」な状態になってしまった場合は、一度ノートカード ウィンドウを閉じて、再度ノートカードを開く必要があります。

10) 中身(CONTENTS) フォルダーを開く時間を短くしたい、、、

6人用以上に同梱している TEST 版をお使いください。中身の表示を早くするには、中身に入っているオブジェクトの数を少なくするしかありません。編集用の中身の少ない mldu5+ を代替としてお使いいただき、ノートカード、アニメーションを本番にコピーしてください。

11) いやいやいやいや、、、、35 もプレイリストは当分使わないし、、、

わかりました、、、、、
以下の手順でプレイリスト 管理スクリプトを抜いてください。

- 「中身」を開く
- もしプレイリストを10個しか使わない場合は SynchManager から SynchManager 9 までを残し(全部で10個)、SyncManager 10 から SynchManager 34 までを自分のインベントリにドラッグ&ドロップして移動してください。(コピー不可なので移動になります)

SynchManager移動

- mldu5+ をタッチし、[詳細設定] の [リセット] を押してください。

リセット

- リセットが完了したら、[ダンス選択] を押してプレイリスト ダイアログを出して数を確認してください。10個のみボタン化されています。無効なものは [ -  ] で表示されています。

プレイリスト1

プレイリスト2

完全リセットの時間は短くなりますが、中身を開いてオブジェクトを表示させるまでの時間はこの程度ではあまり効果はありません。


長くなりましたが、ひとつでも参考になれば幸いです~