2022/05/21

fSpy Loader for Unity 2020.3+

fSpy という1枚の写真に数本のガイドラインを引いただけで3Dカメラキャリブレーションができるという秀逸なものがあり、Blender用のインポータプラグインがあるのですが、探してもUnity版が見当たらなかったので、EditorWindow版スクリプト書いてみました。

fSpyアプリからエキスポートしたJSONファイルを読んで、選択したシーンのカメラに反映させるシンプルなものです。
2020.3.26f1で作ったのでそれ以降だったら動くと思います。

Gist: https://gist.github.com/hiroshi-nishiura/294b24834e84e8ffdf69bd9fa612d339

JSON内にUnityのJsonUtilityでは扱えない配列とかがあるので、Json読むために Newtonsoft.Jsonを使用するので、PackageManager左上の+ボタンから、「Add package from git URL...」でcom.unity.nuget.newtonsoft-jsonを追加してインストールする必要があります。

fSpyはBlender向け(Z-up)として作られているらしく、Unityの座標系と相性が良くありませんが、FloorまたはWallに対する何種類かの軸モードに対応してUnity用に変換します。
Blender版を試したことがないので本来の動作じゃないかもしれませんが、自分だったらこういう結果になって欲しいという作りにしました。