Skybox

Last-modified: 2022-04-13 (水) 00:53:32

Skybox

スカイボックスでは空が作れます。
また、スカイボックスは2種類あり1つのマップにつきどちらか片方しか使えません。

2Dスカイボックス

2dsky.jpg
2Dスカイボックスではシンプルな空が作れます。
まず、空にしたい部分にSkyboxテクスチャを貼ります。
そしてメニューのMap→Map Propertiesをクリックし
「Skybox Texture Name」のところに使用したいスカイボックスの名前を入力してください。

スカイボックスの名前は Sky List を参考にしてください。

3Dスカイボックス

3dsky.jpg
3Dスカイボックスでは、よりリアルな空または風景を作ることができます。
まずは2Dスカイボックスと同じく使用したいスカイボックスを設定してください。

3dsky2.jpg
次にマップ内に画像のような小さな“風景”を作ってください。
そして、中央に『sky_camera』というエンティティを置いてください。

3Dスカイボックスの作成

以下はC-SECからの転載になります。
http://tendon.s35.xrea.com/phpBB/kb.php?mode=article&k=117

3Dスカイボックスをマップへ追加するとマップの見た目を大幅に強化できる可能性があります。3Dスカイボックスはマップのゲ-ムプレイ部分の範囲の外にレベルデザイナが作成する追加エリアです。3Dスカイボックスは非インタラクティブで、プレイヤ-や他のエンティティは3Dスカイボックス領域に入り込むことはできません。

利点と制限

標準のスカイボックスは単純な2D画像で、マップを取り囲む立方体にマッピングされます。3Dスカイボックスは、プレイヤ-がマップを動き回っても適切に視差を生じさせる完全な3Dジオメトリです。これらはリアルタイムにレンダリングされるため、ビデオカ-ドの解像度に対応してスケ-リングをおこない、2Dスカイボックスでは不可能だったようなリアルタイムシェ-ダ効果もサポ-トしています。

これによって通常のジオメトリではできないほど大きいように見えるマップを作成できるというところに3Dスカイボックスを使う主要な利点があります。3Dスカイボックスを使わない場合、最大のマップは各辺32768ユニットになります。3Dスカイボックスを使うと、その16倍の大きさのマップを作ることができます。

3Dスカイボックスはハンマ-内では通常のマップの16分の1スケ-ルで作られるため、このようなサイズのマップの作成が可能になります。実行時にエンジンが3Dスカイボックスを通常の縮尺に戻します。これによってエディタビュ-での空間が節約されるだけではなく、コンパイルとレンダリングのコストもかなり少なくなります。

この縮尺のため、3Dスカイボックスのライトマップ、テクスチャ解像度はかなり小さいものになります。これで3Dスカイボックスは通常のジオメトリに比べパフォ-マンスの面でのコストが小さくなります。

3Dスカイボックスの特徴:

  • ハンマ-エディタ内で16分の1スケ-ルで作成され、エンジン内では通常のジオメトリと同じサイズにするために16倍大きくレンダリングされます。
  • 非インタラクティブ - プレイヤ-や他のエンティティは3Dスカイボックスに入ることはできません。
  • 小さい縮尺で作成されるためライトマップ、テクスチャ解像度が通常より低くなります。
  • ブラシ、ディスプレイスメント、スタティック・ダイナミックプロップ(prop_static,prop_dynamic)、ライト、ブラシエンティティ、ポイントエンティティ(env_spriteなど)を使って作成できます。
  • prop_physicsや物理エンティティ、info_player_start、NPC、モンスタ-を置くことはできません。
  • 3Dスカイボックスの中のモデルは16分の1サイズで作成してください。
  • 法線マップ、水、環境マップ、プロキシなどのシェ-ダ効果があるマテリアルを使用できます。
  • 独自の光源を持つ必要があります。例えば、スカイボックスの外の場所にあるlight_environmentは3Dスカイボックスのライティングに影響しません。
  • スカイボックスの外のジオメトリとの位置調整にはsky_cameraエンティティを使用します。
  • 3Dスカイボックスは独自のフォッグ(fog)パラメ-タを持ち、sky_cameraエンティティの中で調整できます。

3Dスカイボックスの作成

