2012年5月25日金曜日

第5回踊り子組合ダンス会がもうすぐ・・・

第5回踊り子組合ダンス会が 2012年6月2日(土)に開催されます。
Prin Dance Circle(プリンダンス部)、今回も出演しますが、一切ネタなしです。ネタ期待していた人ごめんなさい。(笑

PrinDanceCircle踊り子5b

踊り子組合ってなーにー?の人はこちらの Web をご覧ください。

日本踊り子協同組合 in Secondlife
http://gatemaster.secret.jp/jpodoriko/

残念ながら、一般公開のダンス発表会じゃなくて、組合員の組合員による組合員のための発表会になります。普段、クラブのダンマスをやっている方とか、ダンス ショーを開催している方が、他のダンスマス、Choreographer さんの作品を見る機会、となっているんです。

プリンダンス部は、、、普段ショーケースなどしませんし、クラブ所属ってわけじゃないのですが、第1回から出演者として参加させてもらってます。

第1回参加のブログ
http://snumaw.blogspot.jp/2010/01/blog-post.html

第2回参加のブログ
http://snumaw.blogspot.jp/2010/08/blog-post.html

第3回、、あれ?ない(この時、パフュームと爆乳音頭やったはず・・・)

第4回参加のブログ
http://snumaw.blogspot.jp/2011/06/4.html

ということで、プリンダンス部は、ほぼほぼ MikuMikuDance のモーションのインポートで複数人のダンスを構成して、ステージやパーティクルなどを使った効果をお友達といっしょに製作、練習して発表、、、という文化祭みたいなノリで楽しんでます。

今回の演目は「Magnet」と「千本桜」にしました。以前ご紹介した「上半身2」と「chest」の対応をさせる改変プログラムを使って MMD モーションをインポートしたものです。chest 部分の動きが独立すると、かなりなめらかなモーションになります。

チームのメンバーとは「今回は動画とっておきたいね」と言っています。今までの演目は SS はあったとしても、動画として残したりしていませんでした。練習、練習で、発表会終わっちゃうと結構「もういいやー」となってました(笑 発表会での動画は無理ですが、たぶん、演目はちゃんとした形で録画して残しておいてもいいかなぁ、と思っています~。

リハの模様

送信者 ドロップ ボックス

2012年5月13日日曜日

ファイル アップロードでビューワーがクラッシュする

気がついたら、インベントリの Upload で画像も、サウンドも、アニメーションも [Upload] 選んで、次のファイルタイプを選んだ時点でビューワーがクラッシュするようになりました。。。。(Windows7)

公式、公式ベータ、FireStorm、しばらく Version Up していない EXODUS まで。。。

これって、明らかにビューワー固有の問題じゃないですよね。FireStorm なんてアップできてたし。疑わしきは自分の環境、、、、とつぶやいたら SL のお友達が試してくれて「同じくクラッシュしました~」え?

ということは、、、、OS? そして、、、考えられるのは Windows Update による何か。。。

で、、、

とりあえずの対策はビューワーを立ち上げるときに [管理者として実行] を選ぶと、クラッシュしなくなります。

結構「何で~」となっている人も多そうなので、とりいそぎ記事にしてみました><

2012年5月1日火曜日

[LSL] 前に動いて、横に動いて、基本は rotation

備忘録的メモになります。

llSetPos でも、llSetLinkPrimitiveParamsFast でもいいんですけど、プリムを移動させる、動かすために、最終的にはグローバル座標軸における X, Y, Z の値をいれることになります。

llSetLinkPrimitiveParamsFast での子プリムの移動においてはルートプリムからの相対位置ですが、単純にプリムを動かすことを考えると、グローバル座標を指定することになります。

おおよそ「今いる位置から移動させる」場合は、「今向いている方向」をベースに考えます。「今向いている方向」で、前にいこう、後に行こう、右に、左に、上に、下に、、、となるわけです。

すると、今向いている方向は rotation r0 = llGetRot() でローテーション(クォータニオン)型で取得できます。今向いている方向で前に 1m 進むためのグローバル座標軸における移動分は llRot2Fwd(r0) でベクトル型の X, Y, Z の値を取得できます。2.5m 進みたかったら llRot2Fwd(r0)*2.5 です。

3m 前に進み、左に2m 移動する場合は llRot2Fwd(r0) *3.0 で 3m 前進するためのグローバル座標軸上の移動と、llRot2Left(r0)*2.0 で 2m 左に進むためのグローバル座標軸上の移動が必要なります。現在の位置から 3m 前進し、2m 左に動く vector v は

vector v = llRot2Fwd(r0)*3.0 + llRot2Left(r0)*2.0;

です。ただし、これは移動分であり、最終的な SIM 上のグローバル座標ではないので

vector tgV = llRot2Fwd(r0)*3.0 + llRot2Left(r0)*2.0 + llGetPos();

がグローバル座標軸上のベクトル情報になります。llSetPos(tgV) で、今の位置から前に 3.0m、左に 2.0m いった地点に動きます。

ここに今向いている方向をZ軸(上下軸)に90度に左周り(上から見て反時計まわり)、そこから前に2m、左に3m移動する場合は、まず自分の向きを変えます。ただし、この向きの変更はローカル座標軸(自分の前後左右上下の軸)に対して行うのがほとんどです。よって、90度の回転は左からクォータニオンを現在の向きにかけてあげます。

rotation r1 = llEuler2Rot(<0.0,0.0,90*DEG_TO_RAD>)*llGetRot();

r1 は今の向きから90度左まわりにまわった向きになるので、そこから前、横のベクトル値を算出します。

vector v = llRot2Fwd(r1)*2.0 + llRot2Left(r1)*3.0;

現在の位置をプラスすることで最終的な SIM 上のベクトル値となります。

vector tgV1 = v + llGetPos();

<X, Y, Z> のベクトル側の要素に数値を直接プラスすることはあまり無いんですよね。。。
これ、しばらくやっていないと、忘れます。。。><

2012年4月4日水曜日

Motion capture data(BVH file) が公開されています

Perfume の曲(Wav)とダンス モーションをキャプチャした BVH ファイルが以下のサイトで一般に公開されています。

http://www.perfume-global.com/

以前の投稿のコメントで、この情報をいただき実際に BVH ファイルの中をみてみました。
BVH ファイルは独自にボーン構造を設定できます。このモーションも Hips をルートにして、Chest が 4つといった独自構造をしていました。
で、、、まずは、この BVH ファイルを MikuMikuDance 向けに変換して VMD ファイルにして動画にしたのが以下。

MikuMikuDance 用の VMD ファイルですが、以下のように作成しました。

・ Live Animation を使って、BVH を読み込み、そして VMD ファイルとして保存(変換)。
このあたりの操作はかがみんのブログが詳しいです。
http://kagamikohime.blog118.fc2.com/blog-entry-1543.html 
・ MMD で VMD を読み込んでから以下の修正をおこないました。未調整だと上半身、とくに肩・腕まわりに違和感を覚えたからです。
・両肩の回転範囲を縮小。左・右肩の全キーフレームをボーン・フレーム操作ボックスの開始フレーム-終了フレーム- [範囲指定] そしてドロップダウンから選択して [フレーム編集] – [フレーム位置角度補正] を使い、回転の X, Y, Z 軸で 0.6 を指定する。(ドロップダウンリストから [左肩] を指定し選択し、さらに [右肩] を選択指定します。[全フレーム] ではありませんよ)
・両腕、両手首の回転範囲を縮小。同様に フレーム位置角度補正を使って、0.75 程度に回転幅を縮小。(両ひじを選択してないのはなんとなく、、です。見た目からだけの判断です)
・移動位置の範囲を縮小。無調整のモーションだと位置的に広がっているように感じたため、センター、左足IK、右足IK の全キーフレームを選択して、フレーム位置角度補正の移動、X, Z 軸で 0.9 を指定。

これでだいたい見られるようになるのですが、たぶん、オイラー角からクォータニオンへの変換で意図しない方向になっている部分が左腕のモーションにいくつかあります。最終的には手つけでの修正が必要になります。

でも、キーフレームが全フレームに登録されているこの VMD モーションの修正は手では無理です。そこで、キーフレームの間引きを行います。MMD だけで行うキーフレームの間引きの方法は以下です。
・ すべてのキーフレームを選択して [ボーンフレーム操作ボックス] にある  [拡大縮小](キーフレームが表示されているところのすぐ下にあるボタン) を使って 0.5 を指定、縮小後さらに 0.5 を指定して、結果、1/4 の時間に変更。
・ここからまた [拡大縮小] を使って2倍を2回繰り返し、もとの時間に戻します。結果、キーフレームは 1/4 になります。
・ この状態で肩回りの修正を行います。
この方法は、かんなさんのブログの以下の記事を参考にしています。
http://mikudan.blog120.fc2.com/blog-entry-223.html

ところが、このままセカンドライフ用として変換、アップすると足の動きがところどころ明らかにおかしいんです。足です。。。。どうも、mio の IK 計算で意図しない結果になっているような気がするので、IK 計算で邪魔(?)していそうな以下のキーフレームを消してみました。
・左・右足首、左・右ひざの全フレームを選択して削除

さすがに、左・右足のキーフレームを削除すると、MMD側で違和感を感じるようになったので、左・右足のキーフレームは残してみました。

ここで VMD ファイルを保存できたら、あとは、mio と mmdbvhToslbvh.exe の出番ですね!

出番、、、これでどうでしょうw

http://www.youtube.com/watch?v=FEpo2QDYY-Q

ま、、、簡単じゃないですね (^^;

2012年4月1日日曜日

Firestorm 開発終了(最後までお読みください)

Firestorm-Release v4.0.1.27000 を立ち上げたら、、、、
QuittingViewerDev

Quitting Viewer Development?????

ビューワーの開発終了????

急いで firestorm の HP を確認したら、、、いつもとおり。。。

QuittingViewerDev2

あ、、、今日は4月1日だった (1st April..)。。。。釣られたクマー

2012年3月30日金曜日

Windows7 64bit 版で mio-0.1 動かしてみる(2012年3月公開)

(追記) Windows 8.1 64bit 版でも稼働確認しました。
http://snumaw.blogspot.jp/2013/11/windows-81-64bit-mio-01.html

mio-0.1 を使った VMD モーションファイルを BVH モーションファイルに変換するための設定手順を扱った 2 年前の投稿がいまだにヒット数/参照数が高いのは、やはり、この設定手順が結構複雑という理由でしょうね。

前回の上半身2を利用したモーション変換の投稿で改めて mio を使ってのモーション変換環境を作ろうとしたのですが、、、あの記事を書いた私でさえ1回で動かなかった >< という事実もあり、再度まとめてみようと思います。

ただ、今回は 64bit 版の Windows で mio を動かします。最近の PC は Windows7 64bit版が多いと思います。セカンドライフや 3D 関連を趣味でやろうとしたら、搭載メモリーのことを考えると必然的に 64 bit 版の Windows を選択することになりますよね~(後述しますが、手順と必要なソフト、ファイル、モジュール自体は Windows 32bit 版でも同じです。SysWOW64 か system32 だけ気を付けてください。)

今回はまったく「素」の Windows7 64bit の環境で mio-0.1 が動くように実際にセットアップした手順になります。途中でエラーがでないように考慮しているので、VPVP Wiki などに書かれている手順、さらに2年前に私が書いた手順とは若干違います。(たぶん、この手順の違いが、一般的に難しかった原因じゃないかな?と思っています。以下の「おまじない」の部分になります。)また、2012年の3月時点で入手可能なバージョンを使っていますので、しばらくはこのままいけるんじゃないかな?とも思います~。

Windows7 64bit 版に mio-0.1 その他必要なモジュールをインストールする(2012年3月公開)

注1)これは Windows7 64bit 版で mio-0.1 を使うための手順です。
注2) 無用なトラブルを避けるため、ネットからダウンロードしたファイル(zipファイルなど)は、ダウンロード直後に右クリックメニューから「プロパティ」を選び、[ブロックの解除] を押してください。ボタンがなければそのまま使って大丈夫です。

1) MSVCR71.DLL のダウンロードとインストール
おまじないです。Vectorからダウンロードします。
http://www.vector.co.jp/soft/dl/win95/util/se435079.html
vcpvcr71.zip を解凍し、vcpvcr71\dll にある msvcp71.dll と msvcr71.dll を Windows\SysWOW64 にコピーします。

