『RigidChips』のLandを作成する方法

『RigidChips』のLandとは

『RigidChips』におけるLandとは、Chipsが動くための舞台となる地形です。Landとして読み込まれたポリゴンモデルは、『RigidChips』上でポリゴンに接触判定を与えられて機能します。

『RigidChips』では、「Direct3D Retained Mode」形式のデータをLandとして読み込みます。Landを自作するには、「Direct3D Retained Mode」形式のデータを造形および出力するためのソフトウェアが別途必要になります。

「Direct3D Retained Mode」を出力できる『MetasequoiaLE』という3Dモデリングソフトが無料で入手および使用できます。このソフトウェアを使わせてもらいましょう。

ポリゴンモデルの概念を理解しよう

Landを作成するには、まずポリゴンモデルの概念について知っておくとよいでしょう。ポリゴンデータは、X軸、Y軸、Z軸、という3軸から成ります。丈、幅、奥行といったところです。

ポリゴンモデルは、ポリゴン、すなわち三角形の集まりです。『MetasequoiaLE』においては、「三角」がポリゴンです。四角形である「面」は、ポリゴンを2つ繋げたものです。そのため、「面」の数がすなわちポリゴン数というわけではありませんので注意しましょう。

「面」には大きな落とし穴があります。それは、「面」を構成する4つの座標のうち、水平にならない座標が1つでもあると、山か谷が出来ることです。すなわち、「面」が「三角形」を2つ繋げたものでしかないことが顕わになります。「面」がどの方向に分割されるかは、『MetasequoiaLE』によって自動的に決まります。なるべく「三角形」で構成して、意図しない山や谷が出来ないようにしましょう。メニューの「選択部処理」にある「四角形面を三角化」を活用して、実際のポリゴンの状態を把握しやすくしましょう。

「Direct3D Retained Mode」としての出力

「Direct3D Retained Mode」として出力するには、「ファイルに名前をつけて保存」でファイルの種類として「Direct3D Retained Mode」を選び、ファイル名を決定した上で、「Xオプション」カラムの「法線(スムージング)」「UVマッピング」、「座標軸」カラムの「左右を反転する」、それぞれにチェックを入れて保存しましょう。「サイズ」は、拡大率0.0100×2桁にすると良いでしょう。ここでいう桁とは、ずらす桁の数です。例えば、拡大率0.0100×2桁は、拡大率1.0×0桁と同じ意味です。つまり拡大しないことになります。

拡大率0.0100×2桁(あるいは拡大率1.0×0桁)とした場合、『MetasequoiaLE』上の1が『RigidChips』上の1となります。『RigidChips』上での1は、1メートルとして扱われます。

『RigidChips』上での留意点

Chipsの初期位置は0地点

『RigidChips』では、Landを読み込んだり、Chipsの位置と姿勢をリセットした際に、X軸とZ軸の0地点かつY軸で最も高い位置にCoreChipを基準にして、Chip3枚分上方からChipsが登場します。もしX軸とZ軸の0地点かつY軸上にポリゴンが無ければ、0地点からChip3枚分上方よりChipsが登場します。

厚みの無いポリゴンモデルを作らない

表裏にポリゴンがある状態の、いわゆる厚みの無いポリゴンモデルは、描画がちらついたり、衝突したChipを吸着します。『RigidChips』のバージョンによっては、ポリゴンの裏面から衝突したとみなされて、衝突したChipsが崩壊することもあります。厚みの無いポリゴンモデルは作成しないようにしましょう。

『MetasequoiaLE』上で張ったポリゴンには、『RigidChips』上でその裏面に半透明のポリゴンが追加されます。同じ座標を共有するポリゴンの裏面にポリゴンがあっても追加されます。そのため厚みの無いポリゴンモデルは、描画がちらついてしまいます。また、表裏にポリゴンがあることで、衝突した際にChipがその表裏のポリゴンに挟まれる格好となるため、吸着してしまい、身動きが取れなくなります。

ポリゴンを対に密接させない

厚みの無いポリゴンモデルも同様ですが、例えば立方体のポリゴンモデルをコピーして隙間なく配置するなど、異なるポリゴンが同じ座標を共有し表裏一体となる部分が出来ると、その周囲には透明の壁が出来てしまいます。場合によっては、ポリゴンに当たり判定がなくなってしまうこともあります。ポリゴンが対に密接しないように留意しましょう。

この問題を回避するには、ポリゴンが同じ座標を共有して表裏一体とならないよう、ポリゴンモデルの間隔を0.1以上(拡大率1.0時)空けたり、隠れて見えない不要なポリゴンを削除したりしましょう。

地上を少し浮かせる

『RigidChips』でLandとして読み込まれたポリゴンモデルには、必ず水面が追加されます。水面の位置は、『RigidChips』上でY軸の-0.45地点です。もしY軸の0地点に水平なポリゴンを配置した場合、水面との距離が非常に近いため、ちらつきが生じます。

ポリゴン同士の重なり合いによる描画のちらつきは、正確な描画を行うためのZバッファという仕組みが要因となって発生します。これを回避するためには、重なり合うポリゴン同士の距離を離すしかありません。水面の位置は変更できませんから、水面の近くに水平なポリゴンを配置しないようにしましょう。

離す距離は、『RigidChips』上で5メートル以上離れていれば問題ないでしょう。すなわち、『MetasequoiaLE』上では、拡大率0.0100×2桁(拡大率1.0000×0桁)のとき、Y軸の5地点です。

霧とクリッピングについて

『RigidChips』では、コンピュータにおける即時的な3D表示の例に漏れず、視点から遠い部分のポリゴンが表示されない仕組みになっています。これをクリッピングといいます。また、それを目立たせないために、霧が掛かっています。クリッピングされるのは、視点から600メートル(座標で600)先の地点です。

巨大なポリゴンでは、そのポリゴンの中心部分へ視点を移すに従い、遠方でないにも関わらずポリゴンに霧が掛かってしまいます。これを回避するためには、巨大なポリゴンにならないよう、ポリゴンを分割する必要があります。

使用ポリゴン数について

ポリゴンモデルを構成するポリゴン(三角形)の数が多くなるほど、『RigidChips』上で読み込む際に時間が掛かります。例えば『RigidChips』に同梱されている「Land3.x」は48787ポリゴンあり、同梱されている他のポリゴンデータ「Land1.x」「Land2.x」「Land4.x」と比べて、読み込みに時間が掛かります。

また、クリッピング領域内に大量のポリゴンが表示される状態では、描画に時間が掛かります。つまり秒間コマ数(Frame Par Second)が少ない状態になります。画像の描画処理能力の低いコンピュータにとって、これは致命的な問題です。ポリゴンが過密にならないようにしましょう。

テクスチャについて

『MetasequoiaLE』上では、ポリゴンにテクスチャを貼ることが出来ます。ただし、『RigidChips』上で表示されるテクスチャは、『MetasequoiaLE』上での表示よりも、かなりぼやけた印象になります。また、配布する際には、テクスチャとして使用した画像のファイルも同時に配布する必要があります。画像ファイルは、低容量で綺麗なPNGを用いると良いでしょう。

テクスチャの貼り方によっては、描画速度に大きな影響が出ます。小さな画像の繰り返しなど、結果的に貼られるピクセルの密度が増えるに従い、描画に時間が掛かります。草や砂といった繰り返し系のテクスチャは、拡大して用いたほうが良いでしょう。そうすれば、処理の負荷だけでなく画面のざらつき感も減らせます。