今作っているマップと位置が合った3Dスカイボックスを作る一番効率的な方法は、3Dスカイマップにマップ本体の一部のジオメトリを使用することです。マップのメインのジオメトリを作成したら以下のステップに従ってください:

  1. マップグリッドの中心のワ-ルド原点(座標0,0,0)にsky_cameraエンティティを追加します。sky_cameraはレンダリングの時に3Dスカイボックスとマップのメイン部分の位置をあわせるのに使われる基準ポイントになります。これを言い換えると、3Dスカイボックスの原点とワ-ルドの原点の関係を示すマ-カ-として機能するということになります。これは、3Dスカイボックスのジオメトリ全てを選択し、その中の sky_cameraエンティティをワ-ルドの原点(0,0,0)にあわせるように移動するのと似たようなプロセスです。スカイボックスのジオメトリはワ-ルドのこの位置に移動して戻ってきます。同じコンセプトを使ってスカイボックスのエンジンでのレンダリングが行われます。
  2. 3Dスカイボックスの縮尺と位置合わせのガイドラインを作るために、マップの中のはっきりした部分をいくつか選択します。通常の場合、このために選択される要素は大きな構造物、壁、崖、丘といったマップの縁を定義するものです。また作成したsky_cameraも忘れず選択してください。

注意:選択するのはブラシだけで、モデルエンティティを選択しないようにするのが重要です。モデルはハンマ-エディタ内で縮小することができないのでリファレンスジオメトリとして使うことができません。

  1. Editメニュ-からCopyを選択するか、CTRL-Cを押してください。
  1. Editメニュ-からPaste Specialを選択します。Number of copies to paste(貼り付ける数)を1にし、残りの値を0にします。OKを押します。これによって選択したジオメトリの複製ができます。
  1. ジオメトリを選択したまま、Toolsメニュ-からTransformを選びます。Scale(縮尺)の横のラジオボタンを選択します。X、Y、Zに0.0625を入力します。これは16分の1を小数で表現したものです。
  1. これでリファレンスジオメトリの16分の1版ができました。これをドラッグして(移動させて)3Dスカイボックスを作成したい場所に置きます。メインのマップエリアに接触していなければどこでも構いません。
  1. 通常のマップエリアの部分からsky_cameraエンティティを削除します。これで3Dスカイボックスの中のsky_cameraのみが残ることになります。
  1. リファレンスジオメトリをガイドにして、その周りに3Dスカイボックスのためのジオメトリを作成します。リファレンスにシ-ムレスに繋がるようにスカイボックスジオメトリを作ることもできます。ブラシやディスプレイスメントジオメトリを使うこともできます。モデルを配置することもできますが、3Dスカイボックスは16分の1サイズなのでモデルも16分の1サイズである必要があります。hl2\models\props_skybox \coast01.mdlは16分の1サイズのサンプルモデルです。

Tip: 3Dビュ-カメラをプレイヤ-の高さと同じくらいに置いてみて下さい。そうするとエンジンでどのようにレンダリングされてみえるかどうかをうまく推測できます。

  1. リファレンスジオメトリの周りに中空の立方体ブラシを追加し、それにtools\toolsskyboxを適用します。これらの表面には通常の2Dキュ-ブのスカイボックスが表示されます。3Dスカイボックスエリアはこれらのブラシで閉じる必要があります。
  1. 3Dスカイボックスにlight_environmentを追加します。ライティングが一致するように、マップのメイン部分からコピ-して張り付けるのもよいでしょう。
  1. 作成が終わったら、sky_cameraエンティティ以外のリファレンスジオメトリを削除するか隠してください。リファレンスジオメトリをvisgroupにまとめてオン・オフの切り替えや再配置ができるようにするのが最善と思うかもしれません。3Dスカイボックスの中にコンパイルしてはいりこまないように、保存してコンパイルする前にオフになっていることを確かめてください。

テスト

3Dスカイボックスを適切に閉じたなら、マップをコンパイルしてエンジン内で3Dスカイボックスを確かめることができます。

3Dスカイボックスの例はmaps\sdk_3d_skybox.vmfを参照してください。

このドキュメントのサンプルマップ
maps\sdk_3d_skybox.vmf