2) C++ VS2008 SP1 再頒布パッケージ(x86) のインストール
これもおまじないです。
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2
(Windows7 64bit版を使っていても x86 のパッケージをダウンロード&インストールしてください。)

3) mio-0.1 のダウンロードと解凍
http://www.mediafire.com/download.php?mdyzlml2waw
mio-0.1.zip ファイルを解凍し、C:\Tools\mio などに mio-0.1 フォルダーごと展開します。

4) DevIL.dll, ILU.dll, ILUT.dll のシステムへのコピー 
解凍した mio-0.1 の lib\unicode にある DevIL.dll、ILU.dll、ILUT.dll をWindows\SysWOW64にコピーします。
「対象のフォルダーへのアクセスは拒否されました」と出ますが、[続行] をクリックしてください。

5) GLUT32.DLL のダウンロードとインストール
http://user.xmission.com/~nate/glut.html から glut-3.7.6-bin.zip をダウンロードします。
解凍して glut32.dll を上記3)同様 Windows\SysWOW64 にコピーします。

6) Python2.6.x のダウンロードとインストール
http://www.python.jp/Zope/download/pythoncore
2012年3月でダウンロード可能な 2.6 系は 2.6.6 と 2.6.7。作者様が使っていたバージョンに近い 2.6.6 をインストールします。(2.6.7 でもいいかもしれませんが試していません)
Windows用インストーラにある「python-2.6.6.msi」をダウンロードしてください。Windows7 64bit版を使っていても、32bit 版の python-2.6.6 を選び、python-2.6.6.amd64.msi は使わないでください

