3DプリンタでMMDデータを出力する - その3.1
概要
これまでの手順では、輪郭形状の抽出のみに注目し、テクスチャマッピングのことは考えていませんでした。
Replicator 2Xは二色印刷機ですので、カラー情報があってもしょうがなかったというのがその理由です。
ところで、フルカラー3Dプリンタの普及もそう遠いことではないでしょう。
そうすればテクスチャマッピングの移送方法も重要になってきます。
そこで今回、テクスチャマッピング付きのソリッドデータを作る手順のコンセプト検証を行いました。
ただし、これもまた超絶力技ですので、あまり期待しないで下さい。
用意するもの
- ハードウェア
-
用意できませんでした
- ソフトウェア
-
以下のソフトウェアをそれぞれダウンロードしてインストールします。
この文書では、それぞれ表記のバージョンで作業しましたが、最新版で問題ないと思います。
- テストケース
-
- 開口部を塞いだ後のPMDまたはPMXモデルデータ
- そのモデルの外皮の抽出まで行ったSTLデータ
手順
1. 形状データの準備
1-1. メニューの[File] → [Import] → [MikuMikuDance Modle(.pmd/.pmx)]から、PMDデータをインポートします。
1-2. PMDデータを開いたら、右のDisplayパネルの[Textured Solid]にチェックを入れます。
これで、テクスチャマッピングが適用された状態でモデルが表示されるようになります。
1-3. [File] → [Import] → [Stl (.stl)]から、そのモデルの外皮の抽出まで行ったSTLデータをインポートします。
この形状は、元のモデル形状をぴったり包んだ形状ですので、元のモデルは見えなくなります。
1-4. Decimate前のデータであれば、[Add Modifier]からDecimateモディファイアを追加し、Ratioを0.05ぐらいにして[Apply]します。
目安として、頂点数を数万程度に落とせばOKです。
2. テクスチャイメージの作成とUV展開
2-1. 外皮モデルを選択した状態で、EditModeに切り替えます。
そして、画面の下の方のパネルを少し引き出して下さい。
左下のアイコンをクリックして、このパネルをUV/Image Editorに切り替えます。
2-2. UV/Image Editorに切り替えたら、メニューバーの[New]を押して下さい。
New imageダイアログが表示されます。
以下の設定で[OK]を押して、イメージを作成して下さい。
- Name: 任意の識別名を入力
- Width: 4096
- Height: 4096
- 32bit float: チェックしない
- その他の項目は任意
2-3. UV/Image Editorにイメージが作成されます。
そうすれば、上のパネルのメニューから[Mesh] → [UV Unwrap...] → [Smart UV Project]を選択して下さい。
2-4. Smart UV Projectダイアログが表示されますので、標準の設定のまま[OK]を押して下さい。
この処理は、PCの性能にも拠りますが、数十秒から数十分かかります。
フリーズしたようになるかもしれませんが、あわてずに待って下さい。
2-5. 処理が終わると、UV展開の結果がUV/Image Editorに表示されます。
2-6. UV/Image Editorの表示ははホイール回転で拡大/縮小できます。
UV展開の結果を確認したら、ObjectModeに戻ります。
3. 逆テクスチャマッピング
3-1. ObjectModeに戻ったら、Outlinerパネルで、元の形状データの項目(▽マークの項目)を1回クリックして選択します。
それから、Shiftを押しながら外皮形状データの項目を1回クリックして、複選択状態にします。
この順序が重要です。
3-2. Renderパネルの一番下のBakeパネルを開いて下さい。
パラメータを、以下の通り設定します。
- Bake Mode: Textures
- Bake to Vertex Color: チェックしない
- Clear: チェックする
- Margin: 2
- Selected to Active: チェックする
- Distance: 1.0
- Bias: 0.001
設定したら、[Bake]を押して下さい。
3-3. テクスチャの焼き込みが始まります。
上のステータスバーに進捗状況が表示され、UV/Image Editorにはリアルタイムで結果が描き込まれます。
エラーがでた場合は、イメージの作成を忘れているかもしれません。
進捗が進まない場合は、UV展開に不具合がある可能性が高いです。
3-5. 顔の部分のクロースアップです。
ヘッドフォンの文字などはきれいに映っていますが、境界部分にはエイリアスがあります。
3-6. Viewport Shadingを[Texture]にすると、シェーディングを変えて確認することができます。
何となく、塗りの作り込みがあまい感じです。
肌色と白色の混合で顔の部分がざらざらしていますが、これは元のデータで、白いポリゴンと肌色のポリゴンが二重になってごく近くに存在しているためです。
3-7. 上着からふともものあたりのクロースアップです。
ネクタイや上着の陰影グラデーション、ステッチなどは意外と綺麗に投影されています。
一方、スカートの柄や腰飾りは模様が無くなってしまっています。
また、折り返しの境界部分はエイリアスだらけです。
これは、スカートの部分も複数のポリゴンが折り重なった特殊な構成になっていることと、厚みの無いポリゴンから折り返しの部分にうまくテクスチャが投影されないことが原因です。
きれいにテクスチャを転写するには、転写元データと転写先データのすりあわせが必要でしょう。
元データの方では、ポリゴンを整理して複雑な折り重なり状態をなくします。
また、少し厚みをつけた方がよいかもしれません。
転写先の方では、UV展開を手作業で行えば、もう少しよい結果が得られそうです。
その上で、エイリアスがでれば、レタッチして修正する必要があるかもしれません。
転写元と転写先が正しく用意されているという前提があれば、アルゴリズムでエレガントに解決する方法もありそうです。
フルカラーの3Dプリンタが普及するまで、もう少し猶予がありそうですので、今回はこれ以上深入りしません。
2013/7/14 初版
不明な点があれば章節番号添えて
@junnnoへ。または感想や応用情報など、手を叩いてよろこびます
nanos gigantum humeris insidentes.