
本稿は作成ソフト不明のCADファイルを、Unity経由でVR空間(バーチャルキャスト)に取り込んだ際の記録です。過去に作成されたCADファイルを使ってVR空間を作る機会はこれから増えますので、この記録がいつか誰かのお役に立てば幸いです。
(なお、取り込み作業終了後にAutoCADで作成されたCADデータだということが判明しました)

ある日ZIPファイルが送られてきて、「これ建物のCADデータなんですけど、バーチャルキャストに取り込めますか?」と聞かれる事が、あなたの身の上にも起こるかもしれません。筆者には起こりました。中身を確認すると、stp形式とpkg形式で保存されたデータと、CADソフトをキャプチャしたと思われる画像が入っていました。作成したソフトを問い合わせましたが、返事がありません。


同梱されていたキャプチャ画像で「あるべき姿」は確認できるので、元ファイルを作成したソフトの追求は諦めて、stp形式のファイルをUnityに放り込んでみることにします。stp形式のファイルをUnityに取り込むツールはいくつか存在しますが、今回もPixyz Plugin for Unityを使用します。
https://www.pixyz-software.com/plugin/
Pixyz Plugin for Unityは1週間の無料版がありますので短期決戦でケリを付けるか、諦めて有償版を購入しましょう。

UnityにPixyz Pluginのパッケージをインストールすると、メニューに「Pixyz」が追加されるので、「Import Model」を選択し、送られてきたstpファイルを選択します。

インポート時の設定画面で主に設定する項目は以下の3つです。
・Scale: 取り込みスケールです。今回は1/1000を指定することでUnityにリアルスケールでインポートできました。
・Hierarchy: 後でデータを微調整するので、Fullを指定し、元データのオブジェクトごとにインポートされるようにします。
・Override Shader: 今回はバーチャルキャストで使用する予定なので、バーチャルキャストでライティングが有効になるStandardを指定しています。

なぜか縦向きでインポートされましたが、何とか読み込めました。屋根を非表示にすると、同梱されていたキャプチャ映像と同じ構造物が確認できます。ここからはUnity上で、建物の向きを調整したり、屋根などの不要な部分を削除したり、1階部分と2階部分を分離したり、映っていてはマズイ筐体を削除したりなどの調整を行います(詳しい操作方法の解説は割愛します)。
なお、今回一番時間がかかったのがZファイティングの修正でした。今回インポートしたCADデータでは同じ平面座標上に2つのオブジェクトが配置されている箇所が多数あり、Unity上でズームイン/アウトするとチラツキが発生しますが、この事象をZファイティングと呼びます。このチラツキはVR空間(バーチャルキャスト)内でも発生し、VRのHMD越しに見ると大変気になる為、視界に入ってしまうZファイティングを1つ1つ修正します。具体的には片方のオブジェクトの座標を少しだけずらしていきます。

見た目の調整が終わったら、後は使用するVRサービスに合わせてデータサイズなどを調整していきます。今回はGLB形式でエクスポートしてSeed Onlineにアップロードしますが、インポート時にヒエラルキーの設定を「Full」にしている場合、階層構造が多すぎたり深すぎたりするため、Pixyzのメニューから「Merge」を選択して統合します。
また、Seed Onlineには100MB以上のサイズがあるGLB背景をアップロードできないため、エクスポートしたGLBファイルのサイズが100MB以上ある場合は不要な構造物を削除したり、「Decimate」メニューで軽量化しましょう。
UnityからのGLB形式の出力方法はバーチャルキャストの公式Wikiを参照下さい。
https://virtualcast.jp/wiki/doku.php?id=glb:make

上記のスクリーンショットは120MBのGLBファイルをSEED ONLINEにアップロードしようとした際のエラーです。「バリデートに失敗しました」という不親切なメッセージが表示されますが、右下にヒントが書かれています。

SEED Onlineに軽量化後のGLBファイルをアップロードした様子です。新ビューアーでは正しく表示されないので、旧ビューアを使用して確認しましょう。
今回取り込んだCADデータをバーチャルキャスト内で使用した様子はこちらです。1:11:45ごろからです。
以上になります。CADデータをVR空間内で実寸大で確認できるソフトウェアやサービスは既に様々なものがありますので、CADデータがお手元にある方は一度チャレンジしてみましょう!