[追記] 2.7.x では mio は動かないようです。2.6.6 が 2.6.x の最終バイナリになるので、必ず 2.6.6 をインストールしてくださいね。
http://www.python.org/download/releases/2.6.6/

7) PyOpenGL 3.0 のダウンロードとインストール
http://pypi.python.org/pypi/PyOpenGL
いくつかのバージョンがありますが PyOpenGL 3.0.1 をダウンロードします。(作者様が作成したバージョンに近いからです)
PyOpenGL 3.0.1 のリンクををクリックすると PyOpenGL 3.0.1 のページにいくので、PyOpenGL-3.0.1.win32.exe (md5) のリンクをクリックしてダウンロードします。
ダウンロードした PyOpenGL-3.0.1.win32 を右クリックして「管理者として実行」を選び、インストールします。

8) PyQt のダウンロードとインストール
http://www.riverbankcomputing.co.uk/software/pyqt/download
2012年3月でダウンロード可能なのは PyQt-Py2.6x86-gpl-4.9.1-1.exe になります。いろいろなバージョンがあるので難しいですね。Python2.6用で、x86(何度もいいますが、Windows7 64bitでもx86版です)用を選んでください。

これで vmdviewer を mio のフォルダーの script サブフォルダ―にある vmdviewer をダブルクリックします。

