2011年12月30日金曜日

ヘビロテ in Secondlife

今年の最初の投稿が MMD モーション移植した「Nostalogic を踊らせてみた」でしたが、今年たぶん最後の投稿は同じように MMD からモーション移植した「ヘビーローテーション」です。

おもいっきり AKB のライブ音源使っているので、いつか消されるかもしれませんが。一応アップした段階で YouTube からのアラートは出ていて、広告等が表示される、として即時削除対象ではないみたい。。。

移植させてもらったモーションは Cruyff 14 さんがトレスした [MMD] ヘビーローテション【少しいぢってみた】からお借りしました。

5人用のモーションです。(配布は、、、6人みたい)フロント3人、バック2人ですが、SL動画のほうではセンター以外のフロント2人分を4人で、バック2人を3人で構成した8人で踊りました。

ひさしぶりの動画撮影だったので 3D Connexion マウスの操作がおぼつかず、、、大人数は撮りなおしに限界があるので、この程度でお許しください><

配布されているモーションは

・ヘビロテ1.vmd センター –>SL_HR1_x
・ヘビロテ2.vmd フロント右 –> SL_HR2_x
・ヘビロテ3.vmd フロント左 –> SL_HR3_x
・ヘビロテ1(b).vmd バック右 –> SL_HR4_x
・ヘビロテ2(b).vmd バック左- -> SL_HR5_x

として以下のような mldu5 のプレイリストを使っています。

<AKB48Heavy>
SL_HR1_0|SL_HR2_0|SL_HR3_0|SL_HR4_0|SL_HR5_0, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_1|SL_HR2_1|SL_HR3_1|SL_HR4_1|SL_HR5_1, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_2|SL_HR2_2|SL_HR3_2|SL_HR4_2|SL_HR5_2, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_3|SL_HR2_3|SL_HR3_3|SL_HR4_3|SL_HR5_3, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_4|SL_HR2_4|SL_HR3_4|SL_HR4_4|SL_HR5_4, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_5|SL_HR2_5|SL_HR3_5|SL_HR4_5|SL_HR5_5, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_6|SL_HR2_6|SL_HR3_6|SL_HR4_6|SL_HR5_6, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_7|SL_HR2_7|SL_HR3_7|SL_HR4_7|SL_HR5_7, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_8|SL_HR2_8|SL_HR3_8|SL_HR4_8|SL_HR5_8, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_9|SL_HR2_9|SL_HR3_9|SL_HR4_9|SL_HR5_9, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
SL_HR1_10|SL_HR2_10|SL_HR3_10|SL_HR4_10|SL_HR5_10, 30, 0|-1.0|-1.0|-2.7|-2.7, 2.8|0.5|0.5|-3.5|-1.5
</AKB48Heavy>

X軸(前後)での調整と、Y軸(左右)の調整だけですね。
この調整はモーション次第でかわります。MMD の場合、複数モーションでも初期位置で踊らせて、センターバイアスまたはすべての親ボーンで撮影の際にモデルの位置を調整するタイプと、モーション作成時点から位置を調整してしまっている2つのタイプがあります。

それらに注意してアバターの位置調整をすればいいんですね~。

それでは皆様、よいお年を~!

2011年12月26日月曜日

[mldu5+] Start-up Guides part 1

(日本語記事は英語の後ろにあります. mldu5+ は一般にはまだ販売していません。marketplae には mldu5 がありますが、それは mldu5+ ではありません。今しばらくお待ちください。)
(on 28th Dec 2011, mldu5+ is beta version, and the marketplace provides you only mldu5. It’s not mldu5+. Please, please stay tuned.. but good news is mldu5+ has English version.)

This guide shows you how to use multi motion mldu5+ step by step.
mldu5+ provides you rich functions by only one HUD or dance machine. It’s not so difficult but something complex and unique. Don’t worry. So far over 300 users are enjoying MLDU series and you don’t need to use all functions. mldu5+ gives you many functions but you can use what you want.

I hope this guide series would help you enjoy your secondlife dancing.

1. About mldu5+

mldu5+ has unique functions as follows;

Varied Dancing Mode

  • Synchronized motion to multi users
  • Delayed motion to multi users (Time Interval Defferent dancing)
  • Shuffled motions from a playlist to multi users
  • Muliti motions to multi users (like couple dance, group dance)

Hybrid equipment

  • Personal HUD mode (when you attach as HUD)
  • Dance machine mode (when you rez on the floor and managed by admins)

Inviting or Rezzing sit ball

  • Searching and inviting avatars to dance. Guests get permissions dialog.
  • Rezzing sit balls and inviting avatars to dance automatically (especially for couple/group dancing)
  • 2 balls for couple dance, from 3 to 6 balls for group dance

