カスタムテクスチャ


自前の画像を使う

自前のテクスチャーを追加してみよう。

使える画像ファイルの形式はJPEGかTGA。 TGA形式だとαチャンネル(透過)情報が持てます。
画像のサイズは必ず2のべき乗(...64,128,256,512)でないといけません。
例えば 64x128 や 256x512 などで、最小は16x16、最大は1024x512までです。
ほとんどの公式の壁用テクスチャには 512x512 が使われています。
Radiantの設定のスケールサイズの設定を済ませていれば、
テクスチャーは1/4にスケールされて貼られるので 512x512 の大きさの画像は、
128x128 の大きさのブラシにぴったり重なるようになります。

では、実際にこんな画像を追加してみます。

no image

kincho.jpg(256x256)

画像はtexturesディレクトリの下にディレクトリを作って、その中に保存します。
ディレクトリ名は自分のマップ名にすれば他のマップとバッティングしなくて済みます。

textures/マップ名/画像ファイル

ここでは textures/test/kincho.jpg というパスに保存してみます。

scripts/shaderlist.txtを開いて、末尾にディレクトリ名(test)を追加します。

no image

Radiantを再起動すると[Textures]メニューから先ほど付け加えたディレクトリ名(test)を選択できるようになります。

no image

コンパイルしてテストプレイしてみればわかりますが、このテクスチャはコンクリートの扱いになります。
鉄板の表面効果にするには、次節のシェーダーを記述しないといけません。

シェーダーを記述する

テクスチャーの表面効果を設定するには、シェーダーファイルを記述する必要があります。
何も記述しないと表面はコンクリート扱いされます。

scriptsディレクトリの下に、マップ名.shaderというファイルを作ります。
今回の例では scripts/test.shader としました。
このファイルをメモ帳(その他適当なテキストエディタ)で開いて以下のように記述します。

textures/test/kincho { qer_editorimage textures/test/kincho.tga surfaceparm mat_metal { map $lightmap rgbGen identity } { map textures/test/kincho.tga blendFunc GL_DST_COLOR GL_ZERO rgbGen identity } }

何が何だかサパーリ分からないと思いますが詳しいことはシェーダーについてのページを読んでください。
とりあえず大切なところだけ解説します。

1行目:
textures/test/kincho
最初にシェーダーの名前を宣言してます。
textures/マップ名/シェーダー名という形式で名前をつけます。
シェーダー名は特に事情の無い限りファイル名のサフィックス(.jpgなど)を取った
名前にするのがいいでしょう。

3行目:
qer_editorimage textures/test/kincho.tga
Radiantのテクスチャウィンドウで表示するときの画像ファイルを指定します。
jpg ファイルなのに .tga になってますがそういう仕様です 。

4行目:
surfaceparm mat_metal
表面効果パラメータを指定しています。詳しくは次節で。

10行目:
map textures/test/kincho.tga
実際にゲーム中で使われる画像ファイルを指定しています。
これもサフィックスが .tga になってますがそういう仕様なのです。

surfaceparm

surfaceparmを記述することでコンクリート以外の表面効果を演出することができます。
表面効果は、弾丸が当たったときの効果音、プレイヤーの歩行音、貫通度合いなどに影響を与えます。
TCEで有効な surfaceparm は以下の表の通りです。

surfaceparm 表面効果 貫通 備考
(surfaceparm無し) セメント × cementに同じ
mat_branch 小枝・茂み 貫通 足音ガサガサ textures/common/branchclip
mat_brick ブロック × 弾煙が赤色の粒状
mat_brick_grey ブロック × 弾煙が灰色の粒状
mat_brick_yellow ブロック × 弾煙が黄色の粒状
mat_cardboard ダンボール 貫通 弾痕小さい 足音トコトコ
mat_carpet カーペット 貫通 cardboardと同じ?
mat_cement セメント × セメントコンクリート(デフォルト)
mat_ceramic 陶器 貫通 貫通以外はcementと同じ?
mat_clay 粘土 × 弾音少し穏やか
mat_dirt × gravelと同じ?
mat_fabric 繊維 貫通 弾痕小さい plasticと同じ?
mat_fence フェンス 貫通 フェンス 弾痕無し textures/common/fenceclip
mat_flesh 生肉 貫通 血しぶき textures/common/fleshclip
mat_foliage 落ち葉 貫通 土煙 足音ガサガサ
mat_glass ガラス 貫通 弾痕がガラス
mat_grass 草土 貫通 土煙 足音gravelより静か
mat_gravel 砂利 × 土煙 足音ザクザク
mat_metal 金属 貫通 いわゆる金属 textures/bruce_misc/metalclip
mat_mud 貫通 ceramicと同じ?
mat_plastering しっくい × 弾煙が白色の粒状
mat_plastic プラスチック 貫通 弾痕小さい textures/bruce_misc/pvcclip
mat_plastic_soft 柔プラスチック 貫通 carpetに同じ?
mat_roof 金属屋根 貫通 金属 屋根っぽい足音
mat_sand × 土煙 足音とても静か
mat_snow 貫通
mat_soil 土壌 × sandと同じ?
mat_steel 鉄板 × 金属
mat_straw 麦わら 貫通 弾煙が麦わら
mat_stucco 漆喰 × 弾煙が白色の粒状 plasteringより派手?
mat_tiles タイル × cementと同じ?
mat_tin 薄い金属 貫通 metalより貫通音低い ドラム缶など
mat_wet 濡れた × 謎 cementと同じ?
mat_wood 貫通 木 textures/common/woodclip
mat_wood_hollow 空洞な木 貫通 woodと同じ?
noclimb (特殊) × フリークライム禁止 textures/common/noclimbclip
nopierce (特殊) × 貫通阻止 textures/coroner_snow/snowy05_nopierce

&ref(): File not found: "049custparms.pk3" at page "カスタムテクスチャ";に上記すべてのパラメータを適用したテクスチャのサンプルを収録してみました。devmapしてお試しください。

シェーダーを読み込む

前節で記述したシェーダーファイルを保存します。
そしてRadiantを再起動。
shaderファイルはRadiantを起動したときだけ1度だけ読まれるため再起動する必要があります。

[Textures]→test を見ると、さっきと同じく kincho テクスチャが見れますが
よく見ると詳細名表示が変わっているのがわかります。

shader記述前 →→→ shader記述後

no image


no image

test/kincho textures/test/kincho

これがshaderが読み込まれた証拠です。
この textures/test/kincho テクスチャを貼れば、メタル効果のキンチョウの看板の出来上がりです。

他のカスタムマップのテクスチャを使う場合

他のカスタムマップのテクスチャを使う場合、テクスチャ画像とシェーダーの記述内容をすべてコピーして、pk3の中に梱包しないといけません。

・画像はtextures/自分のマップ名/ディレクトリの中にコピーします。
scripts/自分のマップ名.shaderファイルを作って、必要なシェーダー定義をコピーします。
・シェーダー名とディレクトリパスを全て textures/自分のマップ名/ に変えます。

面倒と思うかもしれませんが、テキストエディタの置換機能を使えば一発でできるはずです。

以上の手順を踏んで梱包したpk3を作らないとテクスチャ化けが起こります。
shader名がバッティングすると特に危険なことになるのでくれぐれもご注意を。

ついでながら、一般に公開するpk3ファイルには test.shaderというファイル名は使わないで 下さい。
あちこちのマップで使われていてバッティングしまくり。ご協力お願いします。