vmdviewer
Windows7 64 ビット オペレーティング システム上で mio の vmdviewer が立ち上がりました。

この手順は Windows の 32bit 版でも有効だと思います。ただし、Windows\SysWOW64 の部分を Windows\system32 に置き換えてくださいね。

変換のときの注意点

1) 日本語は使わない。フォルダー名にもファイル名にも、PMDモデルも VMDモーション ファイル名も!

2) 日本語の VMDファイルを「名前の変更」で英語表記にしても「Shift JIS codec can’t decode...」のエラーダイアログが出る場合は MMD を使って一度 VMD を読込んで、そのモーションを英語名で保存してみてください。過去のご紹介はこちら

3) vmdviewer の [PMD File] – [Load] で PMD を読み込んでも、モデルが表示されない場合があります。エラーメッセージが出ていないのであれば、そのままの状態で VMD ファイルを読み込んで変換してみてください。VMD ファイルを [Load] で読み込んだ時にメッセージで 「Computing IK..」が出ていれば、ほぼだいじょうぶです。[Play] による確認はできませんが、[Export BVH] ボタンで BVH ファイルとして保存して、他の BVH モーション確認ツールでみてみましょう。

4) 上記 3) の状態が気持ちわるい、、、という方にはコマンドラインでの変換をお勧めします。コマンドラインってなに?の方はやらないほうがいいかもですが。。。。

