お久しぶりです。3Dグラフィッカーの中村です。
前回データ整理について軽く書きましたが、今回もその続きです。
具体的には、整理したデータからプログラマーさんにカリング処理をお願いするやり方をちょっと書いていきたいと思います。
さて、カリング処理と言いますと、基本的にはプログラマーさんの領分です。
しかし、グラフィッカーがそれに協力することで、カリング処理と一言で言っても色々なことができるようになります。
その一つの方法として、オブジェクトに対して特殊な名前を付けておくことで、それをプログラムで判定してもらって特定のものだけをカリングさせることができたりします。
例えばですが、
・オブジェクトメッシュの末尾に『__distance』とついているものに関しては、ゲーム内のプレイヤーカメラから●●メートル離れたらカリング処理をするようにしてもらう
などがプログラマーさんにお願いできるようになります。
では、なぜそれにデータ整理が必要なのか?
・そのカリング処理をしてほしい、特定のオブジェクトを検索しやすいから!です。
Mayaなどでデフォルトでメッシュを作成すると、『pSphere』やら『pCube』やらという名前になると思います。
これをそのまま放置してどんどんオブジェクトを作成していった場合、『pCube1261』などの名前になっていきます。
岩のモデルだろうと、机のモデルだろうと、元が『pCube』なら『pCube』のまま連番で名前がついていくのです。
そのときになって、地面に転がっている岩のモデルだけは距離によってカリング処理を当てたい!とか思ってもすごく面倒です。
特にそのオブジェクトに使用しているマテリアルが、他のオブジェクトにも使われているなんてことになったら、面倒臭さが余計に増します!
例えばこんな感じです。
▼岩のマテリアルを使っているオブジェクト
・地面に転がっている岩オブジェクト
・岩壁オブジェクト
・瓦礫オブジェクトの中に混じった石のメッシュ など
数が少なければ良いですが、背景ではこういった小物は同じシーン内で何個も使いまわすことが多いので、その数は膨大になります。
そんな中から地面に転がっている岩オブジェクトだけを選択するというのは大変です。
ですが、大本のオブジェクトを作成した際に、それらに対して適切な名前を付けておくとそれも解決します。
例えばこんな感じです。
▼岩のマテリアルを使っているオブジェクト
・地面に転がっている岩オブジェクト:rockA_001
・岩壁オブジェクト:rockwallA_001
・瓦礫オブジェクトの中に混じった石のメッシュ:rubbleA_001 など
こんな感じで名前を付けておくと、開発後期に処理速度改善のためにカリング処理を入れます、となった時にも対応しやすいです。
Mayaで言えば、Outliner>Searchからその名前を検索してやれば、それらが一発で表示されます。
そしてそこから、リネームツールなどを使って、まとめて名前を変更してやればすぐに対応できます。
処理速度の改善は開発の最初から最後までずっと付き合っていくような作業です。
特に開発後期は、処理速度をどうやったらもっと改善できるか、といった作業を延々と続ける状況になる場合が多いので、カリング処理も細かく設定していく必要があります。
そんな開発終盤を見据えて、プロジェクトの最初からデータ整理を心がけることが大事です。
ネームを使ったら出来ることの具体例をちょっと書いてみます。
①特定オブジェクトの距離カリング
→プレイヤーカメラとの距離によって特定オブジェクトにカリング処理を入れてあげる。
②特定オブジェクトの挙動をゲーム中のフラグで変更させる。
→例えば、ゲーム中で最初は表示してあるお宝オブジェクトが、シナリオ途中で奪われてその場所から消えてしまう。
オブジェクトの表示/非表示を切り替える処理が必要です。
プログラムだけでもできますが、お宝オブジェクトに『__flg_フラグ番号』というような名前を付けておいて対応してもらうこともできます。
『__flg』という名前はフラグによって挙動が変化する、という判定をとってもらい、後ろのフラグ番号と同じフラグがゲーム中でONになったら挙動を変化してもらう、ということもお願いできます。
例)お宝オブジェクト:treasureA_001__flg_05
→お宝オブジェクトは最初表示されているが、フラグ05がONになったら非表示になる。
他にも色々とありますが、データ整理をしておくとプログラマーさんと連携して色々とできます。
綺麗なデータはそれだけでも作業がしやすくなりますので、みなさんも意識してみてください。