【MMDVR】Chrom MMDVR V0.88公開

Oculus Touchでいろいろ操作できる機能を追加しました。
モーションキャプチャっぽいことができるようになっています。

ChromMMDVR V0.88

(変更点)

○コントローラ設定
⇒コントローラ(主にOculus Touch)でボーン同期、モーフ同期をはじめ、様々機能を実行できる「コントローラ設定」機能を追加して、Oculus Touchで様々な操作ができるようにしました。

「設定」ダイアログの「コントローラ設定」でボタンに割り当てる操作をカスタマイズできます。例えば、指定したボーンをコントローラ(Oculus Touch)のトラッキング位置・回転と同期する「ボーン同期」やトリガボタンの入力などをモーフと同期する「モーフ同期」を設定できます。
「ハンドトラッキング」入力で「右足IK」「左足IK」ボーンを「ボーン同期」で設定すると、「ハンドトラッキング」(=Oculus Touch/Leap Motion)でモデルの足を動かすことができます。
腕は標準モデルにはIKボーンがありませんが、「仮想IKボーン作成」で仮のIKボーンを作成して、同じように動かすことができます。
「HMDトラッキング」を入力として「頭/首」のポーンを「ボーン同期」に設定して、HMDの向きとモデルの頭を同期して動かすことができます。
その他様々な機能をボタンに割り当てて使用できます。

デフォルトの設定は、ControllerSettings.txtをご参照ください。

Oculus Touchの他に、XboxコントローラやLeap Motionも一応使えますが、使い勝手はよくないと思います・・・

○モーション記録
⇒モーションのリアルタイム記録ができる、「モーション記録」の機能を追加。  上記のようにコントローラでモデルを動かすことができるようになったので、リアルタイムでモーションの記録ができる「モーション記録」機能を追加してみました。
メニューの[モーション]-[モーション記録]で使用できます。コントローラ設定にも設定できます(デフォルトは「スティックボタン(L)」に割り当て)。
「設定」ダイアログの「一般」でモーション記録フレーム間隔を調整できます。

○主観モード
⇒視点移動でユーザの視点が移動するように視点が移動/回転する「主観モード」を追加。

視点移動操作は基本的にモデルが移動、回転するようになっていますが、VR内で、特にコントローラで視点を動かす場合は、自分が移動、回転するように動いたほうが自然なので、そのように視点が動く「主観モード」を追加しました。
追加メニュー[視点]-[主観モード]で主観モードと今まで通りのモード(オブジェクトモード)の切り替えができます。
コントローラ設定にも設定できます(デフォルトは「A+B+親指タッチ(thumb rest)」に割り当て)。

 

【MMDVR】今後の対応予定(2017/12)

Oculus Touchに対応してて、Oculus TouchやLeap Motionをモーションキャプチャのセンサー(マーカ/トラッカー?)のように使えると、物理を改善するより便利なのでは?・・・と遅まきながら思いました^^;

ということで、物理操作の改善より前に、Oculus TouchやLeap Motionでモーションキャプチャのようなことができる機能を実装予定。

【MMDVR】Chrom MMDVR V0.86公開

Oculus Touchに対応しました。

ChromMMDVR V0.86

(V0.85変更点)

○Oculus Touchに対応
⇒Oculus Touchに対応しました。
これに伴い、「物理手」をMMDモデルで表示するように変更しました。
実行ファイルパスのHandフォルダ以下にあるHand.pmx, Hand.vmdを物理手のモデル・モーションとして使用します(左手のみ、右手は反転して作成します)。
これらを削除すると、LeapMotionでは従来の手を表示します。Oculus Touchでは 超手抜きのモデルを表示します(^^;)。

○物理エンジンを2.75→2.85にアップデート
⇒物理エンジンをアップデートしました。物理操作感はあまり変わってません、  物理がおかしくなりにくくなった気はします・・・^^;

【MMDVR】今後の対応予定(2017/11)

いや、SmartVR/Chrom VR Clientの開発は・・・Androidの開発はじめてだったというのもあり、長くて険しい道のりでした・・・

