物理演算ボウリングセット 名称は、Mikubowl としておきます。 2009年10月28 2009年10月30更新 ★他のレーンの1番ピンの位置 V0.5 V051 2009.11.1 修正 モデルデータの再配布、改造について。 再配布、改造は自由におこなってもらってもいいですが、 モデルのコメント欄の、制作:あれっく 以上はそのまま残してください。 ボウリングセットで物理演算で動作させるには、最低6個のモデルと、モーションを ロードする必要があります。人物モデルや、投げているように見せる部分は好みで追加 してください。ここでは、6個のモデルを使う最低限の使い方を説明します。 ロードする順番に制限はありませんが、一応以下のようにします。 1、lanedouble4c.pmd を読みます。lanedouble4c_0_0.vmd を、フレーム0から読みます。 2、panel5.pmd を読み、panel5_0_480.vmd を、フレーム0から読みます。 3、kikkerdram2.pmd を読み、kikkerdram2_0_130.vmd を、フレーム0から読みます。 4、tray5l.pmd を読み、tray5l_0_600.vmd を、フレーム0から読みます。 5、negipin4set.pmd を読み、negipin4set_0_0.vmd を、フレーム0から読みます。 6、negiball.pmd を読み、negiball_0_130.vmd を、フレーム0から読みます。 以上で、再生すると、4秒後ぐらいに、ボールが前方に転がり始め、ピンを倒します。 ● V05 --> V051 negipin4set.pmd 修正 10ピン剛体、本体下10 が中央柱10にジョイントされていないのを修正。 Joint101 を修正。2009.11.1 参考のため、pmm にまとめた例を同梱しておきます。Mikubowlsample.pmm です。環境は D:\down\MikuMikuDance_v508\ となっています。 ★ボールの方向調整 kikkerdram2.pmd のセンターボーンを選択し、Y軸の数値を変えます。0 〜 3度 ぐらい。 回転速さとの組み合わせになります。 ★打ち出し速度の調整 kikkerdram2.pmd のkikker ボーンを選択し、フレーム120〜130のZ位置を上下します。 短い時間で同じ距離を動かすと、早くなります。 ★ボールの回転速度を変える。 kikkerdram2.pmd の dram ボーンを選択し、角度の増加量を変えます。 最後のフレームでは、下に下げて、ボールにブレーキがかからないようにします。 回転なしにすると、(はじめから、dram を下の方に設定しておく)まっすぐに打ち出せます。 正確なので、狙ったピンにはほぼ確実に当たります。スプリットメイクなどに使います。 ★ ストライクを狙うには 上記設定で、たぶん取れると思いますが、使用しているパソコンが代わったり、 AVIに残す、残さないの違いで、状況が異なるようで、 一定の結果にはなりません。今日よくても、明日だめとか、パソコン起動しなおしで 変わったりします。再生でも、1回目だめで、2回目に成功したりします。 連続再生でも結果は同じではありません。 これは、どうやらMMDの物理演算の仕様のようです。 ★スプリットを成功させるには 回転なしの方が成功しやすいようです。 EFIスプリットメイクは、一番良い設定でも100回に1回程度しか成功しません。 また、パソコンによっては、まったくだめな場合があります。 また、EFIピンを残すことの方が難しく、動画に使ったのは、EFIは物理演算なしにして、 倒れないように見せているだけです。 ★複数レーンを設置するには 2レーンで1セットになっており、全幅は、MMD単位で44グリッドあります。このため、 モデルの設置は、センター、もしくは全ての親を、X方向に44グリッド単位でずらして設置すると、 きっちりと並びます。5セット10レーンで、MikuMikuDance のサンプル、きしめん AllStars を 超えてしまいます。ポリゴンが多いのは、ピンの10本セット(4230)、 テーブルセット(4836)です。ボール回収 340、2レーン 303、前方パネル 170 などと低くなっています。 ピンはもう少し少なくできると思います。テーブルセットも椅子などを簡略化できるようです。 ★他のレーンの1番ピンの位置 このセットは、原点で左右対称になっているので、左のレーンではXの値をプラスにします。 ★ヒント □ この例では、打ち出していますが、押し出す方法も可能だと思います。 □ kikkerdram2.pmd と、negiball.pmd は、同じX−Y位置に初期設定してください。 □ 高さYは、kikkerdram2.pmd が6、negiball.pmd が7.2です。 □ レーンの剛体表面の高さは、Y5.8になっています。 □ レーンの剛体は手前6割ぐらいの摩擦力は0.1、その先が0.3になっていて、わずかに 下に下げた位置になっています。こうしないと、剛体つなぎ目でボールがわずかに 飛び上がることがあります。 □ 摩擦力を大きくすると、よく曲がりますが、思い通り狙いにくくなります。 □ ボールの反発力は5とかなり大きくしてあります。ちょっと大き過ぎるかもしれませんが、 豪快なピンアクションはこれくらいでないとでて来ません。 1にすると、パラパラと倒れるだけで、ボウリングの雰囲気が半減します。 □ あまりボールの速度を早くすると、ピンに当たってるにもかかわらず、倒れないことがあります。 これは、MMDの物理演算のタイミングの時、ピンとボールの剛体がオーバーラップして いないからと思われます。 ★問題点 いつも同じスピードにはなりません。MMDの物理演算仕様と思われます。 回転なしでも、若干方向が毎回変化します。これもMMDの物理演算仕様と思われます。 -------------------------------------------------------------------------------------------- 以下は技術資料です。 ●モデル 1、1組2レーンの本体 lanedouble4c.pmd 2、前方パネル ピン操作ギミック付き panel5.pmd 3、投球ギミック ボールの回転と打ち出し kikkerdram2.pmd 4、ボール回収機 ボールの回収と、ボールトレイ tray5l.pmd 5、テーブルセット tableset5.pmd スクリーンは 静止画。 右側のCRTには、screen.bmp で動画が可能です。(後述) 6、ねぎピン10本セット negipin4set.pmd 7、ねぎピン1本 negipin4.pmd 8、ねぎボールセット 物理演算、アクセサリ、剛体なし negiball.pmd など 9、サンプルモーションVMD 他、各モデルの初期位置設定VMD(0番フレームのみ) ミクのモーションは、PON版物理演算対応、全ての親ボーン追加で使えます。 他のモデルでは、手足の長さなどが異なるので、修正が必要です。 10、テーブルセットの右表示器の前に設置する、screen.bmp 対応アクセサリ。 ●各モデルの設定。センター(または全親)を選択して、ボーン編集−−>数値入力 位置X Y Z 角度X Y Z lanedouble4c 0, 3.8, 0, 0, 0, 0, panel5 0, 3.8, -106.4, 0, 0, 0, kikkerdram2 -14, 6, 96, 0, 0.2, 0, tray5l 0, 3.8, 173.4, 0, 0, 0, tableset5 0, 3.8, 205, 0, 0, 0, negipin4set -11.34, 5.8, -110.82,0, 0, 0, negiball -14, 7.2, 96, 0, 0, 0, negiball_nomass(全親) -11.34, 5.8, 172.5, 0, 0, 0, 初音ミク(全親) -11, 5.8, 177, 0, 0, 0, ここには置いてません 各モデルの設定値は、対応した .vmd ファイルを読むことで、設定されます。 注意:初音ミクは、PON版物理演算対応で作成しているので、他のモデルでは、寸法の差異で やや違う動作になります。特に、ちびモデルではおかしな動作になります。メイコ、ハク、 ルカではそれほど違和感はありませんが、足が長いので、足の動きの修正が必要です。 標準ミクではそれほど変わりませんが、PON版にくらべ、手が短いようです。 表情についてもマッチしない動作になることがあります。 モーションデータと、モデルの組。名称の右の数値は、保存時フレーム番号範囲 無い場合は、0フレームのみ。 blackballtray5l.vmd blackball0.pmd blueballtray5l.vmd blueball0.pmd cyanballtray5l.vmd cyanball0.pmd greenballtray5l.vmd greenball0.pmd purpleballtray5l.vmd purpleball0.pmd kikkerdram2_0_130.vmd kikkerdram2.pmd lanedouble4c_0_0.vmd lanedouble4c.pmd miku_strikeform_0_283.vmd 全親付きのモーション フレーム0からロード miku_strikeform_15_283.vmd 全親なしのモーション フレーム15からロード negiball_0_130.vmd negiball.pmd negiball_nomass_0_130.vmd negiball_nomass.pmd negipin4set_0_0.vmd negipin4set.pmd panel5_0_480.vmd panel5.pmd tableset5_0_0.vmd tableset5.pmd tray5l_0_600.vmd tray5l.pmd 当然のことですが、人物モデル、アクセサリ(ボール)などは、ボウリングの物理演算動作には 一切影響しません。tableset5.pmd は無くても動作します。 今回のボウリングの投球フォームは、3人ほどの女子プロボウラーのフォームを参考にしています ●ねぎボールアクセサリの設定 negiball.vac に書いています。 negiball negiball.x 0.1 -0.7,-0.8,0.20 0.26,-2.79,-0.349 右中指3 ●個別ピンの設定。センターを選択して、ボーン編集−−>数値入力 X Y Z @ -11.34, 5.8, -110.82, A -9.395, 5.8, -114.19, B -13.285, 5.8, -114.19, C -7.45, 5.8, -117.56, D -11.34, 5.8, -117.56, E -15.23, 5.8, -117.56, F -5.486, 5.8, -120.93 G -9.395, 5.8, -120.93 H -13.285, 5.8, -120.93 I -17.194, 5.8, -120.93 ● レーンのテクスチャは、3544x195 アプローチのテクスチャは、990x636 前方パネルは、1424x360 ピン回収MMD 800x120 ●テーブルセットの、右側のスクリーンのすぐ手前に、アクセサリデータ、screen.x を 設定することで、表示−−>ON・モード1などで、カメラか、背景AVIを表示できます。 1、ダミーボーンを読み込んでおく。 2、アクセサリ操作で、screen.x を読み、ダミーボーンの適当なものに、 X=0,Y=0,Z=0, Rx=0,Ry=180,Rz=0 としておき、 3、モデル操作で、ダミーボーンを選択し、ボーン・フレーム操作で、 ボーン編集−−>数値入力−−> X=7.4、Y=13.8、Z=208.1で、 CRTの少し前面の位置に リアルタイム表示されます。 ● すでに判っている問題点や、将来の可能性。 ▲panel5.pmd の残りピン持ち上げは、2〜3割で失敗します。 1、 下から上がる剛体で、倒れたピンを持ち上げてしまうことがあります。 2、 ピンの横ズレが大きいと、持ち上げ時のホルダ操作で倒してしまうことがあります。 ▲たまにボールのスピードが遅いと、ボール回収に失敗します。 ▲たまに、ボールがレーン圏外に出てしまうことがあり、こうなると、 反発率の大きいボールなので、飛び上がってどこかに行ってしまいます。 ▲MMDの仕様上、残りピンの結果状況に対応した、スペア投球はできません。 ▲左右のレーンで同時投球は、ボールの反発率が大きいので、回収時に お互いに反発して、どこかに飛んで行きます。 ▲トレイ上のボールは、反発率0のボールでないと、同じような異常反発が起こります。 △回収したボールの再利用は、このセットではできませんが、試作では成功していいます。 △倒れたピンの再利用は、今のところ対応していませんが、できる可能性があります。 スペアを無視した、12回連続投球(ストライクのみに挑戦)ができるかもしれません。 それには、 @ 12回分、ピンをあらかじめ用意しておき、適当に運搬する。 A ピンを回収して、所定の位置にセットする。 が考えられますが、12回分のピンはかなりのポリゴンになります。 (1セット4230で、5万ポリゴン、左右2人でピンのみ総計10万ポリゴン) 置いてみたことないので、何とも言えません。 Aは、剛体グループの設定を駆使すると、不可能ではないようです。 左右同時使用は無理っぽい。グループが足りない。 32ビットのフラグで、32種類用意してほしかった。 ------------------------------------------------------------------------------------ 以下はMMDの物理演算の技術的な調査です。 △ MMDの物理演算を検証してみます。 MMDでのグリッドは、初音ミクの身長から、1MMDグリッドが 7.82cmとして 他の全てのモデルの設計基準にしていますが、別の角度から調査しました。 物理演算モデル(ボールなど)を高いところから落として、何秒で地面に到達するかで 測定します。ボールの移動減衰は0にしておきます。 測定結果:Y100グリッドから地面まで、43フレームで1.43秒と判りました。 なお、高さ400グリッドにすると、2.86秒かかるので、物理的には、妥当です。 このことから、1/2・g・t・t = 落ちた距離 gは重力加速度で、9.8m/秒・秒 で、t=1.43sec なので、1.02245・9.8= 10.02m このことから、100グリッド=10.02m 1グリッド=約10cm となります。 この比率だと、ミクは20グリッドあるので、身長が2mになります。 これは、明らかに不自然ですね。 MMDのグリッド単位は、厳密な物理的意味はなさそうですが、おおまかには 合ってるので、投げたボールの放物線軌道などに違和感が無いと思われます。
「カチカチボールたこルカ」の使い方 再配布、改造は自由にどうぞ。 使用モデル:たこルカver3 http://www10.plala.or.jp/masisi/DL_MMD.html このモデルの必要最小限の外観を抽出して使っています。 モデルデータファイル:カチカチボール台v2&たこルカ.pmd 1、基本的には、水平に設置しますが、センターをX軸を中心に、−87度〜87度まで 傾けることができます。傾けると遅くなります。 80.5度にすると、重力加速度が1/6になり、理論上、月面の引力下での 動作シミュレーションになります。 2、たこルカを支えているのはひもではなく、1本の棒で真上で支えています。 真上に剛体で囲んだ軸受けがあり、その中心にあるセンターボーンで初期の角度を 設定すると、横に持ち上げなくても始められます。 すべて、フレーム0に設定します。 例1: センタ1 を選択、ボーン編集---数値入力---角度のZ軸を−30度ぐらい。 これで左端のたこルカが左へ持ち上げられ、そこからスタートします。 例2: センタ1 を選択、ボーン編集---数値入力---角度のZ軸を−30度ぐらい。 センタ12を選択、ボーン編集---数値入力---角度のZ軸を−30度ぐらい。 これで左2個のたこルカが左へ持ち上げられ、そこからスタートします。 例3: センタ1 を選択、ボーン編集---数値入力---角度のZ軸を−30度ぐらい。 センタ5を選択、ボーン編集---数値入力---角度のZ軸を30度ぐらい。 これで右端のたこルカが右へ持ち上げられ、そこからスタートします。 左右対称なので、偏りがなく、比較的長く続きます。 3、各たこルカのセンタボーンは、使わない場合、どこか遠くに移動させてください。 4、各たこルカのセンタボーンは、Z軸のみ回転の初期設定をしてください。 5、再生途中から動作させる場合は、ボーン・フレーム操作の制御に、起動ボーンがありますが、 これを上に1(Yを+1)にしてから、右に適当に移動させ、(必ず数値入力で行う) 0に下げると、右端のたこルカが振りはじめます。 6、制御に、制動1とありますが、これを、Yで0.83ぐらいまで持ち上げると、 止まりますが、ぴったりとはいきません。 7、制動2は、たこルカ間に剛体の板を入れて、強制的に止めるものですが、 早く動いてるときに入れるとたこルカが外れる場合があります。 8、カチカチボール台v2.pmd は台のみです。 ここに、takov3sv2_1.pmd から、takov3sv2_5.pmd を追加すると、カチカチボール台v2&たこルカ.pmd と同じになります。(剛体の設定値など多少違うかもしれません) takov3sv2_3.pmd だけを、X方向に間隔2で設置しても同じです。 個別ロードの場合は、まとめて動かすことはできません。 9、高度な設定 PMDエディタ、または MikuMikuDance のヘルプ---モデル拡張---物理演算編集で、 たこルカ本体の剛体の半径を、1以下でいろいろの大きさに設定すると、 違った動きになります。また、反発力を変えても動きが変わります。 其の他、質量を変えたり、減衰率などを変えて、できるだけ長く同じ動作が続くような 値を見つけてみてください。 反発力を1以上にすると、振動が発散するようになり、やがてたこルカが飛び出してしまいます。 反発力が0.95ぐらいでも、発散することがあります。
【MMD】ミクにボウリングをさせてみた。(物理演算) 【MMD】ミク、ボウリングのトリックプレイに挑戦。おまけ付き 【MMD】たこルカで、カチカチボールを作ってみた。【物理演算】 【MMD】たこルカが滝行をしたよ(永遠亭を大改造した永楽亭の庭) 【MMD】前作の「吉良亭討ち入り」というコメントで、作ってみた