3DモデルのViewerに機能を追加してみた
前回作成した3DモデルViewerにモデルデータのセーブの機能を追加しました。
大きな変更点は読み込んだ3Dモデルの間でメッシュ<=>ボクセル の相互変換をできるようにして、ボクセルに変換したデータをvox形式で読み書きできるようにしたことです。メッシュ(サーフェス)からボクセルの変換はIM-NETで処理するデータを作成するのに必須の処理です。なんですが、今まで使っていたBinVoxはコマンドラインベースのツールで勝手にウィンドウを開いて処理状況を表示したりするので他のツールと組み合わせて使うのがやりにくい。vedoにもライブラリがあったのですがどうもうまく動いてくれなかったので今回はいちから実装しました。ボクセルからメッシュへの変換はVedoのライブラリの機能(おそらくMarching Cubeアルゴリズム)を利用しました。
vox形式というのはボクセルデータを扱う3DモデリングツールMagicaVoxelのファイル形式です。githubでvox形式の読み書きを行うPythonのコードを見つけて利用させていただきました(MagicaVoxelの最新版には対応してないのがちょっと残念ですが)。
IM-NETで生成した3DモデルをVox形式で出力しMagicaVoxelで編集、それをIM-NETの学習に利用して新たな3Dモデルを生成する、といったワークフローを目論んでいます。
というわけで、次の目標はこのViewerにIM-NETのモデル生成機能を組み込むことになります。