a) コマンドプロンプトを開きます。(これがわからない人はパスしてください)
b) mio\script フォルダをカレントディレクトリにして以下のようにタイプします。
vmd2bvh.py ..\model\aaa.pmd ..\motion\bbb.vmd ..\motion\bbb.bvh
(mio のフォルダに model と motion フォルダを自分で作成し、そこに load する pmd および vmd ファイルがあって、motion フォルダに同じ名前の bvh ファイルを保存する場合の指定の仕方です)
vmdviewer2

フレームでの進行を確認でき、最後に Saving BVH data...というメッセージが表示されます。

5) 上半身2 ボーン(upper_body2)入りの BVH ファイルを作りたい場合は、上半身2 ボーンを持っている PMD ファイルを Load してください。上半身2ボーンを upper_body2 という名前に変換したい場合は過去のこちらの記事を参照してください。なお、dictionary の変更をしなくても、bvh ファイルを開き、upper_body の次のレベルの \u4e0a\u534a\u8eab2 (UNICODE で “上半身2”)を upper_body2 にしても有効です。

ご参考になれば幸いです~。

2012年3月29日木曜日

マーケットプレース「Direct Delivery」対応しました

かばちお姉様のブログをみて「はっ!」と思い、やってみた。

ところが、、、ビューワーは普段から英語なので問題なーい、とやってみたら MERCHANT OUTBOX にアイテムのドロップできないし、、、、。

これ、、、MERCHANT OUTBOX を開いたとき、なんか通信してません?

magicbox5

ドロップできない場合は、いったんビューワーを落として、再起動してみるのがいいかも。
できなかった時は、なんか Initializing とかあまり見えなかったような気がします。

で、Magicbox を使っていた商品たち。

magicbox2

なんとか Direct に変りました。

magicbox3

リンデン公式の情報はこちらで。

マーケットプレースダイレクトデリバリー移行ガイド(日本語)

2012年3月26日月曜日

Secondlife Avatar ボーン構造 と PMD のボーン構造

MikuMikuDance (MMD) のモーションファイルである VMD から Secondlife (SL) 用に BVH 変換 (mio –> mmdbvh2slbvh) して SL の中で楽しむのはもう何度かご紹介してきましたが、もともとこの仕組みは MMD 標準ボーンを前提としたモーションファイルの変換をしています。
MMD に同梱されているあにまさ式ミクさんや他のモデルのボーン構造は以下のようになっています。これは mio で VMD ファイルを BVH ファイルに変換して、BVHacker でみた構造です。ただし、指のボーンや髪のボーンは割愛して、SL で関係するものだけをリストしています。

ルート(VMDではセンター)
   下半身
      左足
         左ひざ
            左足首
      右足
         右ひざ
            右足首
   上半身
      左肩
         左腕
            左ひじ
               左手首
      右肩
         右腕
            右ひじ
               右手首
      首
         頭

