月曜日, 5月 25, 2009

DXF形式のデータをUVマッピングされたOBJ形式のデータに変換する方法

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

以下参照させていただいた。
消えると困るので引用コピーさせていただいた。

http://ge999.info/faustshade/HowToTransFromDXFtoOBJ.html

DXF形式のデータをUV Mapping情報の含まれたWavefront OBJ形式のデータに変換し,そのUV Mappingのmapテンプレートを作る方法


用意する物 Shadeシリーズ(必須:もしくはDXF形式に出力するアプリケーション) Poserシリーズ(必須:当然だね) UVMapper(必須:フリーウエアです,この執筆のときの最新版はver.0.21) Painter 3D(あれば便利)はじめにここで紹介する方法はMacOS版を基本に書いていますが,MacOSでもWindowsでも全く同じアプリケーション環境が存在するので,共通に言えることだと思います.違いと言えば,以下の文章でMacOS版では".PICT"がWindows版".BMP"の違いでしょう.


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なら,立体に直接ペイントしながらペイントできます.もちろん,テクスチャマップのテンプレートはバンプマップのテンプレートでもあります.

1 件のコメント:

匿名 さんのコメント...

чем вредны электронные сигареты - бекхэм курение