Skyboxes(天球, スカイ・ボックス)

format Skyboxes, Yoshiboy, Data folder modular (訳注: 2024 年 4 月現在、リンク切れしていて、"format" の意味が不明。)

ワールド・マップのスカイ・ボックスを変更して、戦闘時のように時間とともに変化させることも可能なのでしょうか?
ある程度は可能ですが、メッシュ用のスカイ・ボックスを使って隊を作成し、プレイヤーの隊に常に再配置するトリガーを用意する必要があります。このやり方で問題になるのは、プレイヤーの隊が視界の外に出ると消えてしまうということです。基本的には通常の状態に戻ります。その後で、この隊を別の時間帯に切り替えることができます。

このスレッドの最後の質問。

いくつかの情報。 cmpxchg8b, Skyboxes.txt の一部の説明

訳注:

概要

スカイ・ボックスは 3D シーンの「空」と「太陽」を表示するためのモジュールです。夜、夕方、昼間などの空の画像(矩形)を用意しておき、それを Warband エンジンによって巨大な中空の球面の内側に貼り付けたように表示させることで、球の中心にいる主人公から「空」に見えるようにするものです。

モジュールの形態

開発のためのソースコード Skyboxes.py は(通常の「Module_system x.xxx」ではなく)「Module_data x.xxx」フォルダにあり、通常のモジュールでの コンパイル用 Python コード process_xxxx.py に相当する部分も含まれています。コンパイルして出力された skyboxes.txt を置くべき場所も、MOD のフォルダ直下ではなく MOD の Data フォルダです。

レコードの項目

Skyboxes.py の冒頭付近のコメントにあるレコード内の「項目名」と、実際の最初のレコードを抜粋すると、次のように書かれています。
# mesh_name, flags, sun_heading, sun_altitude, flare_strength, postfx, sun_color, hemi_color, ambient_color, (fog_start, fog_color),
...
  ("skybox_cloud_1", sf_day|sf_clouds_1, 179.0, 52.0, 0.85, "pfx_sunny", (1.39*1.32,1.39*1.21,1.39*1.08), (0.0, 0.0, 0.0), (0.96*16.0/255,0.96*23.5/255,0.96*44.5/255), (300, 0xFF8CA2AD)),
項目名を訳すと、
メッシュ名, フラグ群, 太陽の方角, 太陽の仰角, フレアの強度, 後処理, 太陽の色, 半球の色, 環境光の色, (霧の開始距離, 霧の色),

指定方法

通常はゲーム内の時間帯毎に Warband エンジンが(ハード・コーディングされた固定的な名称のレコードを)選んで表示するようです。MOD で操作する場合は、ミッション・テンプレートのトリガー内などで set_skybox 命令を使って指定するものと思われます。MOD システム 1.171 では、全ての set_skybox 命令がコメント化されているようです。

メッシュ名は .brf の中に含まれているものを指定します。

フラグ群については、.brf 内の「フラグ群」と、モジュールのレコードを整合させる必要があるようです(整合していないと空だけ黒くなったりします)。.brf 内のフラグの確認や変更をするには、OpenBRF Redux(またはオリジナルの OpenBRF)で当該 .brf を開き、「マテリアル」タブに一覧される skybox_clearday などの名を選び、DiffuseB というリンクを選びます。sf_HDR フラグと 2D 画像の実際の解像度の整合については、意識する必要が無いように見えます(不確か)。

太陽については、実際にはシーン開始時のゲーム内時刻によって日差しの向きをエンジンが変えるように見えるので、レコードに指定する方角と仰角は使われないのかも(不確か)。単位は「度」のように見えます。

その他、Skyboxes.py のコメントにあるように、画像の RGB コンポーネントや指数コンポーネントごとに推奨されるファイル形式が指定されているので、Native 用の既存画像を加工して再利用する場合は、保存時の形式に要注意。2D 画像の編集には、例示されているツールの他、GIMP などの無料ツールも使えます。