DWs since 1996
Top About OnlineStore Products Gallery Blog Xtra Links Contact US Secret
TopXtraMaking > 車の制作:VRML

あなたのパソコン、インターネット専用マシンになってませんか?
せっかく買ったパソコンですから、お絵かきでもいかが?

第一章 車の制作

第五部 VRML

softimage Softimage|3Dテキストエディタを使用して車のVRMLを制作します

vrml


データのコンバート

六角大王からSoftimage|3Dへデータをコンバートします。
中級編と同様に、六角大王からDXFでExportします。

 ファイル→DXF形式(3D)で出力 ...

Softimage|3DにDXFをImportします。
Importにはいくつかの方法があります。

 1) DXFを直接Import
 2) dxf2softでSoftimageシーンに変換
 3) 他の3DアプリでWavefront(.obj)に変換してImport
おすすめ

それでは、一つずつ簡単に解説しましょう。


1) DXFを直接Import (3.7SP1以降)

 Tools→Import→Objects→dxfImport +

で、直接Import出来るのですが、Ver.3.7SP1以降にしか対応してません。
オプション設定項目が分かりづらいのが難点です。
基本的にdxf2softをGUI化しただけのモノらしいので、2)と同様の結果になると思います。
コマンド入力が苦手な人はこちらがおすすめです。

2) dxf2softでSoftimageシーンに変換

コマンド入力により、DXFをSoftimageシーンにコンバートする方法です。

 dxf2soft [Option] DXF_input_file [SOFTIMAGE_output_file]

コンバートできたら
 Get→Scene...
で、普通に読み込めますが、コマンド入力が苦手な人には辛いでしょう。

3) 他の3DアプリでWavefront(.obj)に変換してImport おすすめ

Lightwave3Dなどを使って、一度Wavefrontファイルにコンバートする方法です。

Lightwave3DのModelerでDXFファイルを開き(直接開けます)、
 Tools→Custum→Translator3D_Export
で、Wavefront(.obj)でExportします。

このWavefrontファイルをSoftimage|3DでImportします。

 Tools→Import→Objects→Wavefront...

分かりづらいオプション設定がないので、楽ちんです。
Lightwave3Dで作ったモデルをSoftimage|3Dにもっていきたいときにも、Wavefront(.obj)ファイル経由にすると良いでしょう。


Fig.1-1は、Import後にModelモードへ移り、全体表示にしてPerspective Viewを少し回転してみた状態です。
うまくImport出来ましたか?

1
Fig.1-1

次はポリゴンを綺麗に編集し直します


ポリゴンの編集

DXF経由のモデルは、全て三角形ポリゴンになっています。
リアルタイム系のCGなので、ポリゴン数を減らしていきましょう。

車は左右対称なので、どちらか半分の状態にして編集していきます。
Front Viewで、左半分のポリゴンを選択します。(Fig.1-2)

 Model→Polygon→Select by Rectangle

2
Fig.1-2

選択したポリゴンを消去します。(Fig.1-3)

 ポリゴン・モードに変更(F12)
 Model→Delete→Selection

3
Fig.1-3

Perspective Viewで見てみると、三角ポリゴンになっているのが良く分かります。(Fig.1-4)

それではポリゴンを減らしていきましょう。
形状は崩したくないので、なるべく手動で減らしていきます。

まずは、おおざっぱに

 Model→Effect→Cleanup

を試してみましょう。
上手くいけば、かなり綺麗になったはずです。
形が崩れなければ、何度か繰り返してみましょう。

4
Fig.1-4

次に、細かなところを手動で減らしていきます。

 Model→Poligon→Edge

で、中ボタンでラインを結び、右ボタンでラインを消去します。

見た目にもスッキリしたポリゴンになりました。(Fig.1-5)

5
Fig.1-5

ここまでは、一つのオブジェクトで作業してきました。
これを色ごとに別々のオブジェクトに分割していきます。
窓を例に説明していきましょう。

まずは、オブジェクトを複製します。

 Duplicate→Immediate

窓の部分のポリゴンを選択します。(Fig.1-6)

 Poligon→Select by Raycasting

左クリックで選択、中クリックで選択解除、右クリックでトグルです。

6
Fig.1-6

ポリゴンの選択状態を反転します。(Fig.1-7)

 Model→Polygon→Select by Rectangle

右ボタンでオブジェクト全体を囲むようにドラッグします。

7
Fig.1-7

ポリゴン・モードで選択されているポリゴンを削除します。

窓の部分のポリゴンだけが残りました。(Fig.1-8)

