This site hosted by Free.ProHosting.com
Google
DXF形式のデータをUVマッピングされたOBJ形式のデータに変換する方法

操作性抜群のShadeシリーズと,
機能性抜群のPoserシリーズを好んで使用している方へ
(別にShadeシリーズに限ったことではないですが...)

題して
iShade(myShade)およびその他のShadeシリーズの形状データを
Poserのフィギュアのパーツとして利用し,かつ,
テクスチャマッピングをきちんとする方法

もう少し,汎用的に,かつ,専門用語で書くと,
DXF形式のデータを
UV Mapping情報の含まれたWavefront OBJ形式のデータに変換し,
そのUV Mappingのmapテンプレートを作る方法
mapとはバンプ(凸凹)マップやテクスチャ(模様)マップなどです.


用意する物
 Shadeシリーズ(必須:もしくはDXF形式に出力するアプリケーション)
 Poserシリーズ(必須:当然だね)
 UVMapper(必須:フリーウエアです,この執筆のときの最新版はver.0.21)
 Painter 3D(あれば便利)


はじめに

ここで紹介する方法はMacOS版を基本に書いていますが,
MacOSでもWindowsでも全く同じアプリケーション環境が存在するので,
共通に言えることだと思います.
違いと言えば,以下の文章でMacOS版では".PICT"がWindows版".BMP"の違いでしょう.
(Windows版は使ってないので,間違っていれば,どなたか教えて下さい.)


まえがき

Shadeで作ったデータをPoserで使おうとしたとき,
パーツとして配置することまでは修得したけど,
テクスチャを張る方法がわからないといった経験をしている人,または,経験した人が
この文書を読んでいると思います.
#私もそんな1人で,Poserを買って3週間もいろいろ試行錯誤した結果,
#この方法を見つけ,忘れない内に書いてます.f^_^;
#Ray Dream Studioを使えば簡単にできるのかなぁ...(注文したのがまだ届かないのです)

以下に書いた内容は,
Poser付属のマニュアルやネットに置かれているアドバンスマニュアル,
Poser3人体作戦の本には書かれていません.と思います.

DXF形式のデータにはUV情報は含まれていないために,
Poserでは,読むことができても,
UVマッピングしかサポートしていないので,
そのパーツにはうまくテクスチャマップを張ることができません.
強引に張ることはできますが,ほとんど,感ですね(笑)

UVマップとは,あるオブジェクトの表面を紙面と考えたときに,
その紙面上での座標で表された地図の事です.
その地図を平面に拡げたとき,その平面上での点(x,y)が,
オブジェクトの表面の点(U,V)に対応しています.

では,そのUVマップをどうすれば作れるかと,先ず,考えるのが普通ですよね.
Painter 3Dでは
UVマッピング(ソフト内では陰関数マッピングの名前になっています)する
機能があるが,DXF形式では,陰関数マッピングができません.
Poserで,UV情報の持っているフィギュア等のOBJファイル出力されたものには
Painter 3Dで陰関数マッピングができますが,
Poserで,UV情報の持っているフィギュア等にUV情報を持ってないパーツを
配置するまたは組み込みこんだものをOBJファイル出力されたものには,
UV情報が変になっているみたいで,陰関数マッピングができません.
#Poserがきちんと再計算してくれば,なんの問題も無いんですよね

結局は,正しくUVマッピングされたOBJファイルが必要であることが
結論づけられます.

そこで,登場するのが,UVMapperという,
フリーウエアのアプリケーションです.
はっきり言ってこのソフトを知らなかったら一生解決できなかっただろうなぁ.

では,実際の手順をわかりやすく紹介します.ほとんど,マウス操作だけで出来ちゃいます.
以下の1,2,3,4のステップを順に踏みます.


1.DXF形式出力されたデータを用意する
 Shadeの場合
  変換したいオブジェクトを選択し,
  メニュー[ファイル][エクスポート][DXF]を選ぶ.
  最初のダイアログで,
   対象となるオブジェクトや
   細かさを指定(あまり細かいとデータが巨大になりますよ)
  次に出てくるプロパティダイアログで,
   3DFACE のみをチェックして,他はチェックを外す(重要)
  ファイル名を仮に,"file.DXF"とします.