その割に出来はあまり満足いくものではなく・・・改めてOculus RiftのVR性能の素晴らしさと、くろむの技術のなさを実感できた結果となっていますw

少なくとも自分が使っているスマホでは、視点の向きの変化に画像が追従するのが結構遅れるのでVR酔いしやすそうですが・・・お遊び程度で適度にご使用ください^^;

気を取り直して、今後の開発予定は・・・原点に戻り、このソフトの基本となる物理操作がイマイチなのを改善していきたいと思います。動画のコメントからすると、もしかしてお待たせしているかも知れない(?)Oculus Touchにもそろそろ対応しておきます^^;

とりあえず、MMD互換の名目で古いバージョンになっている物理エンジンを試しにバージョンアップしてみてはどうだろう?・・・とか考えています(←安易)。

 

【MMDVR】Chrom MMDVR V0.85a公開

SmartVR対応はV0.85で実装済みのつもりでしたが、通信の接続/切断処理の修正や、SmartVR時の視野に合わせて、VRデスクトップを小さめに表示する修正を行いました。SmartVR関連機能以外はV0.85から変更ありません。

ChromMMDVR V0.85a

同時に、SmartVRで使用するAndroid用のVRクライアントアプリも公開しました。

Chrom VR Clientの使用方法

 

 

【VR Client】Chrom VR Client使用方法

Chrom VR Clientの使い方について説明します。

0. 準備

まず、Androidスマホ・・・一応Android 4.0.3以上の端末に対応していますが、できるだけ高性能な最新のものをご使用ください^^;
CPUがARM(v7-A)の端末のみの対応となっています。

もちろん(?)、スマホ用のVRゴーグルも必要になるのでご用意ください。
また、物理操作をするには、Leap MotionとVRゴーグルに取り付けるマウンタも必要になります(なくても、VRで見るだけなら出来ます・・・)。

PCとの接続にはWi-Fiを使用します。AndroidスマホをWi-Fi接続したルータにPCも接続し、スマホとPCがLANでつながった状態にしてください。

MMDVRは、現時点(2017/11/03)でSmartVR用にバージョンアップしたV0.85aが最新なので、こちらをダウンロードしてご使用ください(V0.85でも使用できますが若干問題あります)。

Chrom MMDVR V0.85a公開

1. ダウンロード

PlayストアからChrom VR ClientをAndroidスマホにダウンロードします。

Chrom VR Client(Google Play Store)

2. メイン画面

Androidにインストールして起動すると、以下のように(シンプルな)画面を表示します。

3. Chrom MMDVR起動

PC上でChromMMDVRを起動し、メニューの[SmartVR]をチェックします。

ここでWindowsファイアーウォールの画面が表示された場合は、ChromMMDVRの通信を許可してください(キャンセルすると通信できなくなります)。

4. メイン画面

Androidの画面で、[Auto Search]のスイッチをOnにします。
MMDVRが起動状態、かつ[SmartVR]メニューがチェックされた状態で、問題なくPCとLAN接続できていれば、以下のようにPCのホスト名(コンピュータ名)が表示されます(ここではホスト名”DESKTOP-CHROMPC”)。

5. VR表示画面

[CONNECT]ボタンを押すと、VR表示画面に切り替わりますが、VRモードに切り替えていない状態では、まだVR表示はされません(Disconnected)。

6. VR表示

MMDVRをVRモードに切り替えると(メニューの[VR]-[VRモード]か、3D表示のビュー上でマウスの左右ボタン同時押し)、VR表示されます(Connected)。
(VRゴーグルに装着してご使用ください)

7. 視点補正

VRモードに切り替えると表示されていたモデルが表示されなくなる場合、スマホの向きとMMDVRの視点の向きが合っていません。その場合は、調整パネル[SmartVR]タブの[視点補正]ボタンを押すと、視点の向きが合います。この補正値は保持していますが、割とずれるのでこの操作は度々必要かもしれません・・・

8. 自動接続

次回からメイン画面で操作せずにVR画面を表示したい場合、自動接続することができます。

