Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【勉強会レポ】: xR Developers Community Conference VRM勉強会

勉強会のレポート(メモ)です。
参加したのはこちら「xR Developers Community Conference」。
xR Tech Tokyo・Tokyo HoloLens ミートアップ ・VRM勉強会・withARハッカソンの合同オンライン勉強会です。

このレポではVRM勉強会をメインにしています。

vrtokyo.connpass.com

ハッシュタグ : #xRDCC, #VRM勉強会

 

 

それぞれのコミュニティの紹介

以下イベントページからの引用です。

xR Tech Tokyo

xR Tech Tokyo は、2016年からおおよそ隔月で開催している VR, AR, MR 関連の開発者向け勉強会イベントです。
現在は WebXR に特化した WebXR Tech Tokyo という形で実施しています。

https://vrtokyo.connpass.com/

個別ハッシュタグxRTechTokyo

運営: @ikkou

HoloLens ミートアップ

HoloLensアプリ開発で著名な方々に登壇いただき、HoloLensに向いたアプリ、VR/MRに向いたアプリの特長や、HoloLensアプリ開発の裏話をお話しいただきます。

HoloLensを持っていない方も参加可能です!ご興味のある方は是非ともご参加頂き、HoloLensを含めたWindows MixedRealityの世界を覗いてみてください!

https://hololens.connpass.com/

個別ハッシュタグHoloMagicians

運営: @morio36

VRM勉強会

VRアバターの共通規格「VRM」に関する知見共有やアプリ自慢をする勉強会

https://vrm.connpass.com/

個別ハッシュタグVRM勉強会

運営: @nkjzm@toRisouP

withARハッカソン

ARエンジニアと異業種のクリエイターが共創するハッカソン。 8/30~9/6に夏まつりwithARハッカソン開催中!

https://withar.connpass.com/

個別ハッシュタグwithARハッカソン

運営: @iwaken71@Ossy_Oshida@tom_nike@expo2025jp

 

 

 

アーカイブ動画

全てアーカイブとして残っています
セッション間の雑談も見どころです

xR Tech Tokyo

公開されました

www.youtube.com

HoloLens ミートアップ

www.youtube.com

VRM勉強会


【VRM勉強会枠】xR Developers Community Conference #xRDCC #VRM勉強会

withARハッカソン


【withARハッカソン枠】xR Developers Community Conference #xRDCC #withARハッカソン

 

 

 

 

C-1 VRM 1.0で使用可能になるConstraintについて

VRM 1.0はどうなっているの?

運用体制に問題がありしばらく動きがありませんでしたが
現在はGitHubのissueベースで進めています。

↓こちらで、企画に関してのissueを受け付けています。
https://github.com/vrm-c/vrm-specification/projects/1

VRM 1.0におけるConstraint

現在議論・実装が進んでいます。具体的な議論はこちら。

github.com

 

現在決まっているConstraintがこの3つ

・Position Constraint ソースとなるノードの移動に追従
・Rotation Constraint ソースとなるノードの回転に追従
・Aim Constraint ソースとなるノードの位置を向くように回転させる

ただしVRMに載せるにあたり制約をしています。
様々なプラットフォーム、実装、アプリケーションでリアルタイムに処理をするためにシンプルにしています。

UniVRM 1.0の試し方

Unity2019.4以降で、Packagesフォルダのmanifest.jsonに追記するだけ。
UniVRM 0.xxで作られたVRMファイルも読み込めます。

SpringBoneのカプセルコライダやConstraintが使うことができます。

 

ここでデモタイム(動画を見てね)

 

注意事項

VRM 1.0のフォーマットはこれから変更される可能性が高いので、
(混乱のもとになるので)流通させないでください。

フィードバックをください

GitHubのissueや、「#VRMなんもわからん」でつぶやいてください

Issues · vrm-c/vrm-specification · GitHub

 

 

 

 

C-2 「VRMアバター時代のPNG」から考えた、透過撮影アプリ制作の話

 

VRMを読み込んで、透過しながらポーズや表情を切り替えて撮影をできるアプリを作りました。

booth.pm

 

今回は「アバター時代のPNG」と概念からどういうアプリが作れるか考えたことをお話します。

VRM いろいろある

モデルには身長やアクセサリーなど様々なものがある。やれることも様々ある(ポーズやライティングなど)

VRMアプリを作るときに、様々なモデルに対応することは必須として、「なにをするか」に焦点を絞らないと作れなくなってしまう

アバター時代のPNG」とは

これはエクシヴィの@GOROmanさんの発言です。この思想にかなりの影響を受けました。

PNG感覚で使えるデータで考えた場合Instagramnをイメージしました。
同じようにVRMでポーズとアプリを選んで良い感じの画像を作れるアプリを作ってみようと立ち上げました。

やらないことを決めた

プログラミングや3DCGができる人が考えるようなことを考えなくても使えるようにしました。
微調整などはカットしています。

カメラ・ライティング・ポージング・切り抜きなどについて考えなくてもいいことを目標にしました。

どういう風に実装したか

FOVの設定

一番困ったところです。VRMはいろいろあるので最適な設定というものがない。
なので並行投影にしどんなモデルでも許容範囲になるようにしました。

ライティング

サムネやグッズを作ることを想定したので影はでないほうが扱いやすいため出ないようにしました。

カメラの画角

勝手にいい感じに画面に収まるようにしました。
頂点座標とワールド座標を求めて、それが収まるようにカメラをサイズを変更するようにしています。
アクセサリーや武器を持っている場合、普通のMeshRendererのことがあるのでMeshFilterも計算対象にしています。

