3Dモデルをいろいろ作ってみたい

3Dモデルをいろいろ作ろうとがんばっています。苦労した点、役に立ちそうな情報を発信していきます。

3DモデルのViewerに機能を追加してみた

前回作成した3DモデルViewerにモデルデータのセーブの機能を追加しました。

f:id:ichidaya:20220220210448j:plain

セーブ機能つきのViewer画面

 

大きな変更点は読み込んだ3Dモデルの間でメッシュ<=>ボクセル の相互変換をできるようにして、ボクセルに変換したデータをvox形式で読み書きできるようにしたことです。メッシュ(サーフェス)からボクセルの変換はIM-NETで処理するデータを作成するのに必須の処理です。なんですが、今まで使っていたBinVoxはコマンドラインベースのツールで勝手にウィンドウを開いて処理状況を表示したりするので他のツールと組み合わせて使うのがやりにくい。vedoにもライブラリがあったのですがどうもうまく動いてくれなかったので今回はいちから実装しました。ボクセルからメッシュへの変換はVedoのライブラリの機能(おそらくMarching Cubeアルゴリズム)を利用しました。

vox形式というのはボクセルデータを扱う3DモデリングツールMagicaVoxelのファイル形式です。githubでvox形式の読み書きを行うPythonのコードを見つけて利用させていただきました(MagicaVoxelの最新版には対応してないのがちょっと残念ですが)。

f:id:ichidaya:20220221204238j:plain

MagicaVoxel画面

IM-NETで生成した3DモデルをVox形式で出力しMagicaVoxelで編集、それをIM-NETの学習に利用して新たな3Dモデルを生成する、といったワークフローを目論んでいます。

というわけで、次の目標はこのViewerにIM-NETのモデル生成機能を組み込むことになります。