メイン画面のメニューで[Settings]を選択すると、設定画面を表示します。
ここで、[Auto Connect]をOnにすると、[Auto Search]で接続先が見つかったら自動で接続します([CONNECT]ボタンと同じ動作)。見つかったホスト名が[Host]に設定されている名前と同じ場合のみ自動接続します(あまり複数のPCでMMDVRが起動していることはないと思いますが・・・)。

まだホスト名が未入力の場合、[Auto Search]で接続先が見つかっているなら、そのホスト名が自動で設定されます。この後、Backボタンでメイン画面に戻ると、接続先ホストを再度検索し、見つかったらVR画面に自動で切り替わります(次回以降のChrom VR Clientアプリ起動時も同様)。

9. IP接続

上記通り、[Auto Search]を使用してMMDVRの動作している接続先ホストを検索するのが簡単ですが、[Auto Search]がうまくいかない場合、IP指定で堅実に接続したい場合などには、IP直打ちで接続することもできます。
設定画面で、[Auto Search]をOffにし、[Host]にPCのIPを入力します。

Backボタンでメイン画面に戻ると、以下のような表示になります。この状態で[CONNECT]ボタンを押すと、設定したIPを接続先としてVR画面に切り替わります。

10. 設定画面

メイン画面のメニューで[Settings]を選択すると、設定画面を表示します。

[Auto Search]スイッチはメイン画面の[Auto Search]と同じです。

[Auto Connect]スイッチと[Host]の入力については、「8.自動接続」に記載の通りです。

[SET CURRENT HOST]ボタンは、[Auto Search]で接続先が見つかっているホスト名を[Host]に設定します(すでにホスト名が入力されている場合も含む)。

[Port No]は通信に使用するポート番号です。すでにこのポート番号を別の目的で使用している・・・ということがない限り、変える必要はないかと思います。変えた場合は、MMDVR側の設定ダイアログの[SmartVR]タブにある[通信ポート番号]もこれに合わせて変える必要があります。

11. 接続できない場合

スマホとPCのネットワーク接続をご確認ください。
具体的にはスマホのWi-FiのIPを調べて、PCからpingするとか・・・(←具体的じゃない?)

念のため、Chorm MMDVRとChrom VR Clientのポート番号があっているかご確認ください(変更していなければあってるはずですが・・・)。
Chrom MMDVRの[通信ポート番号]は、[ファイル]-[設定]で表示される設定ダイアログの[SmartVR]タブ、Chrom VR Clientの[Port No]はメイン画面メニューの[Settings]で表示されるので、数値が合っていることをご確認いただき、もし、あっていない場合は合わせて下さい(デフォルト59665)。

ファイアウォールの設定が必要な場合があります。
Windowsファイアウォールの場合、初回の確認ダイアログで[キャンセル]すると、通信をブロックする設定になってしまいます。
Windowsファイアウォールの[詳細設定]の[受信の規則]に、”ChromMMDVR”の名前で登録されると思いますので、削除してChromMMDVRを起動し、再度確認ダイアログが表示されたら通信を許可するか、あるいは手動で設定してください。

Windowsファイアウォール以外、ウィルス対策ソフトなど他のファイアウォール機能を使用している場合も同様の設定が必要となります。
実行ファイルChromMMDVR.exe(またはChromMMDVR32.exe)が通信可能な設定になっていればOKですが、それ以外にも細かく設定する場合は以下のようになります。

プロトコルの種類: TCPおよびUDP
ローカルポート	: 59665 (※1)
通信の方向	: 双方向(受信/送信) (※2)

※1 デフォルト値です。Chrom MMDVRの通信ポート番号/Chrom VR ClientのPort Noに設定した値を指定します。

※2 TCPの通信方向は、応答が許可されるなら受信(内向き)だけでOKかも知れません。

12. Wi-Fi通信速度について

自分のところのWi-Fi環境では、周りにWi-Fiアクセスポイントが多いためか、ルータがショボいためか(その両方か)、通信速度が遅くてほとんどつながらなくなることがよくあります。インターネットのアップロード、ダウンロードなどの通信速度を計るアプリで見るとよいときは20Mbps~40Mbps出ているけども、悪いときは1Mbpsも出ず、ほとんどつながらないこともあります。

