
easy FPS editor備忘録 11:カスタムモディファイア
もうメモった気がしたのにやってなかった!
カスタムモディファイアを使う
カスタムモディファイアとは
カスタムモディファイア(Custom Modifiers)は、デフォルトモディファイア(第3回で登場)と同じく壁・床を一時的に変形させる機能だ。
3Dモデルを作成せずとも壁に適用するだけで四角いブロック状のものを階段にしたり坂道にしたりと多種多様な形状に変形させることができ、主に地形生成の際に大いに役立つシステムとなっている。
カスタムする
カスタムモディファイアはデフォルト状態ではサンプルとなる円柱ColumnBigとColumnSmallしか用意されていないが、エディタ画面でAdvanced Tools → Custom Modifiers Configuratorを開くことで追加・編集することができる。

左が選択中のモディファイア、中央が構成パーツおよびその位置とサイズ、右が状態サンプル
新しくカスタムモディファイアを追加する際は、左下の緑色+マークを押す。そうするとUnmamedTileという名前で新規モディファイアが生成されるので、左の画面で該当するものを選択して中央の画面で名前を変更。

今回はとりあえず机を作ってみる。まず、Addを押して構成パーツを選択。
パーツはそれぞれCircle(縦円柱)、Rectangle(立方体)、Triangle(縦三角柱)、Slope(坂)、Corner Slope(三角錐)という感じで分かれており、これらをレゴのように追加しては変形させて形を作っていく。
今回はRectangleを天板1、足4で合計5パーツ使用して机を作る。

追加したパーツを選択すると、中央にパラメータが表示される。xyz座標を調整して位置をずらしたり、幅・高さ・広さを調整して直方体を板や四角柱に変形させて机を作っていく。
不要なパーツは選択状態でRemovを押すことで削除され、完成した際はAcceptを押すことで保存・エディタ画面に追加される。
配置する
追加したカスタムモディファイアは、エディタ画面左のCustom Modifiersをクリックすることで表示される。
この機能は3Dモデルではなくあくまで床・ブロックをその形状に変形させるものなので、まずブロックを配置。その後、ブロックの上に該当するModifierを設置することでブロックがその形になる。

3Dモデルのようにテクスチャ位置を細かく指定できるわけではないので精巧なモデルの製作には向いていないが、机、階段、床などは基本的にこれを利用することで手っ取り早くブロック形状のマップから脱却することが可能だ。
応用:透明な部分を含むテクスチャを使う
多くの3Dモデルと同様に、本作のブロックには表の面にしかテクスチャが貼られていない。バグの多い3Dゲームでうっかり土遁してしまい奈落に落ちた時に空中に街が浮かんでいるように見えるのは、地面の裏にテクスチャが貼られていない(=透明)からだ。
当然、その状態で透明な部分を持つテクスチャを使用すると4面あるうちのプレイヤーが見える表面しか画面には表示されない。

この場合、反対側に位置する面がテクスチャのない裏側しか見えず、その結果存在しないものとして描画される。カスタムモディファイアの正方形(64*64*64)を使用した場合であっても、床部分は自動的に補完されるが裏面のテクスチャがないことは同じなので通常の壁と同じくただの板に見えてしまう。
これはつまり「4面全て裏表にテクスチャがある状態」であれば解決するわけなので、正解はこうだ。

各パーツには個別にテクスチャが適用されるため、これで全ての面が見えることになる。
このカスタムモディファイアを透明な部分を持つ壁に適用することで、全ての面が適切に表示されるようになる。

鉄骨だけでなくガラス窓や柵、フェンスなどの透明部分を含む構造物もこれらを応用することで実装することが出来る。
応用2:梯子を作る
easy FPS editorには梯子がない代わりに「サイズが16未満の段差は自動的に登る」という機能がある。つまり、超小さい16サイズの段差を積み上げる事で自動的に登れる梯子っぽいものを作ることが可能。
W2(4とかでもいい)・H任意(16→32→48)・L64で超薄い階段を作る。

逆に、No Collision(判定なし)を選択すると当たり判定が無くなるっぽい。
そして、完成したモディファイアをブロックに適用する。

薄い階段を用意することで疑似的に梯子のような挙動でブロックを登れるようになった。
垂直に上がるわけではないため3ブロック以上の高さで採用するのは厳しいが、2ブロック程度の段差であればこれで事足りるだろう。