この作業を、色の数だけ繰り返します。
また、テクスチャを貼るオブジェクトも分割しておきます。
テクスチャが貼られる部分だけ、独立したオブジェクトにしておきます。

8
Fig.1-8

分割したら、ワイヤーフレームに色を付けておくと作業がし易くなります。

 

この辺で一息入れましょう。
次はマテリアル設定とマッピングです!

9
Fig.1-9


マテリアル設定とマッピング

それでは、マテリアルの設定をしていきましょう。

オブジェクトを選択し、Material Editorを開きます。(Fig.1-10)

 Matter→Material

設定する項目は、以下の3つで十分でしょう。

 ・Specular
 ・Diffuse
 ・Transparency

テクスチャを貼るオブジェクトは、真白に設定します。
でないと、テクスチャと下の色がブレンドされてしまいます。

10
Fig.1-10
マテリアル設定が終わったらSHADE Viewにして見てみましょう。
だいぶ完成型が見えてきました。(Fig.1-11)
11
Fig.1-11

次に、同じ色でも以下のような場合はオブジェクトを分割しておきましょう。

 ・スムージング角度の違うモノ
 ・独立したアニメーションを付けたいモノ

それでは、テクスチャを貼っていきましょう。

今回用意したテクスチャは、下記のモノです。(Fig.1-12~16)
これらは実際にVRMLで使用しているモノです。
最終的に使用するモノと同じサイズのpicを用意して下さい。
左右対称のモノは、容量を抑えるために、できるだけ半分にします。


Fig.1-12


Fig.1-13


Fig.1-14


Fig.1-15


Fig.1-16

まずは、左右対称のオブジェクトのみを設定します。
今回のファイルでは、ヘッドライトとテールランプになります。

2D Textureを設定します。

 Matter→Texture→2D Local

テクスチャとMapping Methodを指定して下さい。
テクスチャは一つのオブジェクトには一枚しか貼れません。

テクスチャの設定が完了したら、Mapping MethodをUV Coordinatesに変換します。

 Matter→Txt Oper→Info UV Coord.(2D Local)

UV texture coordinates editorが開きます。そのままOkして下さい。
これで、UV Mappingに変換されました。

これを、左右対称のオブジェクト全てに行います。

ここまで出来たら、反対側を作りましょう。
全てのオブジェクトをMulti Modeで選択し、

 Model→Effect→Symmetry

で、どの面に対して反転させるかを選択しOkします。

やっと車の形に戻りました。(Fig.1-17)

17
Fig.1-17

次に、左右対になっているオブジェクト毎にMulti Modeで選択し、Mergeします。

 Model→Effect→Merge

Mergeできたら、半身のオブジェクトは削除してしまいましょう。

ナンバープレートやウィンカなどの小物を作りましょう。
どの様に作っても構いませんが、ポリゴン数はなるべく少なく!
Scale,Rotation,Translationを変えたらFreezeしておきます。

 Model→Effect→Freeze→Transformations

最後に左右にまたがるオブジェクトのテクスチャを貼ります。
手順は半身のオブジェクトと同様です。(Fig.1-18)

カメラと照明の設定もしておきましょう。
Perspective Viewの見え方がそのままVRMLに反映されます。

 

さぁ、次はいよいよVRMLに変換します!

18
Fig.1-18

VRMLコンバート

まずは、Softimage|3DからVRMLでExportします。

 Tools→Export→Objects→VRMLExport+(vrml+)

保存場所、ファイル名を指定してOkします。
3.7SP1以降のVRMLExport+では、書き出すファイルをプレビューできます。
3.7以前のバージョンではvrml+を使用します。
どちらもテクスチャのリピートには対応していません。

実は、Softimage|3DからExportされるVRMLはVer.1.0のみです。(1999.7現在)
このままでもブラウザのプラグインが自動的にVer.2.0に変換して表示してくれるのですが、上級編ということなのでVer.2.0に変換してしまいましょう。

Windows版Cosmo Player2.0以降についてくる、vrml1to2.exeを使用します。

コマンドプロンンプトを起動し、

 vrml1to2 Input_file(1.0 File) [output_file(2.0 File)]

とするだけです。vrml1to2とだけ入力すると、ヘルプが出てきます。

コンバートはこれでおしまいです

次はテキストエディタでVRMLを見栄え良く編集します!


VRMLの編集

メモ帳などのテキストエディタを使用して、VRMLを編集します。
まず1行目を見てみると、

#VRML V2.0 utf8

と書いてあります。
これはVRML2.0のヘッダにあたる部分です。

次に、下記のような行があります。

