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

テクスチャ

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

木の樹皮のシリンダー
木の樹皮のシリンダー

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

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

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

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

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

2D グラフィック

2D ゲームでは、 Sprites はオブジェクトの形とおおよそ同じ平坦なメッシュに使われるテクスチャです。

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

2D ゲーム内のオブジェクトはアニメーションフレームを表現するため、もしくはキャラクターのいろいろなステータスを再現するために、関連性のあるグラフィックイメージのセットを要求するでしょう。これらのグラフィックイメージのセットのデザインに使用でき、効率的なレンダリングを可能にするスペシャルテクニックがあります。詳細はマニュアルページの スプライトエディター を参照してください。

GUI

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

パーティクル

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

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

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

Terrain ハイトマップ

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

terrain は地面の領域内の各ポイントにおいて、ベースラインからの高さを描画するためのメッシュになります。terrain に使う heightmap は、各ピクセルと地面の座標が一致している画像のグレースケール値を等間隔な高さのサンプルとして格納します。数値は画像としてシーンに表示されませんが、terrain メッシュを生成するために使用される座標へ変換されます。

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

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

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