🍰

プロンプトを表示せずにPixyzからUnity Reflectにエクスポートする

2023/02/01に公開

はじめに

PixyzはCADやBIMモデルをリアルタイム3D(Unity)で扱うためにジオメトリ情報からMeshを作成するツールです。
2023年2月時点では、Unityのプラグインとして利用するPixyz Plugin、スタンドアロンのPixyz Studio、バッチ処理を目的としたPixyz Scenario Processorがあります。

このPixyz製品で作成したMeshを持つ3DデータをUnity Editorに取り込んで表現に利用することができますが、Pixyz StudioとPixyz Scenario ProcessorではUnity Reflectという製品に直接エクスポートをする機能(API)も用意されています。

直接エクスポート時に必ず表示されるウインドウ

Pixyz Studioの画面機能を使って"Export Scene To Reflect"を実行するとUnity Reflectに保存する際の名称(Source Name)、ユニークなID(Uid)などの情報をパラメータに設定してExecuteを行います。

次にどのロケーション(LocalまたはCloud)の、どのProjectにExportするかを選択します。

Pixyz StudioでGUIを使って操作する場合は保存先をプロンプトで指定する事は問題ではありませんが、PixyzのAPIを使ってPythonでデータ加工からエクスポートまでの処理を組んでいる場合、毎回このプロンプトを指定することが煩雑に感じる場合があります。

実は、Unity ReflectのExport先はconfigファイルを作成しておくことでプロンプトでの指定を回避することができますので、この記事ではその方法についてをまとめます。

プロンプトを表示しないHeadless mode

Pixyz Studioのオンラインドキュメントによると、このプロンプトを表示しないエクスポートはHeadless modeと呼ばれており、GitHubリポジトリからダウンロードしたCSコードをビルドして作成したConfigFileCreator.exeを使って作成するconfigファイルを利用することで実現できます。
https://github.com/Unity-Technologies/reflect.publisher.csharp

Configファイル作成の流れ

  1. GigHubからreflect.publisher.csharpのCodeをダウンロードします。
  2. ダウンロードしたzipを解凍し、Visual StudioなどでSamples.slnを開きます。
  3. Visual Studioのメニュー "ビルド > ソリューションのビルド" を実行します。
  1. ビルドが完了するとreflect.publisher.csharp-master\ConfigFileCreator\bin下のDebug フォルダ下にConfigFileCreator.exeが作成されます。
  2. コマンドプロンプトを起動しConfigFileCreator.exeのあるパスに移動します。
     ※コマンド実行時にConfigFileCreator.exeのパスを指定する様でしたら移動は不要です。
  3. コマンドプロンプトで ConfigFileCreator.exe ○○.config を実行します。
     ※○○は任意のファイル名に置き換えて実行します。
  4. 本来ならPixyzからUnity ReflectにExportする際に表示されるプロンプトがこのタイミングで表示されるので、エクスポート先のプロジェクトを選択してExportを実行します。
  5. もし新規のプロジェクトをExport先にする場合は+New ProjectからNameとOrganizationを指定してCreateしたうえでそのプロジェクトを選んでExportを実行します。
  6. Export後にコマンドプロンプトのカレントディレクトリに○○.configが作成されます。

Headless modeでUnity Reflectにエクスポートする

PixyzのAPIリファレンスに記載のあるio.exportSceneToReflect()をPixyz StudioのScriptingウインドウから実行してHeadless modeでExportを行います。
io.exportSceneToReflect(0,"MyName","uid01",True,"C:/ConfigFileCreator/bin/Debug/auto.config",True)

同functionは6つのパラメーターをとりますのでAPIリファレンスを確認し、必要なパラメーターを指定してください。
特に注意するべきパラメーターは第三のuidと第五のconfigFileです。
uidはProject内のユニークIDになるので同じIDを利用することで既存のエクスポート済みソースを上書きすることができます。
configFileはHeadless modeを利用するために作成しておいた○○.configを指定します。

さいごに

Pixyz製品は自動処理はPixyz Scenario Processor、手動作業はPixyz Studioの構成になっているのでPixyz StudioでScriptingによるExportを実行した場合には最後の段階でCaptchaによる情報入力が求められます。
それでも利用者に毎回Export先のプロジェクトを選択してもらう手間や、それによるヒューマンエラーの発生のリスクを減らすことができますのでHeadless modeは非常に便利な機能だと思います。

Discussion