言うまでもなく通信速度が遅い場合は、SmartVRは使い物にならなくなるので、通信速度が問題ないことを確認の上、ご使用ください。どのぐらい必要か正確にはわかりませんが少なくとも10Mbps程度は必要と思われます。

【MMDVR】Chrom MMDVR V0.85公開

初公開からかなり月日が経ちましたが、ChromMMDVR(くろむ式MMDVR) V0.85を公開します。

ChromMMDVR V0.85

「調整パネル」でモデルの表示サイズを調整できるようになったのと、「ボーン回復モード」の強化が主な改善点です。
また「ボーンJoint」により、今までと操作感の異なる物理操作を実装しました。使い勝手は微妙なのでデフォルトOFFにしていますが、良い点もあるので状況により使用する/しないを切り替えて使うのが良いかと思います。使用する場合は「調整パネル」の[物理操作]タブで、[ボーンJointを使用する]をチェックしてください。
予告通り、スマホのVRにも対応していますが、とりあえず使えるようになったレベルで、トラッキングとか解像度とか厳しいところがあります。あまり期待しない方向でお願いします(スマホのクライアントアプリは近日?公開予定)。その他いろいろ使い勝手を改善しています。
追加した機能は以下の通り(使い方の詳細は添付のManual.txtをご参照ください)。

(V0.85変更点)

○「ボーンJoint」追加
⇒物理操作改善(?)の目的で「ボーン剛体」を結合する「ボーンJoint」を追加しました(「ボーン剛体」はV0.80の「物理ボーン」)。しかし、改善と改悪がありますw

○「調整パネル」追加
⇒[3D表示][視点操作][物理操作][SmartVR]の調整ができる調整パネルを追加しました。
・[3D表示]の[拡大率]によりモデルの表示サイズを調整できるようになりました。
・[物理操作]の[ボーン剛体同期間隔]の調整により、「ボーン回復モード」が効きやすくなりました

○「設定ダイアログ」追加
⇒設定ダイアログを追加しました(V0.85では[自動保存][SmartVR]関連の設定が可能)。

○「SmartVR」スマートフォン向けのVR対応
⇒スマートフォンでVRモードが使用できるSmartVR機能を追加しました。
使用するにはスマートフォン側のクライアントアプリが必要です(近日公開予定)。

○「視点変更モード」/「UIモード」切り替え機能追加
⇒VRモードでの視点変更操作中はカーソルを非表示にして他のウィンドウ操作ができない「視点変更モード」を追加し、「視点変更モード」/「UIモード」を切り替えて使用する機能を追加しました。
※この機能で左クリックを使用するため、VRモード/通常モードの切り替えはマウスボタン左右同時押しに変更になっています。

○「VRデスクトップをこちらに向ける」機能追加
⇒VRデスクトップを視点のほうに向ける機能を追加しました。「VRデスクトップを側に表示する」の挙動も若干修正。

○「視点変更操作による自動Undo登録」機能追加
⇒視点変更操作を行ったとき、それまでVRで行った物理操作を自動でUndo登録するようにしました。これにより物理操作中、常に視点変更時の状態までUndoできるようになりました。

○「物理リセット」機能追加
⇒物理がおかしくなったときのため、物理リセット機能を追加しました。

【MMDVR】IKについて

IKについて

IKについては今までの開発で、モーション再生中、本家のIKと同じになるようにかなり試行錯誤で頑張りました・・・
かなり頑張りましたが・・・やっぱり違うこともあると思います・・・orz
・・・・ご容赦くださいm(_ _)m

最終的なモーションについては本家MikuMikuDanceなどでご確認ください。

IK有効なモーションの作成

