Half-Life 2 BSPライトマップ
私は大学のプロジェクトのBSPビューアを書いています。これまでのところ、メインジオメトリが適切に読み込まれ、PVSが機能しています。 現在、ライトマップを適用しようとしていますが、ライトマップのテクスチャ座標を適切に計算できないようです。 ここによると:http : //developer.valvesoftware.com/wiki/The_Source_Engine_BSP_File_Format struct texinfo_t { float textureVecs[2][4]; // [s/t][xyz offset] float lightmapVecs[2][4]; // [s/t][xyz offset] - length is in units of texels/area int flags; // miptex flags overrides int texdata; // Pointer to texture name, size, etc. } フロートの最初の配列は、本質的に、ワールドジオメトリにレンダリングされたときにテクスチャがどのように方向付けられ、スケーリングされるかを表す2つのベクトルです。2つのベクトルsとtは、テクスチャピクセル座標空間での左から右および下から上方向のワールドへのマッピングです。各ベクトルには、x、y、およびzコンポーネントと、ワールドに対するその方向のテクスチャの「シフト」であるオフセットが含まれます。ベクトルの長さは、各方向のテクスチャのスケーリングを表します。 テクスチャピクセル(またはテクセル)の2D座標(u、v)は、次のようにして、面上の点の世界座標(x、y、z)にマップされます。 u = tv0,0 * x + tv0,1 …