パスコンパスの日記

何か色々作るのが好きです

【VR&3Dプリンタ①】Oculus QuestのTilt Brushから現実にスケッチを召喚する方法

 先日、ずっと欲しいと思っていたOculus Questを買いました。スタンドアロンで動くVRゴーグルです。買うきっかけとなった経緯からご説明します。

目次

経緯

 先日NT名古屋というイベントに参加してきました。その際に木製の粉を混ぜた3Dプリンタのフィラメントを作って販売されている方がいらっしゃいました*1

f:id:yoichi_41:20190923123031j:plain

圧倒的木質感を出せる 木粉高充填PPフィラメント W418

 こちらの方は「ブログにレビューを書けばフィラメントをプレゼント」というキャンペーンをされています。イベント後、すぐに応募していたのですが、私の作るものはメカ機構の様な無機的なものが多いため「木製である面白みに欠けるのではないか」と少し悩んでいました。できれば木彫りの熊の様な彫刻チックなものを出力してみたいのです。
そんなことを考えていたら、ピッタリの記事に出会いました。nomolk (id:slideglide)さんの記事です。

nomolk.hatenablog.com

 Oculus Rift SというVRゴーグルでOculus Mediumというアプリを使って、空中に絵をかいてデータを変換して3Dプリンタに実際に出力されています。これを使って木彫り風の熊を作ってみたいと思い、購入に至りました。
 実はよく調べずにOculus Questでも同じことができるだろうと思って買ったのですが、思わぬ問題がいくつかあったのでそれを乗り越えてVRのオブジェクトを現実に召喚する方法をご紹介します。

  • Oculus QuestにはOculus Mediumが存在しない問題*2
    →今回は代わりにgoogleのTilt Brushというアプリを使うことにしました。だいたい2000円位です。

  • Tilt Brushで直接3Dプリンタで出力できる形式で出力できない問題*3
    →今回はこれをどうやったら3Dプリンタへ出力可能な形式に変換できるのか調べるところから始めました。

変換方法

 色々と試行錯誤していたら以下の2種類の手順で成功しました。

やり方①(有線接続必要)

  1. (Oculus Quest)Tilt BrushでExport

  2. (Oculus Quest)USBケーブルでPCと接続、Oculus Quest側から承認*4

  3. (PC)Tilt Brushフォルダ内のglb1ファイルをPCに保存

  4. (PC)Unityから「Tilt Brush Unity SDK」を使ってglb1ファイルを読み込む

  5. (PC)Unityから「Scene OBJ Exporter」を使ってobj形式で出力*5

  6. (PC)fusion360でobj形式のファイルをstl形式にして保存*6

  7. 3Dプリント

やり方②(有線接続不要)

  1. (Oculus Quest)Tilt Brushでgoogle polyにアップロード

  2. (PC)Unityから「poly toolkit」を使ってデータをassetに追加

  3. (PC)Unityから「Scene OBJ Exporter」を使ってobj形式で出力

  4. (PC)fusion360でobj形式のファイルをstl形式にして保存

  5. 3Dプリント

 Unityも今回初めて触ったので色々と新鮮でした。やっていて困ったところ等を残します。USBケーブル接続不要なのでやり方②がおすすめです。

準備

共通

  • 「Unity」のインストール
     Unityはどちらの手順でも必要です。私はノートPCですが、今のところ変換する程度の利用であれば問題なく動いています。

unity3d.com

  • 「Scene OBJ Exporter」の追加
     また、どちらも「Scene OBJ Exporter」というUnityのAssetというものを利用しています。こちらは3Dモデルをobj形式で出力するために利用します。以下のページからDLボタンを押し、Unity上のAsset storeからimportを押すと使えます。

assetstore.unity.com

  • Fusion360
     Fusion360にはobjデータをアップロード後、以下の場所からstl形式でデータを出力できます。私の3Dプリンタのスライスソフトではobj形式でエラーを吐いていたため、stl形式にしたところ、うまくいきました。そのため、こちらはobj形式がダメな時に試していただければ良いかと思います。
    手順「ツール」→「メイク」→「3Dプリント」→「3Dユーティリティに送信のチェックボックス」を外す→モデルを選択して「OK」

f:id:yoichi_41:20191006025635p:plain

やり方①

  • 「Tilt Brush Unity SDK」の追加
     やり方①では以下の記事を参考に「Tilt Brush Unity SDK」を入れました。fbxという形式ではなくglb1でしたが問題なく読み込めました。

qiita.com

やり方②

  • 「poly toolkit」の追加
     Unityに上記assetを追加します。polyは3Dモデルの無料のライブラリで、自分でデータをアップロードしたり他の方のデータをDLしたりできます*7。こちらはUnityのAsset store内で検索してimportするのが楽だと思います。googleアカウントは必要です。 developers.google.com

いくつかハマりどころがあったので残します。

  • 「File」→「Build Settings」→「Player Settings」→「Other Settings」内の項「Configuration」内の「Allow 'unsafe' code」にチェックを入れないとエラーが発生する

  • PlatformがPCでないとエラーが発生するかもしれない*8

  • APIキーを入れ忘れると上手くいかない

  • polyからデータを取ってくると「poly」→「Assets」内に配置可能なデータが出力される

まとめ

 今回は変換の手順やハマりどころ等を中心に書かせていただきました。次回はいよいよ木のフィラメントを使ってVR空間で立体的にスケッチした木彫風熊を召喚してみたいと思います。
 読んでくださり、ありがとうございます。

f:id:yoichi_41:20191006033851p:plain

*1:NT名古屋の記事はこちらです

yoichi-41.hatenablog.com

*2:Oculusという名前がついているのでてっきりDLできるものだと思っていたのですが、Oculus QuestのストアにはOculus Mediumがありませんでした。どうやらPC接続を前提としたスペックのソフトの様で、スタンドアロンのOculus Questには対応していない様です。今後Oculus LinkというPC接続のケーブルとシステムがリリース予定とのことで、それが発売されればできる様になるかもしれません。

*3:Tilt BrushにはExportという項目があるのですが、拡張子は選択できず、stl形式やobj形式ではなくglb1形式という(私には)あまり馴染みのない形式で出力されました。

*4:私は最初、質の悪いUSBケーブルを使ってしまいOculus QusestとPCの接続が不安定になってしまいました。それが原因かわかりませんが、一度ゴーグル内の画面がつかなくなり初期化をする羽目になりました。細かいところですが、同じ悲しみを味合わないためにご注意ください。

*5:「File」→「Export」→「Wavefront OBJ」から出力できます。

*6:こちらは不要な場合もあるかもしれません。

*7:ただライセンスがあるため他の方のデータを使う際には名前表記等ご注意ください。

*8:Oculus Quest用のプロジェクト(android向け)上で実行した際にエラーが出ました