2.DXF形式出力されたデータをOBJ形式に変換する
 Poserを起動し,
 メニュー[フィギュア][フィギュア削除]で
 デフォルトのフィギュアを削除して,フィギュアなし状態にする.
 メニュー[ファイル][ファイル読み込み][DXF...]を選び,
 "file.DXF"を読み込む.
 読み込み設定ダイアログでは,大きさは適当に決めて下さい.
 (参考までに,顔なら15%くらいかな.)
 そのオブジェクトを選択し,
 メニュー[ファイル][ファイル書き込み][Wavefront OBJ...]を選び,
 書き込み設定ダイアログでは,
 "別パーツを別々のオブジェクトとして書き出す"はチェックしない.
 そして保存する.(仮に,"file.obj"とします.)

3.UV情報のないOBJ形式をUV情報のあるOBJ形式に変換する
 UVMapperを起動し,
 メニュー[File][Open]を選び,
 "file.obj"を読み込む.
 テクスチャーマップの種類を メニュー[Map] から選ぶ.
 [Planar]   (平面上に投影したマッピング法)
 [Cylindrical] (円柱表面上に投影したマッピング法)
 [Spherical]  (球面上に投影したマッピング法)
 メニューを選んだ後のダイアログにおいて
  alignment はどの方向から投影するか
  orientaion(Planarの時のみ) はどちらの方向に並べるか
 です.他のオプションは特に指定する必要はないかな...たぶん.
 このようにいろんなマッピングの仕方がありますが,
 自分が強調したい,もしくは細部まで表現したいところが,
 広がっているマップを選ぶようにすればいいと思います.
 中には,形状が複雑だとマップが重なってしまう
 (たとえば,人体なら,顔と足などが重なってしまう)のも
 あるので,最適なものを選ぶと良いでしょう.

 最適なものを選んだなら,
 メニュー[File][Export Texture Map]を選び,
 UVマッピング用のテクスチャーマップを保存する.
 (仮に,"file.obj_uv.PICT"とします.Windowsなら.BMPかな?)
 メニュー[File][Export Model]を選び,
 オブジェクトを保存する.(仮に,"file.obj_uv.obj"とします.)
 このとき選んだマッピング法によって計算されたUV情報のついたOBJ形式として
 保存されます.

4.マッピングが正常に行われたどうかをチェックする
 ○Poserでチェックする
  メニュー[ファイル][ファイル読み込み][Wavefront OBJ...]を選び,
  "file.obj_uv.obj"を読み込む.
  メニュー[レンダリング][表面処理...]を選び,
  表面処理ダイアログで,
   オブジェクトは先ほど読み込んだ"file.obj_uv.obj"を選び,
   テクスチャマップは,[読み込み...]を押し,"file.obj_uv.PICT"を読み込む.
   オブジェクトカラーは白を選び,
  OKを押す.
  メニュー[レンダリング][レンダリング...]を選ぶと,
  レンダリングが開始されます.
  すると,オブジェクトにマッピングパターン(編み目模様)が
  綺麗にマッピングされているはずです.
  もし,そうでなければ,3.に戻って,マッピングの方法を変えて,
  やり直してみて下さい.

 ○Painter3Dでチェックする
  メニュー[ファイル][入力用プラグ][Wavefront OBJ...]を選び,
  "file.obj_uv.obj"を読み込む
  メニュー[マップ][読み込み][テクスチャ...]を選び,
  テクスチャマップの適用ダイアログで,
   イメージを開く...をチェック
   マッピングモードは陰関数を選ぶ
  OKを押し,
  "file.obj_uv.PICT"を読み込む
  すると,オブジェクトにマッピングパターン(編み目模様)が
  綺麗にマッピングされているはずです.
  もし,そうでなければ,3.に戻って,マッピングの方法を変えて,
  やり直してみて下さい.

これで,DXF形式ファイルを
UV情報のついたOBJ形式に変換でき,
かつ,それ用のテクスチャマップのテンプレートが出来ました.
後は,
Painter3DやPhotoShop等のペイントアプリケーションで
テクスチャマップテンプレートに色付けすれば,
テクスチャマップの出来上がりです.
Painter3Dなら,立体に直接ペイントしながらペイントできます.

もちろん,テクスチャマップのテンプレートはバンプマップのテンプレートでもあります.

もし,間違いや,ここをこうすればいいんじゃないというのがあれば,
私宛にメールくだされば,幸いです