今年のゼミ生が研究で2次元描画から3次元モデルを生成してそのモデルをUnityに読み込んでウォークスルーするアプリを開発しています。Unityでモデル読み込みとくればFBXかなと思って調べたらと助言していましたが、バイナリエディタとか経験がないようで手が動かない様子でした。
私も実装経験がなかったので支援まで調べたメモを彼に送りつつ、せっかく調べたことなのでここに置いておこうと思って書いています。メモです。
以下、学生さんにSlackでDMしたものをそのまま貼り付けました。
ちょっと調べてみました。
Unityが対応しているファイルフォーマットは.fbx、.dae (Collada)、.3DS、.dxf、.obj、.skp なんだそうです。ドキュメントにかかれていました。
これらのデータ形式のうち最もシンプルな形式はなにかChatGPTに聞くとOBJ形式とのことでした。聞いてみてください。利用しない手はないですね。真実かはわかりませんが参考になります。
さらに、OBJ形式をFBXに変換する方法を尋ねると、一番よいのは外部サービスを利用する手らしいです。
ここまで材料が揃うと最短で結果を得るには何をすればよいかわかってきます(ということを考えて欲しいということです、ずるく考えてください、結果を得る道は一本だけではありません、ゴールに最短で行く方法を探索して考えるのです)。
p5jsでOBJ形式のデータを出力したのちに、ダウンロードしたファイルを外部サービスで変換すればよさそうです。外部サービスにはいろいろあるようですが手軽なものはWebサービスです。例えばこんなのがあるようです。
あとはp5jsでOBJ形式のデータをどう生み出すか?です。そのコードも一から書かなくても参考になるものはあるはずです。ChatGPTに聞いてみましたがどうも違いました。結果が最初にChatGPTに聞いたものとはずいぶんと簡略化されていました。このコードを直す手もありますが、面倒なので、もっと調べてみますと、灯台下暗しです。
p5jsにOBJ形式を出力する機能があるようでした。
このサンプルを動かして、上記のサービスでFBXに変換して、Unityに読み込ませるとちゃんと表示されました。
あとは、p5jsで2次元のデータを何かユーザが変換ボタンを押したら3次元データにして、その3次元データさえ得られればこのサンプルのコードでOBJファイルがダウンロードできるはずです。
まだまだやらなければならないことはあると思いますが、とりあえず一本の道筋が見えていると思います。あとはやるだけです。頑張ってください👍️