「VR/AR/MR」カテゴリーアーカイブ

ARCore1.7触ってみた その2

先週の土曜日に福岡工業大学で開催されたXR制作会 in 八耐に参加してきたのでその記録。

作ろうとしたもの

ARCoreのAugmented Faces紹介記事によく出てきてる、顔がミスティークみたいなアニメーションで金色になるのと、Developersサイトに載ってる、顔の上にメッシュが透過で描画されるものを作ろうとした。

できなかったこと

イチからのARCoreアプリ作成

新規のシーンからAugmented Facesのアプリを作れなかった。UnityのARCore SDKから、Examples – Augmented Faces – Scenes – AugmentedFacesだとうまく顔認識されるのに、新しいシーンを作って、そこにAR Core Deviceを追加する方法ではうまく動かなかった。

公式サイトの手順通りに新規作成したつもりで、Exampleのシーンと、一から作ったシーンで、オブジェクトのInspectorの内容を一つずつ見比べたりしてみたけど、違いを見つけられず。
https://developers.google.com/ar/develop/unity/augmented-faces/developer-guide
新規シーンを一から作れるようになりたかったので3時間ぐらい、いろいろと試したけどどうにもならなかったのでいったんあきらめた。

透過のワイヤーフレーム表示

透過のワイヤーフレーム表示ができなかった。

「Unity ワイヤーフレーム表示」で検索して出てきたページを参考に、meshにsetIndiciesでMeshTopology.LineとかLineStripとかを設定してみた。
https://qiita.com/2dgames_jp/items/231a18454348cfebd49d

最初、ARCoreAugmentedFaceMeshFilter.csのAwake()でSetIndiciesしてたけどまったく反映されず、_UpdateMesh()のとこで都度都度更新されているようだったので、UpdateMesh()に、

m_Mesh.SetIndices(m_Mesh.GetIndices(0),MeshTopology.LineStrip, 0);

というのを追加してみたら、ひどいことになった。

点をつなぐ順番がめちゃくちゃになってしまってるぽい。何が悪いのかよくわからず。 前回記事に書いた方法でFaceTextureを描画させると、透過はしてないけど、いい感じのMeshに見えるのに。

できたこと

顔が金色になるのモドキ

顔を覆う白色マスクがブラインドチックなアニメーションで動くもの。(ワールド座標基準なので顔を傾けたりしてもブラインドは傾かない・・・)

作り方は次回に続く・・・

ARCore 1.7を触ってみた

テーマ変えたせいか、タイトルのところアルファベット大文字しか入らない。なんでか。

ARCore 1.7がでた

ARCoreがアップデートされて1.7になったそうです。紹介記事で女の人の顔が認識されて金色になる動画がめっちゃかっこいい。しかもすごくきれいに顔の形がとれてるようにみえる。

ぜひ試してみたいということで、ひさびさUnityを起動してAugmented Facesのサンプルアプリを動かしてみました。

手順は完全に公式サイト通り。

UnityにARCoreのSDKを導入

Augmented Facesのサンプルシーンを開く

スクリーンショット取り忘れたので貼りませんが、スマホアプリのSNOWみたいな狐の耳と鼻がオーバーレイ表示されるというサンプルでした。

金色の顔メッシュはどうやれば・・・

Unityど素人なのでまったくどうすればいいのかわからないまま、サンプルシーンのCSファイルを読んでみたり、シーンに配置されているオブジェクトのInspectorのところを見て回った結果、なんとなくARCoreAugmentedFaceMeshFilter.csというところでAugmentedFaceのVerticesとかから顔のMeshを作り上げてるような気がした。

「Unity MeshFilter」とかでググってみたところ、MeshFilterというのがMesh情報の生まれてくるところで、MeshRendererでそれをどうやって描画するか決めるっぽい。あとシェーダーはよくわからん。

よくわからないままサンプルシーンのオブジェクトをいじりまわした結果、FaceTextureというのだけいじればよさそうなので。狐耳鼻のオブジェクトは削除。

サンプルアプリの状態だとFaceTextureに隈取みたいな絵が入ってるようなので試しに黄色一色に置き換えてみたのがこちら。

あと一歩!

FaceTextureのMaterialのShaderというところ、TransparentになってるのをVR/SpatialMapping/Wireframeに変えてみたらそれっぽくなった!(何が起きてるのか理解していない)

最後に