Playlists and macro control

  • 26 playlists can be modified
  • A playlist contains over 100 dance motion names (depends on memory)
  • Ordering dance animatons and specifying play time for each dance
  • Dancers positons and rotations can be included if you want. (but dancers should use the sit balls rezzed from mldu5+)
  • Up to 10 unique animations you can specifed for one time (synced starting)

Major usages

  • In clubs, playlists are composed by Music category or BPM(Beat per minutes)
  • For show case dancers, playlist are composed by show case
  • For Video creators, group dancing playlist is easy way to making film repeatedly

------
[Japanese]

このブログの記事で mldu5+ の使い方をステップ by ステップでご紹介します。
mldu5+ はたった1つの HUD / ダンス マシンで豊富な機能を提供しています。決して難しいわけではありませんが、ちょっと複雑だったり考え方が他にはなかったりします。でも、心配することはありません。これまで 300 以上のユーザーさんが MLDU シリーズ(MLDU3, 4, 5) を楽しんでいます。すべての機能を使う必要はありません。好きな、必要な機能だけを使えばいいんです。

このガイド シリーズがあなたのセカンドライフ ダンスを楽しくすることを希望します~

1. mldu5+ について

mldu5+ は以下のようなユニークな機能を持っています

多様なダンス モード

  • 複数ユーザーへの同期(シンクロ)ダンスの実行
  • 複数ユーザーへの時間差ダンスの実行
  • 複数ユーザーにプレイリスト(ダンス セット)からそれぞれ違うダンスを実行
  • 複数モーションを複数ユーザーに実行(カップルダンスやグループダンスを実行)

ハイブリッドな装置

  • パーソナル HUD として(HUD として装着します)
  • ダンス マシンとして(フロアに rez すると管理者グループで管理可能)

招待もしくは Sit ボールの利用

  • 周囲にいるアバタ―を検索し、ダンス招待をします。ゲストはパーミッション許可のダイアログを受け取ります
  • または、Sit ボールを rez して、ゲストに座ってもらうことでダンスを自動送信できます
  • 2個の Sit ボールはカップルダンス用、3個以上(、4個、5個、6個)はグループダンス用です

プレイリストとマクロ制御

  • 26のプレイリストを構成・編集が可能
  • ひとつのプレイリストで 100 以上のダンス記述可能(メモリーに依存します)
  • ダンスの順番付とそれぞれのダンスの再生時間の指定が可能
  • 必要であればダンサーの位置と向きを含めることができます(その場合は、ダンサーは mldu5+ から rez された Sit ボールをつかいます)
  • 1度に同期スタートで10個までのダンス アニメーションの指定が可能

主な使われ方

  • クラブでは曲のジャンル、BPM 毎にプレイリストを構成して切替えています
  • ショーケース、ショーダンサーはショーの演目毎にプレイリストを作成しています
  • ビデオ クリエーターはカメラワークを変えた繰り返しのビデオ撮影にグループダンスプレイリストを利用しています

2.に続く、、、

2011年12月12日月曜日

Sequencing Couples Dances...

http://sldancequeens.blogspot.com/2011/12/sequencing-couples-dances.html

ハルちゃんが踊ってる動画と MLDU5 が Dance Queens サイトで紹介されちゃってま。。。す ><

ノートカードも公開してますね。
これ、やっぱり今のノートカードの指定方法でも動くようにしておかないとwww

今修正中の MLDU5+ はボール軸で移動そして回転をかける書き方に変更します。デフォルトはそっち。で、今まで作ってきたノートカードの数値をそのまま使うために以下のようなオプションをダンスセット名にいれるようにします。そうすると今のバージョン設定のアバタ―軸の移動・回転で動きます。

<Sample MODE:AVXYZ>
anim1|anim2, 10.0, ……………
animi3|anim4, 12.5, ……………
anim5|anim6, 5.0, ……………
</Sample>

ただいま細かいところ絶賛調整中~♪

そっかぁ、Sequencing couple dances っていうんだ。(笑

あ、、、あと、ここまで作ったら以下のオプションもいれようかと。。。

<Sample MODE:SNUPOZ>
animi1|animi2, 10.0, /111 X Formation1
anim3|anim4, 12.5, /111 X Formation2:3.0
anim5|anim6, 5.0, /111 X Formation3
</Sample>

こっちは Kai さん向け、もしくはクラブで SNUPOZ 使っているダンマスさん向けだね~w

INSPI.ME さんに MLDU のフォーラム作成しました。しばらくは NaviSL との併用ですが、アクセス不可になることが NaviSL さん多いので、徐々に INSPI.ME さんに移行することになるでしょう。。。(たぶん)

追記)あ、、、同時に英語版。。。。。><

2011年12月6日火曜日

[LSL] llSetKeyframedMotion を使ってみた

この新しい関数、オブジェクトをスムーズに動かすことができるようで、いろんなところで使えそうなんですけど、ちょっとクセがありますね~。
単純な板を動して検証して、気が付いたことをメモしておきます。