最近のモデルは、特に上半身を親ボーンとする「上半身2」、腕の「捩りボーン」などを追加して、いわゆる「多段ボーン化」したものが増えてきています。多段ボーン化されたモデルを前提とした VMD モーションファイルの公開も多くなってきました。多段ボーン化することにより、より滑らかなアニメーション、ダンスが可能になります。(ただし、その分モーション作成の手間が増えます)
mio や mmdbvh2slbvh では、上述のような後発の多段ボーンには基本は対応していないので、たとえば、上半身2 前提のモーションファイルを SL 用に変換すると、上半身2 の情報(上半身を親とした X, Y, Zの回転情報)は mio を使った時点で欠落します。(追記:必ず欠落するのではなく mio で読み込んだ PMD モデルに依存しているようです。後述の dictionary に記述がない場合は、日本語ボーン名が英語に変換されず吐き出されます。)
一方、Secondlife のアバターの標準ボーン構造をみると以下のようになっています。

hip
   abdomen
      chest
         neck
            head
         lCollar
            lShldr
               lForeArm
                  lHand
         rCollar
            rShldr
               rForeArm
                  rHand
   lThigh
      lShin
         lFoot
   rThigh
      rShin
         rFoot

QAvimator などで Secondlife 用のポーズやアニメーションを作ったことがある人なら、この構造は見慣れたものでしょう。
この Secondlife の Avatar のボーン構造を、MMD の PMD/PMX の最近のボーン構造と照らし合わせてみると、以下のように考えることもできます。

hip (センター+下半身)
   abdomen (上半身 ただし、hip に含まれる下半身の向き・回転要素を削除)
      chest (上半身2  だだし、hip に含まれる下半身の向き・回転要素を削除) 削除の必要ないかも。ただいま検証中。理論的には相殺する必要はないはずです。。。。
         neck (首) *1 
            head (頭) *1 
      lCollar (左肩)
         lShldr (左腕)
            lForeArm (左ひじ)
               lHand (左手首)
      rCollar (右肩)
         rShldr (右腕)
            rForeArm (右ひじ)
               rHand (右手首) 
   lThigh (左足) 
      lShin (左ひざ) 
         lFoot (左足首) 
   rThigh (右足) 
      rShin (右ひざ) 
         rFoot (右足首)
*1 たぶん、調整が必要。なぜなら親ボーン(hip)に VMD で本来ないはずの下半身要素が入っているから。 これも調整の必要ないかも。検証中><

優れものツールである mmdbvh2slbvh は作者様のご好意によりソースコードも公開されていますが、その中をみると、hip の部分はセンターと下半身の位置・回転を合成そして微調整をし、adbomen は hip の子ボーンとなるため、VMD 上半身の回転から hip に含まれてしまった VMD 下半身の回転を割り引いたものとしてモーションを生成しています。上記の chest の部分は当時は上半身2 ボーンがそれほど普及していなかった、さらに mio が吐き出す bvh のボーン構造も標準以外の上半身2ボーンを無視していたため(正確に書くとmioでの使用ボーンに依存し、dictionary に上半身2対応の英語表記が登録されていないため、後の工程で処理可能になっていなかった)、chest の部分は基本的にはなにもしない(=abdomen の直線延長ボーン)扱いとなっています。

もし、mio が上半身2ボーンを含めた BVH ファイルを生成し、さらに、mmdbvh2slbvh が chest 部分のデータを上半身2から生成することができれば、そもそも SL Avatar のボーン構造からすると上半身2を前提としたアニメーションのほうがなめらかになるのでは?というのが今回考えたことでした。

ここでいえることは「多段化されていない標準モデル」用のモーションはきれいに変換できるが、多段化されたボーンを前提としたモーションはちょっと違和感が出る、その理由は特に上半身2ボーンにツールたちが対応していないから、ということでしょう。
VMD モーション変換をするときは、この点に注意してモーションを選ぶといいですね。