Unity素人すぎてなんか変なことやってる気もするけど、試してみたかったことはできたので満足。次はこのメッシュを保存してBlenderとかで表示してみたい。

あと、MeshFilterとMeshRendererのこともすこしだけ学べてよかった。AR関係なしでシンプルなプリミティブ図形を生成するようなアプリも試してみよう。

スクリーンショットをTwitterに投稿してたやつ、全部Augmentedの綴りを間違っとった。恥ずかしい。

UnityのTutorialをやってみた

きっかけ

VR部屋作りが滞っている。もともとVRデバイスを活用したかったのに、Odysseyが壊れたとか、FAB3Dコンテストに応募したとかでいろいろ横道にそれてしまった。

OculusGOとかWindowsMRとかUnityで作るにしてもいろいろSDKとか違うぽくてどれを選ぶのか迷いもあるけど、結局のところそもそもUnity慣れしてないのでまずはUnity公式のTutorialを試してみることにした。

公式チュートリアル

ページはこちら

まずは Interactive Tutorials から始める。UnityのProject作成ダイアログにLearnというタブがあって、そこを選ぶとこのサイトのチュートリアルと同じコンテンツが選べる。Downloadを押してしばらく待つとボタンの表記が「Start」に変わって、Startを押すとチュートリアル開始。

あらかじめ途中まで作成済みのプロジェクトが開かれて、クリック可能な場所が明るく表示されるので、それに従ってポチポチ押していくことでレッスンが進む形式。最初の2つをやった感じではかなり細かい単位でチュートリアル分割されている印象。

ひとまずの目標は「モデリングしたものをVR空間でじっくり見る」なので、そこに向けてVR要素なしの状態からすすめていくような感じ。Interactive Tutorialsが終わったら玉転がしをやるとして、そのあとどうすべか。

VRで部屋つくり その4

プロジェクションペインティングの覚書

参考にしてる動画は↓

動画から大事そうなところをメモ。

頭部をUV展開してテクスチャを割り当てするところまでは普通にやる。

UV Mapsを新しく追加する。

投影用の画像を開いて3Dモデル側でU-Project From View

Texture PaintでSlotsタブを設定、Painting Mode: Image で Canvas Imageにテクスチャになる画像を選択。UV Mapは顔を展開したときの一つ目のUV Mapを選ぶ。

Toolsのほう球体の絵のところをクリックしてBrushをF Cloneにする。Clone from imageにチェックをいれて、投影用の画像を選ぶ。Source Clone UV Mapは新しく作ったほうのUV Mapを選ぶ。

これでプロジェクションペイントできるはず。正面画像、横画像などいいかんじでぬりぬりする。

そして、先日XR部ロゴの部屋をお試しで作ってOculus GOで見えるようにしたはずなのに、Unity開きなおしたらキレイに消えてた。保存できてなかったのだろうか。まだまだUnityの基本がわかってない。

VRで部屋つくり その3

Blenderのテクスチャ(Blender Renderのほう)だいぶわかった

メッシュ(メッシュの一部の場合もあり)に直接紐づくのが、

  • UV展開の形情報
  • マテリアル

で、マテリアルに紐づくのが

  • テクスチャ

で、テクスチャに紐づくのが

  • テクスチャ画像

メッシュをUnwrapしてUV展開情報を確定するのとほぼ同時にテクスチャ画像を作ることができるけど、これは画像ができただけでメッシュ-マテリアル-テクスチャ-テクスチャ画像というリンク構造が出来上がるわけではない。

メッシュへのマテリアルの割り当てについて、別々のメッシュでマテリアルもテクスチャも別に割り当てて、最後にCtrl-jでメッシュを合体させた場合、メッシュとしては一つだけだけど、マテリアルはそれぞれ部分的に割り当てたときと同じ状態になる。

テクスチャはマテリアルに紐づくので、つまりは一つのメッシュオブジェクトに複数テクスチャ(≒複数マテリアル)が割り当てられた状態ということになる。

ついでに、VRChat用の骨埋め込みに関して、とても参考になるページを見つけたので試してみたところ、VRChatへのアバターUploadできた!

 

VRChat用人型アバターを作ってみた

 

のだけれど、一時期不調から復活していたSamsung Odysseyが再び動かなくなったので動作確認できず。デスクトップモードで見れなくはないけど腕うごかせないので、とりあえずBlenderでの画像をはりつけておく。

