はじめに
長期運用や大人数また作成するアセットが大量にある場合、仕様をかためていかないと大事故につながる危険があります。プロジェクト毎で多少の差異は生まれてきますがその仕様を決めるための基本ルール、ガイドラインについて今回は書いていきます。
なぜ必要か?
一定のルールを設けることで複数人で作業しても一貫したデータ構造を保つことができる。
そのルールにより後工程にて特定のプログラムを走らせることができる。
構造がルール化されるので誰が見ても分かりやすくなり、引き継ぎや改修が楽になる。
また、そのルールに従っているのであれば問題点も特定しやすい(はず)
前提条件
プロジェクト全体の仕様、例えばディレクトリ構造などがかたまっていることが前提となります。
基本ルール
現在所属しているところではHoudiniを使用していることもあってOrboltのガイドラインを参考にしています。
Asset Guidelines
コアファイル
- すべてのパスは相対パスで記述。
- マテリアルはアセット内のサブネット内に配置する。
コントロールとパラメーター
- すべてのコントローラーはアセットのトップレベルに配置する。
- パラメーターには意味のあるデフォルト値が必要。
- シリーズで作成する際は共通のパラメーター基本レイアウトを考案し、参照する際は統一性を持たせる。
単位とスケール
- アセットは一貫した単位設定が必要。距離単位は1Unit =1m。実寸で作成。
位置と方向
- 座標系の指定(YupかZupか)
- 原点(0,0,0)を中心とする
- 正面の指定
トポロジー
- 四角形と三角形のみで構成すること
エクスプレッション、スクリプト
- すべてのカスタムスクリプトはアセットに埋め込むこと。外部スクリプトファイルへの依存はしないように。
命名規則
- 一貫した命名規則(プロジェクトにより異なるが一貫した命名規則により整理する)
- Namespaceの指定
最適化
- 使用していないノードを削除する。(オフにしているノードをそのままにしてあるとメンテナンス時に判断に困るため)
- エラーやウォーニングが出ているノードは解決する。
- 粒度の大きい処理の塊をネットワークボックスで囲い見やすくする。
- 大まかな処理の内容をスティッキーにメモする。
- 場合によっては色付して見やすくする。
- 場合によってはノードの形状を変えて見やすくする。
- ロックはしてもブラックボックス化しない。(メンテナンスの為)
- ファイル名とノード名を一致させる。
- 不要なアトリビュートを削除する。
- インスタンスが可能であればインスタンス化して軽量化する。
- PythonやHscriptを使用しているプロセスで処理が重くVEXで書き換え可能であればVEXを使用する。
ヘルプカード
- アセット内にそのアセットに関するヘルプカードを格納する。
- 使用にあたり前提条件があれば記す。
- アセットの簡単な挙動の要約
- パラメーターの説明。(ユーザーが実行できることの説明)
※参考:HDAにヘルプを付ける方法
アセット管理
管理ツール
Shotgunなど
登録ルール
使用するツールの仕様に従う。
ヴァージョン管理
管理ツール、管理方法により異なる。
現在所属しているところではSVNでヴァージョン管理を行っています。
Houdiniのアセット HDAの場合は内部にヴァージョンを持てるのでその機能を使用するのも良いでしょう。
注意としては管理方法が重複しないようにする必要があります。統一しておかないと後々混乱のもととなりますので。
リリースノート
作成、更新した際の記録を残しておく。
最低限下記の3点
- 日付
- 作成(更新)者
- 内容
仕様が変更になった場合
長期運用する場合、初期で構築した仕様が途中で変更していくというケースが考えられます。
その際、できているアセットはどの仕様に沿ったもので現仕様とどの部分が異なっているのかを明確にして更新していく必要があります。
管理する際、長期プロジェクトが見込まれる場合には仕様変更も視野に入れる必要があります。
終わりに
今回記載した内容は私が現在所属している部署でのものを参考にしているので形状作成によっている内容となっています。
この他にテクスチャ、リグ、アニメーションデータ、シミュレーションのキャッシュの扱いなどプロジェクトによって様々なものが必要になるのでプロジェクトが始まる前に様々な要件の策定が必要になります。
また、プロジェクトで使用しているツール群や関わる他の仕様によっては一部変更する必要もあるでしょう。(実際、走っているプロジェクトでは一部変えている部分もあります。)
事故が起こらないようなにかの参考となれば幸いです。
参考ガイドライン
Orbolt : Asset Guidelines
TurboSquid : CheckMate Pro Specification
Unreal Engine :Marketplace Guidelines
Unity : アセットガイドライン