マテリアル、シェーダー、テクスチャ
マテリアルの作成と使用

テクスチャ

通常、メッシュジオメトリはオブジェクトの大雑把な形状を示しているのみで、細部の描写のほとんどは テクスチャ によって表されます。テクスチャとは一般的なビットマップ画像で、メッシュの表面に張られています。例えるならば、テクスチャ画像とはゴムのシート上に印刷された物で、メッシュのおおよその位置に引き伸ばされ、ピン付けされた状態だと言えます。テクスチャの位置はメッシュの作成に使用した 3D モデリングソフトで指定されます。

木の樹皮の円柱
木の樹皮の円柱

Unity は一般的な画像ファイルからテクスチャをインポートすることができます。

3D モデルで使用するテクスチャ

テクスチャは マテリアルを通してオブジェクトに適用されます。マテリアルは シェーダー と呼ばれるグラフィック用の特別なプログラムを使用して、メッシュ表面にテクスチャを描画します。シェーダーには、周囲の様々な影響を受ける物体表面の光沢や凹凸などをシミュレートするための、ライティングとカラーリングの効果を実装する事ができます。また、一度に 2 枚以上のテクスチャを使用し、組み合わせることでさらなる柔軟性を持たせることができます。

テクスチャを作成するときは、2 の累乗にあたる長さとすべきです(例えば 32x32、64x64、128x128、256x256、等)。プロジェクトの Assets フォルダーに配置するだけで十分で、それによりプロジェクトビューに表示されます。

インポートされたテクスチャはマテリアル に割り当てることができます。マテリアルは次にメッシュや パーティクルシステム 、または GUI テクスチャ などに適用することができます。 インポート設定 では、ゲームでの使用方法に応じて キューブマップ法線マップ などに設定する事もできます。テクスチャインポートの詳細については、テクスチャコンポーネント を参照してください。

2D グラフィック

2D ゲームでは、 スプライト は、オブジェクトの形に似せた平らなメッシュに適用されるテクスチャを使って実装されます。

3D 視点のスプライト
3D 視点のスプライト

2D ゲーム内のオブジェクトには、アニメーションフレームを表現するため、またはキャラクターのいろいろな状態を表現するために、関連性のあるグラフィックイメージのセットが必要です。これらのグラフィックイメージのセットを作成し、効率的にレンダリングすることを可能にする特別な技術があります。詳細は スプライトエディター を参照してください。

GUI

ゲームの graphic user interface (GUI) は、ゲームシーンに直接は使用されません。しかし、プレイヤーが選択を行ったり情報を見るためにあります。例えば、スコアの表示やオプションメニューが一般的な GUI の例です。これらのグラフィックスはメッシュサーフェスの詳細を設定するものとは明らかに違いますが、標準的な Unity のテクスチャを使用して処理されます。Unity の GUI システムについての詳細は、マニュアルの Immediate Mode GUI (IMGUI) のチャプターを参照してください。

パーティクル

メッシュは立体のオブジェクトを表すのには理想的ですが、魔法に使われるような炎、煙、閃光などの表現にはあまり向いていません。このタイプのエフェクトをより良く表現するには パーティクルシステム が適しています。パーティクル とは基本的に煙雲のように形が固まっていない、ガス状の小さな 2D グラフィックの集合体です。多くのパーティクルを同時に生成、その動きを設定、任意でランダムなバリエーションを追加することで利便性の高いエフェクトを生成できます。例えば、爆発を表現するには炎のテクスチャを持つパーティクルを中心点から高速で外側に送り出します。滝はシーンの高いところから水のパーティクルを下方向へ加速させることで表現できます。

星のパーティクルシステム
星のパーティクルシステム

Unity のパーティクルシステムは多くの種類の流動的なエフェクトを作るために豊富なオプションを持っています。詳細は パーティクルシステム の項目を参照してください。

Terrain のハイトマップ

テクスチャは、直接的には画像が表示されないようなケースに用いられることもあります。グレースケール画像の各ピクセルの数値は、単に画像内のポイントとグレイの陰影を対応させた数です (0..1 範囲内の値で、0 が黒で 1 が白です)。各ピクセルの数値は他の用途にも使用できます。Terrain のハイトマップ はまさにこれを使って作成されます。

Terrain は領域内の各ポイントで、ベースラインから特定の高さを描画するためのメッシュです。Terrain の ハイトマップ は、各ピクセルと地面のグリッド座標が対応する画像のグレースケール値を、等間隔な高さのサンプルとして格納します。数値は画像としてシーンに表示されませんが、Terrain メッシュを生成するために使用される座標へ変換されます。

興味深いことに、ハイトマップは画像として直接表示されることがないにもかかわらず、良く使用される画像処理技術で、高さのデータを用いるのに有用です。例えば、ハイトマップにノイズを加えることで岩場の印象を作成し、滲ませることでよりソフトな景観を作成します。

Unity の Terrain についての詳細は、マニュアルの Terrain Engineを参照してください。

マテリアル、シェーダー、テクスチャ
マテリアルの作成と使用