2018/9/11追記 いただいたコメントによるとデスクトップモードでもEmoteすれば身振りが見れるとのこと。確かに!

前回のに比べると大改善。

VRで部屋つくり その2

VRで部屋つくりの続き

Blender難しい。

Unityに持ってくる前提ならレンダラーはCyclesにしないほうがいいのかな。

UVマッピングするためのUnwrapとSmart UV Projectの違いもよくわからず。

なんとかテクスチャ書いてpngファイルとfbx同時にD&Dしたらいちおうテクスチャ付きでBlenderから取り込めた。なんかおぞましい感じになってしまったけども。口の色も赤のはずがえらく暗い。

fbxのエクスポートの時にMesh以外のチェック外し忘れるとCameraとかも取り込まれる模様。罠が多い。

VRで部屋をつくる

VR空間を自由につくれるようになりたい

GearVRとかDayDreamとかWindowsMRとかOculusGOとか、デバイスはそろってきたのでコンテンツを作れるようになりたい。

とりあえずトライしたいのは次の2つ。

モデリングしたものをVR空間でじっくり見てみたい

3Dプリント前にVR空間で手元でじっくり見てみたい。

VR空間でグラフを描画したい

VR空間内でログを立体表示してデバッグしてみたい。

ということで、まずは

Unityの勉強。

いろいろチュートリアルとか本とかあって目移りしてしまうので実現したい機能を決める。

  1. OculusGO向けにビルドする。
  2. BlenderでモデリングしたものをUnity空間に配置する。
  3. 空間内を移動できるようにする。(WindowsMR風)
    1. タッチパッド左右押しで視点回転
    2. トリガ押しでテレポート
  4. タッチパッドクリックでものをつかむ。
    1. クリックで保持
    2. パッド前後スワイプで距離変更(VirtualVirtualReality風)

OculusGO向けのビルドは適当にやったらできたので次はオブジェクトをUnitiy内におくのを試してみる。

とりあえずfbxで保存してみたら置けたけど、テクスチャがなくなってしまった。画像ファイルをfbxと同時にD&Dというのも試してみたけどなんかうまくいかず。

BlenderのほうでDecimateというので頂点数を少なくしたのが影響してるような気もする。もともとBlenderのテクスチャがいまひとつよくわかってない。もっとシンプルな箱にテクスチャを張り付けたようなやつで試してみるか。

中途半端だけどとりあえずここまでで記事公開。

Windows Mixed Realityが気になる

先週、ebayでMRゴーグルを落札したのでもうすぐ届くはず

せっかくなので日本で販売されてないSamsungのを落札した。

LenovoとSamsungが掛け心地良いと言われていて、先日のFukuoka AR勉強会でLenovoは試させてもらったので、Samsungがどんな感じか試すのが楽しみ。

Samsung Odyssey、リュックに入れて雑に持ち運んだせいか、正常動作しなくなってしまった。
PCに接続してもMR Portal起動せず、緑LED点滅のみ。Vol+-キーでの音量変更はできるという状態。ファーム更新ソフトでは正常に認識してるっぽく表示される😢。 (2018/11/9 追記)

とりあえずやってみたいこと

  • 360度カメラで撮影した写真を貼り付けた空間に入ってみたい。
  • ZenfoneARでスキャンした部屋に入り込んでみたい。
  • BlenderとかでモデリングしたものをVR空間内で触ったり見たりしてみたい。
  • VRChatも試してみたい
  • リアルタイムなデータビジュアライズを3D空間に表現してみたい。

予習

おそらくだけどWindows MRはまだまだ環境の変化が激しい状態なのでオフィシャルサイトの情報が一番信用できると思っている。

Microsoft様のMixed Realityのページ

を読みつつ、適宜Qiita記事とかを参考にしながら開発環境を準備しておけばよいかな。

今のThinkpadでWindows MRできるといいんだけど性能的にすこし難しいようなので、とりあえずはデスクトップでやる。

事前確認

事前といってももう注文しちゃったけど、Mixed Reality ポータルを起動するとWindows MRを動かすのに必要なスペックを満たしているかどうか、チェックしてくれる。

デスクトップの方はGTX1060があるので大丈夫なはずだったが・・・ドライバがちょっと古いとNGになる模様。ドライバ更新したら起動できるようになった。とりあえずシミュレーションのセットアップを実行。

平面ディスプレイ内にMRポータルが表示できた。

あとはUnityとかかな。