# This file is converted using vrml1to2 version 1.6
# This converter is based on Final VRML2.0 - August 4, 1996.
# This converter is provided by Sony.

この行はコメント文なので必要ありません。全て削除しちゃいましょう。

本文の編集に入る前に、

NavigationInfo { type "EXAMINE" }

と書いて見てみましょう。
ナビゲーションスタイルが変わったと思います。
デフォルトでは、重力のある地面上での歩行モード(WALK)ですが、検査モード(EXAMINE)に変更しました。
オブジェクトの形状を確認したい場合は、このモードが良いでしょう。

次に背景色を設定します。
以下の文を追加してみて下さい。

Background {
 skyColor [
  0 0 1
  1 1 1
  0 1 0
 ]
 skyAngle [1.57, 3.14]
}

簡単な空と地面が出来たと思います。
skyColorの[ ]内の数字は、RGBの値を0~1で示しています。
0~1は、16進にすると00~FFにあたります。

VRMLはWebでの配信がメインになると思うので、本分をなるべく小さくしていきましょう。

Transform {
 translation XXX YYY ZZZ
 rotation xxx yyy zzz ***
 children [

といった、全く同じ行が何度も出てきていると思います。
これは、Perspective Viewで見ていた状態にするために、オブジェクトに回転と移動を付けてしまっているのです。
ひょっとしたら、地平線と車のパースがずれているかもしれませんが、原因はこれだったのです。

全ての

 translation XXX YYY ZZZ
 rotation xxx yyy zzz ***

を消去してみて下さい。パースが一致するはずです。
この文は、オブジェクトの数だけ出てくるので、置換を使うと便利です。

次に、行数を大幅に削除する方法を伝授しましょう。

normal Normal {
 vector [
  * * *,
   :
  * * *
 ]
}
normalIndex [
 0,-1
  :
 **,-1
]
solid FALSE
creaseAngle 0.5

といった、やたら長~い行があります。
normalですから、その名の通り法線情報の設定です。
この長~い行は、creaseAngleのたった1行で置き換えられるのです。

normal Normal {
 vector [
  * * *,
   :
  * * *
 ]
}
normalIndex [
 0,-1
  :
 **,-1
]

は削除してしまい、creaseAngleの数値を変えてみます。
creaseAngleスムージンク角度の設定で、数値は角度を表していますが、単位がラジアンなので注意して下さい。(例:90度=約1.57ラジアン)
この文もオブジェクト毎に書いてあるので、それぞれスムージング角度を変えてみて下さい。

ちなみにsolid FALSEはポリゴンの裏面も描画する設定で、TRUEなら片面ポリゴンになります。

この他にも、ノードのインスタンス化(DEF,USE)を用いると、文を纏められるばかりでなく、修正も容易になります。

例として、車のボディ色の設定にインスタンス化を使ってみましょう。
以下のような色の設定があります。

appearance Appearance {
 material Material {
  ambientIntensity ***
  diffuseColor RRR GGG BBB
  specularColor rrr ggg bbb
  shininess xxx
 }
}

同じ色を使っているオブジェクトは、この中の数値が全て同じです。
そこで、最初に出てくるモノを

appearance DEF Body_Color Appearance {
 material Material {
  ambientIntensity ***
  diffuseColor RRR GGG BBB
  specularColor rrr ggg bbb
  shininess xxx
 }
}

と、変更します。
ノード名のBody_Colorはユーザー定義の任意の文字列です。
すると、2回目以降は

appearance USE Body_Color

の1行だけでappearanceの内容を参照してくれます。
ノード名は大文字と小文字を区別するので注意が必要です。

内容を参照するということは、DEF Body_Color内の数値を変えるだけで、USE Body_Colorを使っている全てのオブジェクト色が、一発で変更できるのです。

テクスチャについての補足

テクスチャをアルファマスクで抜きたい場合は、透明GIFを使わなければなりません。
しかし、Softimage|3DからExportされるテクスチャは、全てJPEGです。

ならば、テクスチャをすり替えてしまえ!

ExportされたJPEGと同サイズの透明GIFを作成し、テキストエディタで

 xxx.jpg → xxx.gif

といった具合に、全てを置換してやれば完了です。

長々と書いてしまいましたが、参考になりましたでしょうか?

次のページに今回制作したサンプルがあります
再生にはCosmo PlayerなどのPlug-inが必要です


サンプル


第六部へ

 
-----
(代表:高松勝範)〒350-0219 埼玉県坂戸市片柳2221-6 TEL&FAX:049-289-9188
All Rights Reserved Copyright ©1996-, Digital Wackys.