さて、、、、
以下は、まだおすすめできる十分な情報と経験が私にないので、質問やご要望をうけても対応できませんので、、、、その点をご了承いただける方はご参考までに。。。。
これは、試行錯誤で見つけた方法であり、そのプログラム的な根拠はありません。ですので、なんら保証もありません。本当に参考程度に見てください。

----------------------------------------------------

[追記:2012/9] 以下の情報のアップデートになります。以下の投稿では mio でのカスタマイズが不要な MMDBVHToSLBVH.EXE をご紹介しています。

http://snumaw.blogspot.jp/2012/09/chest.html

----------------------------------------------------

mio で上半身2 を BVH ファイルに組み込む方法

1) mio のサブフォルダ data を開く
2) mmd サブフォルダを開き、dictionary テキストファイルをメモ帳などで開く
3) 標準ミクのボーン構造が書かれているので、上半身,upper_body の下に 上半身2,upper_body2 を追記し、上書き保存する。(バックアップはあらかじめとっておくこと)
4) mio を起動して、上半身2 ボーンを持っているモデルを読み込む。(このとき、たぶん、頂点数などが多かったり(?)すると、モデルが表示されれない場合もあります。が、気にしない) 5) VMD を読み込み、Export する。

(たぶん、vmdviewer を使わずにコマンドラインでの convert がもっともスマートかも。上半身2モデルを読み込む必要があるかどうかは、私も実は疑問です。)(追記:これがビンゴでした。。。mio で指定する pmd/pmx は対応するボーンを持ったモデルじゃないとだめだったんです)

これで吐き出された BVH をメモ帳(は、正直つらいので、他のテキスト編集エディタがお勧めです)で開き、ボーン構造に upper_body2 が含まれていれば成功、フレームの upper_body2 に該当する要素にデータが入っていれば大成功です。
しかし、これだけでは SL に持っていくことはまだできません。
以下は Visual Studio という Microsoft のプログラム作成ツールを使います。(無料版もあります)なので、正直一般的には難しいと思います。


mmdbvh2slbvh で上半身2ボーンと chest を関連付ける

