steam.jpg


湯気を表現する

 今回は湯気をモデリングしてみようと思います。

湯気のモデリング

 以下のテーマで作成した炎のモデリングを応用します。

  「炎を表現する」: flame.jpg

  「蝋燭の炎」: candle_flame.jpg

 従って、今回も、物理法則に従った湯気のエミュレーションではなく、「何となくそれらしく見える」簡略化したモデルで表現します。

  「炎」を応用した「湯気」のモデリング:

 上のモデリングに基づいて、粒子の座標を計算したところ、以下の様になりました。



 最後にリンクするデータ4)で作成した動画です(データ先頭付近の「save_avi=true」)。
 ゆらゆらと湯気っぽくなりました。2D版では黒い背景に溶け込んで消えるよう、白からだんだん黒くなるように描画しましたが、レイトレーシングする時は透明度を制御して、だんだん透明になって消えて行くような効果とします。

ティーカップのモデリング

 湯気のある風景として、お茶の時間をイメージしてみました。ティーカップセットに紅茶を注いで、そこから立ち上る湯気を表現してみようと思います。

 レイトレーシングでティーカップとティーソーサ(受け皿)をモデリングしなくてはならなかったのですが、二次曲面を用いたレイトレーシングで、ティーカップやティーソーサの微妙な曲面や、ティーカップがティーソーサにすっぽり収まるようにする窪み等をモデリングするのはかなり難しい作業だったので、久しぶりに六角大王Superを使ってみることにしました。

 ふと見れば、「六角大王Super」は2020年6月5日で販売が終了してしまった様です。

 残念。

 安価で軽くて使い易いソフトウェアだったのですが……。

 作者は、株式会社終作時代の「六角大王Super 5.5」パッケージ(CD-ROM)を所有しているので、引っ張り出してきてWindows 10にインストールしました。
 拙作X-TRACE(現Xi-TRACE)と六角大王Super 5.5はコラボしていたので、六角大王Superで作成した3DモデルをXi-TRACEのデータファイルとしてエクスポートすることが出来ます。よもやよもや、です。

 終作さんがエクスポートプログラムを頑張ってくれたおかげで、何と、マッピングデータなどまで含めてエクスポートされるので、最後の最後まで六角大王Superでモデリングしておいて、レンダリングだけXi-TRACEに持ち込むことが出来ました。

 今回のティーカップセットは、断面の形状を折れ線で描画しておいて、回転体を自動生成する機能で作りました。金縁の模様はマッピングではなくて、その様な模様になる様に折れ線の頂点を作成しておいて、そこだけ面の色を変えて表現しました。
 取っ手の部分は折れ線からパイプを生成する機能を使いました。

 などと宣伝してみたところで、販売終了になってしまっては、もう今から入手する手段はありませぬ……(1;_:)。
 フリーウェア版「六角大王」はありますが、だいぶ機能的には劣ってしまいます。

ポリゴンデータの取り込み

 Xi-TRACEには、様々なモデリングソフトウェアで作成したポリゴンデータを取り込む機能が搭載されています。

  Xi-TRACEが取り込みに対応しているポリゴンデータ形式:

 二次曲面と違って、ポリゴンだと自由にモデリング可能なので、色々なモデリングソフトウェアからの出力を受け入れられるようになっています。
 この時、意外と面倒なのが、「スケールを合わせる」ことです。

 あるモデリングソフトウェアで作ったコップは、座標値で1,000程度の大きさなのに、他のモデリングソフトウェアで作ったスプーンは10程度の大きさ、なんてことが起きるからです。
 大きさ1,000のコップの隣に大きさ10のスプーンを置いても、小さくて見えません。

 大きさなんて、拡大・縮小すれば済むことなので、大した問題ではないのですが、それを前提とすると今度は、取り込んだポリゴンデータのサイズ感をどうやって知るか?が課題となります。そんな時、Xi-TRACEには便利な機能があります。

  unit;
  boundary autopoly
  {
    tea_cup;
  }
  message "# # # # # #",
    autopoly.range.X1,
    autopoly.range.X2,
    autopoly.range.Y1,
    autopoly.range.Y2,
    autopoly.range.Z1,
    autopoly.range.Z2;
  // 一次変換を無効(unit)にして、上のmessageを実行した結果:
  // -47.2529 47.7894 -49.9091 -11.2227 123.078 218.121
  //  …… tea_cupを構成するポリゴンの境界体積座標範囲。


 上のコードを実行すると、「boundary autopoly」ブロック{〜}の中で定義されたポリゴンの座標範囲が、「autopory.range.*」と言う変数に設定されています。
 これによって、取り込んだポリゴンデータがどのような座標範囲の、どのような大きさで定義されているか?を知ることが出来るのです。

 それが判ったら、一次変換命令(para命令やsim命令等)を使って、所望のサイズ、角度、位置に移動して使えば良いだけです。

 ちなみに、「boundary autopoly」の機能としては、ブロック{〜}内で定義されたポリゴンデータをすっぽり内包することのできる直方体で境界体積を定義します。演算を高速化するための命令ですので、そのままモデルに残してしまってOKです。
 サイズ感を知るために追加したunit命令とmessage命令だけコメントして、無効化してください。


完成データ

 完成したデータをリンクしておきます。

1) Xi-TRACEデータ steam.xitr
2) Xi-TRACEポリゴンデータ steam_tea_cup.zip
3) マッピングデータ flame_wood.jpg
4) 座標計算用スクリプト steam_2d.xitr

 1)〜3)で、湯気をモデリングしたレイトレーシングを実行します。1)の実行には、4)で生成した座標ファイルが必要となりますので、先に4)を実行して、座標ファイルを生成しておく必要があります。2)は六角大王Super 5.5で出力したポリゴンデータですので、解凍してお使いください。2)は1)から読み込んで使用しています。3)はマッピングデータで、こちらも1)から読み込んで使います。

 完成した動画を以下にリンクしておきます。



 さすがに、淹れた紅茶から立ち上るには多すぎる湯気でしたかね……?まあ、今回の主役は「湯気」なので、主役に花を持たせてあげてください。紅茶で一服しようとしている主は左利きみたいです。


home

download

gallery