と、、、llSetKeyframedMotion ってなに?という方はこちらの YouTube のビデオをご覧いただくと何となくわかるかも~。

1) おまじない(?)

wiki によれば、llSetKeyframedMotion を使う前に Prim の属性で [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX] を指定してあげる必要があるようです。ビューワーが mesh を読み込むできない場合は必要、、、とありますが、とりあえずこのおまじないは state_entry あたりで行っておきます。

単体プリムの場合は llSetPrimitiveParams で、複数プリムがリンクされているオブジェクトの場合は llSetLinkPrimitiveParamsFast で設定をします。なお、複数プリムがリンクされている場合、ルートプリムにしか影響しない(=必ず全部のプリムが動く)ようです。

あと、プリムの属性という意味では物理属性はダメです。非物理のプリムにしてください。

2) 位置、回転、移動時間

llSetKeyframedMotion は2つのリスト(keyframes と option)を引数としています。最初のリストは [位置、回転、移動時間] を設定します。キーフレームといわれているのは、この 位置、回転、移動時間 をリストの中で複数指定できる、それぞれをキーフレームとして、そこまで移動・回転を直線補間してスムーズに動かす、、、という意味です。

で、位置や回転なんですが、グローバル座標軸を基準とした現在位置からの「差分」の指定になります。SIM の東西南北天地の軸に沿った現在位置からの移動距離を指定することになります。当然回転もグローバル座標軸で回転します。もちろんラジアンでの指定になります。

移動時間は 0.1秒以上でなければなりません。また、この秒数指定をより正確にするためには、秒指定よりもフレーム数の倍数指定がよい、と紹介されています。どうやら 1 秒間に 45 フレームで移動させているようです。そのため、1/45 の倍数で秒を指定したほうがよさそうです。たぶん、キーフレームの考え方からすると、A地点からB地点へ2.0秒で移動、と指示した場合はA地点~B地点の距離を 90 分割(2秒なので 90 フレーム)して移動させているようですね。

この倍数じゃないと微妙にずれていくのでしょう。なぜなら、次の移動地点へは「今の位置」からの差分をとるように動いているからです。ちょっとのずれが積み重なって最後は大きくなる、、、っていうわけですね。たとえば、1.5秒という指定は、45*1.5=67.5 フレームで、0.5 フレームというのはないので、67フレームか68フレームとして45で割ってあげると、67フレームの場合は 1.4889秒、68フレームの場合は 1.5111秒です。これを LSL で書くと、

float time = 1.5;
integer frames = (integer)(time*45);
time = frames/45.0;

実際にこれをやると time は 1.488889 秒 (67フレーム分)になりますね。

3) オプション

まず、オプションの種類として3つあります。

・KFM_MODE

モード指定で、指定できるのは ループ、リバース(逆順序)、フォワード、ピンポンです。これは keyframes で指定した複数のキーをどのように扱うか、ということですね。
[A, B, C] と keyframes を指定した場合、何も指定しなければ既定値の KFM_FORWARD が使われ、A –> B –> C と動く、KFM_REVERSE だと C –> B –> A、ループだと A –> B –> C –> A –> B –> C –> A.. と繰り返し、KFM_PING_PONG だと A –> B –> C –> B –> A –> B –> C.. と繰り返すわけです。(正確にはループ/ピンポンの場合は 4) で書いているように初期位置に戻ってから、移動分 A を行います)

・KFM_DATA

これは keyframes で指定するデータの種類を指定するオプションのようです。KFM_DATA オプションを使わない場合は必ず <ベクター型の位置>, <ローテーション型の回転>, float 型の秒数 の3種類を指定しなくてはなりませんが、位置だけでいいや、という場合は KFM_DATA, KFM_TRANSLATION というオプションをつければ <ベクター型の位置>, float 型の秒数 というように回転の指定を省くことができるようです。同様に KFM_ROTATION は回転指定と秒数指定のみで、位置指定を省くことができるわけですね。

実際はこのオプションなしで、ZERO_VECTOR や ZERO_ROTATION 使いそうですけど。

・KFM_COMMAND

おもしろいオプションです。アイディア次第でいろいろな適用箇所があるかもしれません。モーション移動途中で中断 (KFM_CMD_PAUSE) させたり、再開始 (KFM_CMD_PLAY) させたりできます。停止 (KFM_CMD_STOP) させるとリセットされるので、次に再開始 (KFM_CMD_PLAY) すると一番最初の keyframes から開始させます。。。。って、これ、はまりそうなポイントなんですけどね。

このオプションは他のオプションと一緒に使えないことに注意です。keyframed のリストも指定できません。なので使い方は、

llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_PAUSE]);

のような使い方になります。

4) 利用上のポイント、注意点 (?)

