Xi-TRACEで色々なハートマークを作ってみます。
Xi-TRACEで使用可能なプリミティブ(基本形状)として、二次曲面、メタボール、ポリゴンの3つがあります。それぞれのハートマークを作成して、それぞれのプリミティブの特徴や使い勝手などを見てみます。
二次曲面がどういう感じのものか?論理演算を組み合わせて複雑な物体を定義していくサンプルについては、「論理演算のいじめパタン」というページで紹介していますので、ご覧ください。
さて、二次曲面を組み合わせてハートマークを作成するイメージはこんな感じ(↓)です。
球体の下に円柱面をくっつけて、上図左側の物体を作っておきます。それを45°程度回転させて左右対称に配置して、余分な部分を真ん中で切り捨てます(上図右側)。
ハートマークと言えばそうですが……、なんだか、お尻みたいになりました(1^^;)。
メタボールは、制御が難しいんです。なかなか思い通りの絵になりません。試行錯誤して、ようやく出来上がったハートマークは、以下の様なイメージです。
水色と青の円が並んでいます。水色の円と青の円は、常に同心円になっています。水色の範囲がメタボールの定義域(メタボールの「濃度」が影響を与える範囲)で、青の範囲はそのメタボールが単体で存在した時に、可視化される範囲です。
つまり、ただの球面であれば、青色の部分の輪郭が可視化されるのですが、メタボールですので、水色の範囲の「濃度」が加算されて、あらかじめ定められた閾値を超えると、その部分が可視化されてなめらかにつながります。個々のメタボールの色を変えてみたりすると分かりますが、溶けて混ざり合って一体化する感覚です。
完成画像がこちら(↓)です。
遠目にはまあまあな出来栄えなんですが、よく見ると、だいぶ筋肉質なんですね……。もう少し柔らかく(濃度を小さく)して、なめらかにつなげる方がメタボールらしいのですが、柔らかくすると思わぬところがくっついて、変形して、形を制御するのが難しくなります。この絵が精一杯でした。
なんと、以下の方程式を満たす点の集合は、ハートマークっぽく見えるらしいです。
誰が見出したのやら……、スゴイです。これって、最大六次の方程式なのかな?x、y、zの二次式で表現される二次曲面では到底表現できない形状ですが、方程式がわかっているので、ポリゴンで表現することは可能です。
タイトルが「ポリゴンで作る」ですので、本来は作らないといけないのですが、今回は作りません(作れません、まだ)。x、y、zの関係式からポリゴンデータを生成する機能は、Xi-TRACEの新機能(目下デバッグ中)なのですが、まだリリース可能な域に達していません。今回の所は、デバッグ中の新機能を使って、上で示した数式からポリゴンを生成して、OBJファイル(Wavefront社のポリゴンデータフォーマット)を生成しましたので、そのOBJファイルをXi-TRACEて取り込んでレンダリングします。
数式からポリゴンを生成する新機能については、近く提供したいと考えています。
ここでバグ発覚……m(__)m。オヤオヤ。何か?と言うと、wobj命令で取り込んだOBJファイル内のポリゴンデータですが、取り込んだ以上、Xi-TRACEの強力な一次変換を掛けて大きさを変えたり、回転させたり、平行移動したりしたいわけですが、なんと、一次変換がかかっていませんでした……。酷い。
改定して、ダウンロードコーナにupしておきましたので、最新版のXi-TRACEをGetしてください。
ご覧いただいたとおり、それぞれ異なるハートマークができました。形だけで判定すると、数式から起こしたポリゴンハートに軍配が上がるでしょうか?
ただ、出来上がったハートマークを透明な物体にしてみると、ちょっと事情が変わってきます。
二次曲面とメタボールのハートマークは屈折することによって、向こう側に見える景色が歪んで見えるのですが、ポリゴンのハートマークは、歪まず、そのまま向こう側が透けて見えています。二次曲面とメタボールがソリッドモデル(中身の詰まった側とそうでない側が存在する)なのに対して、ポリゴンはサーフェイスモデル(ポリゴンを厚さ0の薄い板として扱う)なので、こんな風になります。
ちなみに色が違って見えますが、左の2つは屈折によって空(ピンク色)が見えているのに対して、屈折しなかった右端(ポリゴン)はハートマークその物の色(赤)になっています。色の違いは本質的ではないので、透明な物体の向こうに見える景色の歪み方(光の屈折)に着目してください。
物体の形を作るには、小回りも利くし、便利なモデリングソフトウェアなども出回っていて、使いやすいポリゴンですが、透明な物体を表現しようとすると、だいぶ厳しいようです。
メタボールは、慣れれば良い道具になるのかもしれませんが、制御が難しくて、思い通りの形を作りにくいです。
二次曲面はある種決まった形の足し算・引き算で形作るので、単調になりやすいし、二次曲面の元の形から離れた形状は表現しにくいという欠点があります。
まあ、身の回り、透明な物体で屈折を表現すべきモチーフって、そう多くは無いので、基本的にポリゴンを使って造形したら良いのかもしれませんが……。
完成したデータと動画です。
二次曲面、メタボール、ポリゴンで作成したハートマークを回転させながら、材質を「艶消し→ガラス→鏡→艶消し→…」と変化させています。
まずは、二次曲面のハートマーク。
Xi-TRACEデータ:heart_quad.xitr
次はメタボールのハートマーク。
Xi-TRACEデータ:heart_meta.xitr
最後にポリゴンのハートマーク。
Xi-TRACEデータ:heart_poly.xitr
Xi-TRACEデータ:heart_poly.obj
OBJファイルは、.xitrファイルと同じディレクトリにおいてください。Xi-TRACEで読み込んで使用する他、対応するモデリングソフトウェアでも読み込み可能なはずです。.
#PS:地面のパタンとして、千鳥模様を作画してみました。