公開動画中では、IKを無効にしてVRで足を動かしていますが、IK有効の場合、IKボーンの物理ボーン(物理ボーンを表示したときにオレンジで表示されるボーン)を動かすという方法もあります・・・でも、動かしにくいと思います^^;
次のようにして最終的にIK有効なモーションにすることもできる・・・・・つもりです^^;

  1. IK無効にする
    ⇒[IK]-[IK有効]でチェックをはずしてIK無効にする。
  2. キーフレームのボーンにIKを適用する
    ⇒[IK]-[全体または縦範囲選択キーフレームにIKを適用]のメニューを選択すると、縦範囲選択していない状態ではモーション全体のキーフレームのボーンが、IKを適用しなくてもIKを適用したのと同じ状態になります(縦範囲選択した場合は、縦範囲選択のフレームのみ適用)。
  3. IKボーンをターゲットに合わせる
    ⇒[IK]-[自動でIKボーンをターゲットに合わせる]をチェックすると、IKボーンが自動的に初期位置と同じ位置に移動します(正確にはIKターゲットのボーンと同じ位置関係を保ちます)。
  4. VRで編集
    ⇒VRでポーズを変更します。IK無効状態なので、IKのかかっている足も動かせます。3で自動でIKボーンをターゲットに合わせるようにしているのでIKボーンは初期位置(足首?)についてきます。
  5. IK有効にする
    ⇒[IK]-[IK有効]をチェックしてIK有効にすれば、4で編集した状態でIKにも対応完了!!・・・といきたいところですが、ポーズは少し(結構?)変わりますorz

イマイチですが、これでIK有効なモーションを編集することも一応できます・・・

なお、上記2でキーフレームのボーンにIKを適用しているので、IK無効状態でもそれなりにIK有効と同じようなモーションになりますが、(IKボーンのフレーム間の補間が無効になるため?)IK無効で再生するとガタつくのでIKを使っているモーションをIK無効にするのは難しいと思います。

このあたりの説明動画も作ろうと思ってましたが、「自動でIKボーンをターゲットに合わせる」の動作とかまだイマイチあやしくて修正が必要そうなのなので見送っています。操作の仕様も含めてもう少し考えたほうがいいかも・・・と思っているので、今後変更もするかもしれません。
IK以外も含め全般的にですが、今のところ使えたら使ってくださいという程度でしょうか^^;

IK無効のモーション作成

上記通り、IK有効のモーション作成の「2.キーフレームのボーンにIKを適用する」を行ってIK無効でもIKが適用されたモーション(キーフレームのみ)にすると、IK無効な状態では再生でモーションがガタつきますが、(なんとかなる/なんとかするから?)それでも良いという場合。

MMDに詳しい方々には説明するまでもありませんが、IK on/offの情報はモーションファイル中にIKボーンごとに設定されているため、ChromMMDVRでIK無効でモーション作成しても、エクスポートしたモーションファイル(VMD)には影響せずIK on/offの設定はそのままになっています。MikuMikuDanceでIK offにしても良いですが、ChromMMDVRでは以下のようにしてIKをoffにできます。

IK on/offのデータがないモーションの場合(モーションビューのステータス表示で”(on/offあり)”がない表示「IK」「IK(データなし)」)では、各IKボーンのフレーム0のチェック(☑)をはずしてモーション確定するだけでOKです(下記の手順で2,3は行わなくてOK)。

IK on/offのデータがあるモーションの場合は、下記手順を行う必要があります。ただし、下記、手順3を行った場合、IKボーンのモーションもすべて削除されるのでご注意ください^^;

  1. モーションビューでIKボーンの項目を選択(「ステータス」列で「IK(on/offあり)」のように”IK”が含まれる項目、通常「IK」のグループにまとまっている)
  2. 右メニューで[横選択]
  3. 右メニューで[切り取り]⇒(IKボーンのモーションもIK on/offも削除されます)
  4. フレーム0に移動(モーションビューのエディットボックスで”0[Enter]”)
  5. ステータス表示(ここでは2,3で削除したので「IK(データなし)」になっている)の右側のチェックボックスのチェック(☑)をはずす。⇒(最初のフレームでIK off)
  6. 1~5をすべてのIKボーンについて行う
  7. フレーム0のモーション確定([Enter]キー)

上記を行った後、モーションエクスポートしてください。
(文章で書くとメンドクサイ・・・)

 

モーションの作成