といっても、、、まだそんなに使いこんでいるわけじゃないので偉そうなことは言えないのですが、、、

a) 障害物があった場合は・・・・

非物理や土地などは突き抜けますが、物理オブジェクトやアバタ―がいると「衝突」が発生します。アバタ―を push するときもあれば、オブジェクトがアバタ―につっかかってしまって止まるときもあります。そこからキーフレームで指定している分だけ移動するので期待しない位置にいく可能性がありそうです。

b) なんとなくパーティクルと一緒な、、、

空のリストを使ってあげると完全にクリアになりますが、それをしないとセットした属性というかプロパティというか、情報はプリムに残っていますね。

llSetKeyframedMotion([],[]);

llParticleSystem のクリアも確かそんな感じでしたよね。

c) 初期位置は、、、、グローバル座標で覚えているみたい

llSetKeyframedMotion でキーフレーム モーションを設定した時点の「位置」を覚えているようです。KFM_MODE, KFM_LOOP でキーフレーム移動をループさせると、たとえば上の a) のような障害物があってずれていっても、LOOP で最初の位置に戻ってから、A->B->C と動きます。なので、A->B->C と設定したときは、llSetKeyframedMotion をコールしたときの位置 i から、i –> A –> B –> C –> i –> A –> B –> C,,,, と動きます。

ピンポンも、i –> A –> B –> C –> B –> A –> i –> A –> B ...と動くみたいですね。

今は通常の SIM でも利用できるんじゃないかな? わたしの SIM では使えました~。

//llKeyframedMotion のサンプル。左に5m、前に5m、右に5m の移動をピンポンモードで。

integer flg;
list kfList = [<0,0,0>, 3, <0,5,0>, 3, <5,0,0>, 3, <0,-5,0>, 3];

init(){
        flg = FALSE;   
        llSetKeyframedMotion([], []);
        llSetKeyframedMotion(kfList,[KFM_DATA,KFM_TRANSLATION,KFM_MODE,KFM_PING_PONG]); 
        llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_STOP]);
}

default
{
    on_rez(integer start_param){
        init();   
    }
   
    state_entry()
    {
        llSetPrimitiveParams([PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);
        init();
    }
       
    touch_start(integer num_detected){
        if(flg){
            flg=FALSE;
            llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_PAUSE]);
        }else{
            flg=TRUE;
            llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_PLAY]);
        }
    }
}

[LSL] LSLCON 2011 にエントリーしちゃいました

まるでデジャブーなタイトルですが、、、
2011年2月27日の投稿で「LSLCON 2010 にエントリーしちゃいました」とまったく同じタイトルですけど。

あの時はまだ mldu5 はベータでした。LSLCON 2010 でベータを使ってもらったハルちゃんからの熱心なラブコールをもらって正式版に仕上げ、marketplace で販売開始させてもらったのがもうかなり昔に感じられます。

実は、、、LSLCON 開催に気が付いたのは3日前、、、参加応募締切が 2011/12/9 って、、、もうギリギリじゃんw ということで急いでエントリー。関係者の皆様、ごめんなさい、、、。

LSL に興味にある人はこちらの LSLCON のページを見てくださいね。

http://lsl-con.org/2011/

開催は 2011年2月4日(土)~ 2月19日(日)まで。メイン会場は New Script SIM です。
一応、アイテムデモにも登録してます。正直 15 分くらいでダンススクリプトの説明って相当難しいんです。無理です(笑)

なので mldu5 自体のデモが中心になると思いますが、もう、いっそのことみんなで楽しんじゃえ!という感じにしたく、難しいスクリプトの話は極力少なくっ!!でも、ここまでできるんだよ~ということを感じてもらえれば、、、という主旨にしたいと思っています。

そこで!

展示およびアイテムデモは「みんなで踊っちゃいなYO!」的な感じでいこうかと。
もしかしたら、運営様から NG がでるかもしれませんが、、、、ちょっと llParcelMediaCommandList 使って、動画に合わせてダンスを踊ろう~みたいなデモにしようかと思います。実はこれすでにあったりします。

MMDDR

実際のところ、ラジオと違って動画の「開始タイミング」はネットワークなどかなり個々人の環境に依存するので、今ある仕組みを売り物にするほど汎用的じゃないと思っています。ビューワーが V1 系と V2 系が入り混じっていたころは、バージョンの違いでそれぞれのビューワーで4~5秒もの開始の差(ズレ)があったり、、、

でも、過去の LSLCON で MLDU4, MLDU5 とアイテムデモすると、やっぱりダンスのときは「曲」があったほうがいいんですよね~。なので、現在ある MMDDR をもうちょっと見直して出展しようかと思っています~。(運営さんから許可がおりたら、、ですが)ダンス/アニメーション コントロール部分はフルフル multi motion mldu5 を流用してますしねw