今回は、トランプのカードをモデリングしてみたいと思います。
カード自体の形状としては、直方体をベースとして4隅を丸くしたらおしまいです。ただし、世の中に流通するトランプカードのサイズには、大きく2種のサイズがあるそうです。
「約」が付いているのは、元々の規格が単位インチで決まっているのでしょう。レイトレーシングデータの記述では、世界的に主流であるポーカサイズを使い、mm単位でモデリングしてあります。
// constants
var CW=63; // トランプのサイズ[mm]
var CH=89;
var CD=0.3; // 厚さ[mm]
var CR=5; // 角の丸み半径[mm]
形状は決定しました。だかしかし、トランプのモデリングで障害となるのは、両面のマッピングデータ準備であろうと思われるので、以下、マッピングデータの生成について考案して行きます。
まず、表面です。表面は、1(エース、A)から13(キング、K)までの13枚×マークが4種類(クラブ,ハート,ダイヤ,スペード)と、ジョーカ1枚の、計53種類をデザインしてください。
普通のトランプは、ジャック,クイーン,キングの絵札と、ジョーカには、それぞれを表す絵が描かれています。それ以外の数字カードには、数字と同じ数のマークがデザインされているのが一般的です。
まず、この53種類の図柄を用意するのが大変な作業となります。
今回は、マッピングデータのサイズをケチって小さなサイズに抑えること、スクリプトを使って自動生成すること、を目的として、簡略化したデザインにしてしまいました。
凝りたい方は、最後にリンクするスクリプトをご自身で改造するなり、以下に説明するマッピングデータの仕様に従ったマッピングデータをご自身で用意してください。
以下図は、スクリプト(card_front.olv)で自動生成した表面のマッピングデータ例です。
以下にマッピングデータの仕様をまとめておきます。ご自身で作成する場合の、ご参考にしてください。
マッピングデータ仕様
続いて裏面です。裏面の模様は幾何学的なデザインになっていることが多いみたいですね。作者には、そう言うデザインのセンスは無いので、裏面には「迷路描画アルゴリズム(以下参照)」を使って、迷路を描画してみました。遠目で見ると、それらしき模様になったと思います。
迷路描画アルゴリズム:
正確なアルゴリズムはスクリプト(card_back.olv)で直接ご確認ください。
※なお、スクリプト(card_back.olv)は再帰呼び出しを使っているため、迷路が複雑になってくるとスタック領域が不足して、異常終了する場合があります。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | card_poker.xitr |
2) | マッピングデータ(表) | card_front_full.xpic |
3) | マッピングデータ(裏) | card_back_maze.xpic |
4) | マッピングデータ生成スクリプト(表) | card_front.olv |
5) |
マッピングデータ生成スクリプト(裏) 種画像データ |
card_back.olv |
card_back.xpic |
1)でレイトレーシングを実行します。2)3)は、マッピングデータです。ご自身で用意しても良いですし、それぞれ、4)5)のスクリプトで生成できるので、スクリプトを改造するなどして生成しても良いです。
※スクリプトはOlive+の拡張子(.olv)ですが、Xi-TRACEからでも読み込んで実行できます。
完成した動画を以下にリンクしておきます。
勝つには勝ったけど、折角の最強ロイヤルストレートフラッシュも、相手がブタ(役無し)では宝の持ち腐れですね……、って言う、オチでした。こういう運の使い方は、したくないものですよね。