UE4マテリアルの変数名の命名ガイド

Category : CGTips, UE4 · by 12月 18th, 2018

おひさしぶりですこんにちは。

最近はお仕事で、UE4のマテリアルなど変数名を決める機会が増えてきました。

ですが、アーティストがこういったものの名前をつける機会は過去にはほとんどなかったことや、エンジニア向けにはネーミングルールはあるけれど使う用語がかなり違うことからそのままは転用しにくく、また日常的に使用するDCCツールのネーミングルールのパターンも様々であることから、わかりすい名前ってなんだろうとよく考えています。

わかりやすい名前をつければ怖がらずに使ってもらえますし、ドキュメントを書く手間を省けることもあるかもしれません。

今回、名前の付け方を以下のように統一してみようと考えました。

部位+(状態)+(影響を及ぼす要素)+数学的用語

括弧は省略可能
例 : BrickHeightRenge
例 : RustColor

【部位】とはマテリアルが複数の素材感を持つときにどこに影響を与えるかということです。例えば壁マテリアルの『レンガ』に影響を与えるといったことです。
【状態】とはその変数がマテリアルのどういった状態に影響を与えるのかということです。例えば壁マテリアルの『汚れ』に影響を与えるといったことです。
【影響を及ぼす要素】とはその変数がマテリアルのどのパラメーターに影響を出すのかということです。例えば壁マテリアルの『アンビエントオクルージョン』に影響を与えるといったことです。
【数学的用語】とはその変数がマテリアルのどういった状態をどうするのかということです。例えば壁マテリアルの汚れの『強さ』に影響を与えるといったことです。

数学的用語という名前の付け方はどうなんだというツッコミはナシでお願いします>< (いい言葉が浮かばなかった)

 

ほかには以下のことに気をつけるように心がけています

  • 実装ベースではなく具体的な効果で名前をつける
    例えば、TextureにMultiplyしている変数に対し、TextureMultiplyのような名前をつけることをやってしまいがちなのですが、そこは一呼吸おいて、これは汚れのテクスチャを強くするためにMlutiplyしているんだというところまで考えて、DirtIntensityのような『具体的な効果』に落とし込んだ名前をつけてあげると、使う人にとって優しいものになるのかなと思います。
  • キャメル法に統一
    UE4に倣ってキャメル記法(単語の頭が大文字)で統一します。そのためAOなどの通例として大文字で使われるものでもAoと表記して区切りをわかりやすくします。
  • グループを使う
    マテリアルが大きくなった場合、アルファベット順のソートだけに頼るとわかりにくいので、グループも積極的に活用します。個人的にはSortPriorityまで使うと管理が大変なので使ってないです。
  • なるべくなら20文字程度に収める
    ぱっとみてわかってもらえるくらいの文字数に抑えたいですね。20文字という制限に特に意味はないですが。
  • (将来的には)部位も省略できるなら省略する
    いまだと一つのマテリアルがレンガと木を持っているときに、BrickHeightRengeなどの名前を付ける必要があるのですが、あやゆるものにBrickとつけるのでなかなか取り回しが悪いです。将来的に実装されるレイヤードマテリアルを使えば部位ごとにマテリアルレイヤーを分けられます。そうなるとマテリアルレイヤー側にBrickという名前をつけてしまえるので、変数名もそれなりに簡潔になるのかなあとおもいます。
  • 触ってほしくない場所はなるべく定数+コメントにする
    マジックナンバーはあまり推奨したくはないのですが、マテリアルの場合、UVの中心をとりたいので0.5を足すなどのように、特にいじってほしくもない数字を決め打ちで入れることが多くあります。そういったものはなるべく定数化してコメントを入れておくと後で便利です。

用語集

個人的によく使う英語を集めてみました。

状態を表す用語

英語
日本語
例
Dirt ほこり(による汚れ)
Moss 苔(が生えた)
Moisture 湿り気
雨だれの表記として見かけたことがあるのですが、英語的に正しいのかは不明
Weathering 風化 BrickWeatheringIntencity
Crack ヒビ
Scratch ひっかき傷
Rust さび

影響を及ぼす要素

基本的にはMaterialの基本パラメーターのままですが、省略したりや例外的な書き方をしているので明記しておきます

英語
日本語
例
Color BaseColorの略
Rough Roughnessの略
Metal Metallicの略
DetailNormal
Wpo WorldPositionOffsetの略 GlassWpo
Ao AmbientOcclusionの略
Pdo PixelDepthOffsetの略

数学的用語

英語
日本語
例
Texture (どんな)テクスチャ(を貼るか) CrackTexture
Scale 大きさ
Max 最大
Min 最小
Intensity 強度
Amount 量
Frequency 頻度
Offset オフセット
Ratio 割合
Position 位置
Spread ひろがり AoSpreading:AOがどの程度広がるか
Shift ズレ HueShift
SHARE :