Standard Shaderのハマりどころ

 

ビルド時にStandard Shaderが含まれていないとエラーでハマリます。
Project Settingで設定しましょう。

VRMのライセンス表記

えむにわさんのVRMLoaderUIで解決しました。

github.com

これを呼ぶだけで、ファイル選択とライセンスの表示とシーンの読み込みをお任せできます。

ドキュメントにない変数を探す

VS Codeの補完機能に頼り探しました。
初心者の方には有効な手だと思います。

 

 

 

 

 

C-3 モバイルファーストなアプリを作るためにvearがしたこと

vearとは

iOS向けのアプリで、アバターをフェイスモーフィングし撮影や配信をするアプリです。

vear - バーチャルライブ配信アプリ

vear - バーチャルライブ配信アプリ

  • Tomoya Hirano
  • ユーティリティ
  • 無料

apps.apple.com

アバターから意識を逸らせる理由

撮影や配信といった提供したい価値にフォーカスさせるため
アバターのアプリは動かして満足してしまいがちで、本来の目的に到達できないことも多い

アバターを使ったアプリは大きく分けて2つある

着ぐるみ式

人間とアバターを同期させる手法、キャラクターになりきることが特徴
動かしたうえで演技や行動をすることが目的

パペット式

アバターを第三者視点で操作する
動かすことが目的

 

着ぐるみ式の方では、動かすことにフォーカスしてしまうと目的に到達することができない。
なので、アプリを起動したらすぐにアバターが動く状態にしておくのが(重要)

着ぐるみ式の弱点

没入感から放り出されやすい、特にアバターをメタ視点で見せてしまうと没入感が損なわれる

没入感が損なわれるとどうなるか

「なにをしようか」ではなく「誰になろうか」という点に関心が向いてしまう。
スマホアプリの場合、起動してから落とすまで3分から10分とライフサイクルが短い。
なのですぐに没入させて、それを維持するのが大事。

違和感を減らすためにしたこと

ARKitから取れる情報はなるべく反映する

回転のみでなく、位置情報、瞬きなどを反映するとユーザーとのシンクロ率が上がります。

現実と乖離する部分は隠す

ラッキングが外れてもホームポジションに移動させたり、画面端に出しっぱなしにしない。

できない事はしない

操作している感じを出さない、シンクロできる動きだけを実装する。中途半端になるなら実装しない。
全身のトラッキングはできないので、できない部分は隠す。

違和感をなくした後

この時点で普通のカメラアプリと同じ土俵に立てます。
ユーザーがアバターなのか人間なのか気にする必要がなくなるため、
人間向けのカメラアプリの機能(フィルターやジェスチャーなど)を再利用できる。

共通認識を上手に使う

カメラアプリらしい見た目からはずれない。どこを押せばシャッターが切れるかわかりやすいようにするなど。
OSのデザインに沿ったUIを使いましょう。iOSの場合はヒューマンインターフェースガイドラインに沿うといいです。
これに沿わないとアプリの世界観に合わず、ゲームっぽく見えてしまう。

 

 

 

 

C-4 Unityで作ったVRMポーズをUE4でも使う!

www.slideshare.net

話すこと

UE4でゲームを作る話とVRM4Uについてはお話しません。
それらについてはこちらをご覧ください。

www.youtube.com

ruyo.github.io

 

COCOPStudioで作ったポーズをUE4で使うお話を今回はします。

COCOPStudioとは

Unity製のアプリです。ポーズの作成・修正・保存・読み込み・透過PNGの出力ができます。
出力してゲームに取り入れたり、マンガの制作に使うことができます。
AndroidWindows向けに配信しています。iPad版はもう少しで公開できるかも。

ポーズの集合サイトも作っています。

cocop.site

UnityからUE4へポーズを渡す

ポーズのデータを渡す時に問題になるのが軸の違い

Unityは左手系のYup、UE4が右手系のZupです。これを変換してあげればよい。
UnityのRotationを、UE4のRotationを変換してもうまくいきませんでした。
Unityは内部でQuaternionを使っています、なのでRotationではなくQuaternionを使うことにします。
UnityのQuaternionをUE4のQuaternionに変換し、そこからRotationに変換してできました。

 

これはCOCOPStudioの方に自動化機能として組み込んでいます。

 

受け取り側 UE4のエディタ拡張

COCOPStudioから出力されたJSONUE4にD&Dするだけ。
後はボタンを押したらポーズが全て読み込まれるエディタ拡張を作りました。

これは9月中にデスクトップ版で配布予定です。

 

 

 

 

C-5 USBカメラモーションキャプチャー「ThreeDPoseTracker」

ThreeDPoseTrackerとは

USBカメラでモーションキャプチャができるソフトウェアです。
動画からもキャプチャできます。対象は一人のみで、強いPCと撮影環境が必要です。
ソースはGitHubにあります。

github.com

使い方

※デモ動画流れるのでアーカイブ動画を参照してください

 

宣伝

Hubs Cloudとは
ブラウザで動く開発中のソーシャルVRです。
インストール不要でスマホのブラウザからも動きます。
評価用のサイトを立ち上げています。

https://digi-rooms.com/

最後に

まだまだベータ版です
動画の投稿をしてもらうと励みになるのでお願いします。

 

 

 

 

 

 

他の感想ブログとか

chomado.com

ja.algonote.com

 

 

 

 

おまけ

Quaternionについてはこちらがとても参考になります。

www.youtube.com

 

 

 

間違っている箇所、消してほしい所がありましたらコメントにお願いします。