mmdbvh2slbvh のソースコードをダウンロードして、ソリューションを開き、BVHConverter.cs の abdomen 変換処理の下に chest 変更処理を abdomen を参考に追記して、ボーン対応構造にも chest と upper_body2 を追記して、ビルドする。
上を読んで「なるほどね」と思った人はトライしてみる価値はあるかもです (^^;
まだ、首と頭の調整をいれていませんが、上記 改造 mio と改造 mmdbvh2slbvh を使ってコンバートした 上半身2 前提モーションが以下になります。


なんか、まだまだやること(楽しめること)いっぱいありますね。

[追記]
mio は読み込んだ PMD モデルの構造を参照して BVH ファイルを吐き出すようです。ですから、上半身2のモーションを変換するには上半身2ボーンをもったモデルを使わなければいけません。dictionary ファイルでは日本語ボーンを英語に変換する対応を提供しているようです。

mmdbvh2slbvh では、シンプルに上半身2(upper_body2)を処理し、それが chest であることの関連づけだけで OK でした。

検証のために比較した動画が以下になります~。

2012年3月17日土曜日

[MLDU] 同一ダンスアニメーションのリピート

元ネタは Dance Queens の以下のブログ記事です。

http://sldancequeens.blogspot.jp/2012/03/repeating-dance-in-huddles.html

Nottoさんからのアドバイスは
・ 他のダンスを 0.1 秒みたいな感じで間にいれる

質問をされた方はループじゃないダンスアニメーションを最後まで再生し、もう一度同じダンスを始めから再生、そして finish の pose をさせたかったわけです。

ダンス スクリプトを書いた経験のある人は比較的早くこの問題に気が付くと思います。
現時点での Secondlife のアニメーション管理では同じアニメーションをかぶせてダンスさせることができません。

え?かぶせて?

そうなんです。おおよそダンスの「つなぎ」を重視するダンス スクリプトはノートカードで以下のように記述した場合(以下は MLDU の記述方法)、

DanceA, 8.0
DanceB, 4.0

DanceA を開始し、8秒後に DanceB を開始し、4秒後に終わる、という流れですが、スクリプト的には

・DanceA を開始
・8秒後に Dance B を開始(これを DanceB を DanceA にかぶせる、といいます)
・直後に DanceA を停止(止めるまでのインターバルはいろいろあります)
・DanceB 開始後4秒後に DanceB 停止

とします。十分にキャッシュされているとかぶせる必要はないのですが、かぶせることによってスムーズなアニメーションのつなぎが可能になります。ただし、アニメーションの優先順位には注意してください。優先順位の低いアニメーションだとかぶせても優先度の高いアニメーションが再生されたままになります。

この仕組みを採用しているダンス HUD だと、同じアニメーションの繰り返しができません。
なぜなら、DanceB を DanceA と置き換えると

・DanceA を開始
・8秒後に DanceA を開始
(同じアニメ―ションなのでDanceA は再スタートされない)
・直後に DanceA を停止
(DanceA は一個しか動いていないので、最初に開始した DanceA が停止)
・再スタートされなかったところから4秒後に DanceA 停止
(アニメーションリストチェックしていればスルー、していなければ DanceA がないためスクリプトエラー)

実は MLDU ではこのリピートの扱いについて MLDU4 と MLDU5 では変えています。

MLDU4 では忠実にユーザーの指定通りにアニメーションを再生しようとしていました。DanceA の次に DanceA をユーザーが指定したときには

・DanceA を開始
・数秒後に DanceA を開始
・もし、今踊っているダンスと開始するダンスが同じならば現在のダンスを停止
・DanceA を開始

というシーケンスにしています。よって、一瞬ダンスがとまります。もしくは立ち位置がかわります。

しかし、MLDU5 にてシーケンスダンスもしくは組みダンスを構成している場合は、同じダンスを踊り続けながらポジションや向きを変えたい、という要望があったため、この仕様を撤廃しました。MLDU5 を選んでくれたユーザーさんは「同じダンスを繰り返したい」というニーズより「同じダンスを踊り続けながら位置・向きを変えたい」というニーズのほうが重要とみなしたからです。

ですので、以下のようなノートカードの場合、DanceA のアニメーションが24秒とした場合、

DanceA, 8.0, 位置A, 向きA
DanceA, 8.0, 位置B, 向きB
DanceA, 8.0, 位置C, 向きC

DanceA は24秒間踊り続けますが、8秒ごとに位置と向きが A –> B –> C と変化します。

MLDU4 は同一アニメーションへの再開始対応をしていますが、MLDU5 は上述の理由で再開始対応をしていません。次のダンスを開始し、前のダンスを止めるまでのインターバルはスクリプト内で固定値 (0.5秒) としていますが、これは前のダンスと今のダンスが「違う」場合のみ、アニメーションをかぶせてインターバル後に停止しています。そのため、0.1 秒の短い「違う」ダンスをいれると、インターバル(0.5秒)分は長く「違うダンス」を踊ってしまいます。

0.5 を短くすればいいのですが、0.5 によるダンスを踊らない「棒立ち時間」を回避できるのです。とくにキャッシュが十分にされているはずでも、SIM のアバタ―数などが多くなってくると、SIMおよびビューワー側のキャッシュが足りなくなり一度おどったはずなのに一瞬止まることが発生します。私はそちらのほうを優先して解決しようとしたわけです。

ま、、、インターバルは直せるのでご希望の方はインワールドでノートくださいね。(でも、おすすめはしません~)

TBS

2012年2月29日水曜日

ウェィト塗りって難しい

SL のほうにも絶対重要な知識とテクニックになるウェイトペインティング
がんばってますよ^^;

私がウェイトペインティング勉強中のときに開催されていた第8回MMD杯。もうマイリス投票期間も終わり、あとは閉会式を待つのみですが、すばらしい総集編が。編集でこういう動画のつなぎできるのってすごい!