CCK初級者のYOUたちへ ―制作お役立ちミニ講座
ハーイ、エブリワン。ミーはパンダモグーラっちゅう、CCKでclusterのワールドュを制作している者でーす。サンパウロ生まれの陽気なブラジル人でーす。Oh、ほんのジョークジョーク。
よろしくプリーズでーす。
トュデイはCCKでのワールドュ制作に少し慣れてきて初心者から初級者になったユーたちがつまずきがちなポイントュをミーがティーチングしまーす。
Well、このノートはCluster Creator #1 Advent Calendar 2024 用にライティングするものでーす。
イエスタデイの記事はこちら。ミーもニワトリさん眺めるのライクでーす。
さっそくレッツラゴーです。タイムがないユーは気になるところだけリードでーす。
プレビューやアップロードできない!
初級者のユー、CCKに慣れてきてアセットストアやBoothでちょっと無料アセットも仕入れちゃったりして、ちょちょっといじってみたらプレビューやアップロードできない!
なんてことでホワイになっちゃござんせんか?
ビルドインされてないとかメッセージされちゃう、お困り~。
これね、ビッゲストリーズン(最も多い理由)「余計なスクリプトが入っているから」でーす。
オールモスト、新しく入れたアセットを疑えば解決ですが、上の方法で検索もできまーす。
clusterでは使えないスクリプトが入っているとプレビューやアップロードできないことありまーす。怪しいスクリプトュはデリート、デザート、エリート!
Prefabは早めに理解で作業効率スーパーアップ
初級者のユー。ダウンロードしたアセットの一部だけ使いたいのに余計なものまで入ってて消せない~アングリー、こんなの出てくるよ~なことはないかい?げかい、しょうにかい。
本当に全く必要ないならOpen PrefabでPrefabの中身消しちゃえばいいのだけど、いや、ここに設置するこれには必要だけど、向こうには必要ナッシング、みたいなシーンが出てくる。
そんな時は右クリック、PrefabからUnpack CompletelyしちゃえばOK。
そもそもプレハブってなによ、と思ったユーは下記記事熟読のこと。
これはミーのワールドなのでお見せするのエンバラシングなんだけど
雪に屋内の光を零れさすためにベイク用のライト設定をしているわけ。これ一個の建物ごとに入れてたらめんどくさいし、あとで調整するのも面倒。
建物のプレハブの中に光源を入れると同じプレハブ全てに反映されるの。
ここでよく勘違いされるのが、光源入れたものを創ってコピペ/デュプレケートすればよいのでは?なのだけど、違うの、プレハブ化しておくとあとで調整するときに一個一個調整しなくてもいいのでイージーなの。
とにかくまあ先ほどのクリエイターズガイド読んで何となくでいいから理解して、初期のうちに使い慣れておくのがよきよきぼんぼん。
軽量化のベース
重いとどうなる
正直なところ初級者はワールドの重さとか負荷とか気にせずとにかく好きなもの創ればいいと思うの。とはいえ、数本つくってくると周りにワールド制作フレンドも出てきたりして、あれ、ミーのワールドってなんか遊びにくいのかな?もっとビッグワールドつくってみたいけど、みんな軽量化とかいっているしこれ以上大きいと容量もビッグになっちゃうかな。など思うかもしれない。
ミーは軽量化なんて言う「作業」は別にやらなくてもいいと思ってるけど、おさえるところおさえれば自然にできるようになるし、ワールドが重いのってたいていちょっとした無駄を省くだけでクリアするの。そういう意味では概念を早めに理解して自然と身に着けちゃった方がマインドフリー。
そもそも重いと何が起きるのかというと、入室時待たされる、VR酔いが起きやすい、スマホなどでは熱くなるし場合によってはアプリが落ちる。
せっかくつくったユーのワールドなのに人が来ないともったいなっしんぐ。
ミーが3年前のアドカレで書いたこれを読んでくれてもいいのだけど、要約するとこれ。
まずは何が重いのかを知ることから
この記事を読んで、もうエブリワン、Build Report Inspectorはマストでインストールプリーズ。なにから減らせばいいのかわからないまま時は流れてアップしては増えていく容量の数字だけ、という状況をクイックリーに卒業。ミーは新プロジェクトつくるときは真っ先にこれをインストールする。
王道テクスチャサイズ削減、大穴フォント変更
じゃあ重いのがわかったところでどうすればいいのか。王道はテクスチャサイズ変更。だいたい容量食ってるのはテクスチャデータなので、MaxSizeをデフォルトの2048から512くらいに変えるだけ。2048ってのは通常のハイビジョンと同じクラスなので落とすとHDより下がるんでないかい?と思うし、実際そうではある。ただ、ワールドを構成しているテクスチャってパターン化という、同じものを連続させているケースが多い。ユーにイメージしてほしいのだけど、マンションとかタイル張りの建物あるじゃない?現実世界では一個一個がオフコース違うものだけど、ことバーチャルにおいては同じものを繰り返しているだけなわけ。そんななか一個一個のタイルをHD画質で綺麗に描画する必要があるか?というとそんなことなくてオーバースペックになったりする。もちろん完全にそうとは言えなくて、綺麗にするこだわりがあってもいいけれど、容量で困っててテクスチャサイズが大きくなくてもいいならまずはこれ。これで結構解決。
次に文字とかいれはじめたらフォントにも注意。特にコメントボード、ランキングボードにデフォルトで入っているフォントはヘビーなので使うなら変えるのがベター。ただこれ変更するの慣れないと意外と大変でうまくやらないと表示されなくなっちゃうからテイクケア。
まぁ軽量化に関していうと入室時に表示される〇MBだけがすべてじゃなくて、ポリゴン数など要素がいろいろなのでスモール〇MBでも必ずしも快適ではないのだけれど、そこはネクストゥステップ。
ポスプロでセミプロ目指しまーす
レイヤーチェンジが第一歩
CCK使ってきたユー。エミッションとブルームに手を出す姿が見えまーす。だいたいのワールドはエミッションとブルームやっておけばエモくなるとシティで話題。
そしてそれをおこなうのがポスプロ、ポストプロセッシング。
ところがどっこいポスプロを入れてみたのに効きませーん。という声はサムタイム耳にしまーす。
初級者がポスプロに手を出すとき見落としがちなのがレイヤー設定でーす。
21番PostProcessingにしないと効き目ナッシング。ぐーぐぐー。
レイヤーに関しては下記のものが使えまーす。
特定のものに照明を当てるときなどとかイベント用ワールド使う時になどはレイヤーいじいじ必要でーす。そして、それでも効かないときはIs Globalが入っていないことが考えられまーす。
伊豆グローバル。国際的伊豆半島。
is Globalのチェックを入れなければ特定のユーザーのみに効かせられるのでは?というとそうではないでーす。チェック入れていない場合は特定の場所でのみポスプロを効かせることになりま~す。例えば水中だけ視界の色を変えたり部屋の雰囲気を変えたり。
この場合注意しなければいけないのは、範囲を設定するのにはコライダーをユーズするということ。
設定は自由ですがボックスコライダーがベター。レイヤーが違うのでis Triggerはつけなくてもよいですが、つける習慣をつけておいた方がグッドかなと、ミーは思いまーす。今後コライダーはただの壁じゃなく衝突判定として使うシーンがわりと出てくるからでーす。ポスプロでもやっていることは衝突の判定なのでーす。Triggerを入れると、すり抜けはできるけど衝突は判断しているよ、という形になるのでギミック用ボタンなどで活用しまーす。
Bloom使うならThreshold変えて
ポスプロでよく使うのが、Bloomかなとアイ シンク。
Bloom使う時にやったほうがよいのがThreshold(しきい値)を1より大きいナンバーにすること。
これをしないとclusterのメニューなどもBloomかかりまーす。
やった方がいいというか必ずやってプリーズ。メニューがルックできんのじゃ。ミーとユーのプロミス。リピートアフターミー。Bloom使うならThreshold変えて。
Staticとまとめて云うなかれ
staticには種類がある
ネクストュはStaticでーす。CCKに慣れてきたユー。乗り物アイテム、座るアイテムや持つアイテムはStaticをOFFなんてことを聞き始めまーす。そもそもONにしてるメリットュがわからないので、なんとなく全部オフだったり、座るアイテムや持つアイテム以外は全部オンなどしているのではなかろうか松の大廊下。
実のところstatic、いくつか種類があるのでーす。
このうち座るアイテムや持つアイテムで必ずオフにするのはBatching Static、またアニメーションで動くものもオフにする必要ありでーす。じゃないとムーブしないのでーす。staticとはそもそも「静的」、動かないものを、これは動かないものです、と教えることで「あれ?これは動くのかな?動くなら動いたときに再計算するために気をまわしとかないとな」という悩みをなくし、余計な労力を減らしてあげるためにあるのでーす。
基本的にアニメーションはstatic全部オフがおすすめ、だけど座るアイテムなんかは場合によって全オフじゃないほうがいいパタューンもありまーす。
ちなみにミーはNavigation StaticとOff Mesh Link Generation以外は全部必要に応じオンオフしまーす。この二つはよくわからんべっちゃ。ある程度自動でコライダーをメイクしてくれるっぽいけど、負荷がハイになるだけな気がするのでノータッチ。またインフォメーション入ったらシェアしまーす。
staticのなかでミーがBatchingの次にインポータントだと思っているのはContributeGIでーす。これはライトベイクに関わることで、ライトベイクはミーもワンナイトでは語れないし、初級者向けじゃないのでディティールは省くけれど、ContributeGIをOFFにしてるものはライトベイク適用外、逆に言えばベイクしたくないもの(小物など)はオフにしておくのがマスト。
ライトベイクは中級かなと思いつつ、そのステップに足を踏み入れたものの、うまくベイクできないよ~なユー向けに少しだけ、ベイクできない理由を書きまーす。
ライトベイクトラブル小ネタ
ベイクが反映されない、ガッデム!
まずは上記のContributeGIが正しくチェックされていない。
次に多いのがモデル(メッシュ)側のGenerate Lightmap UVsをしてない
時間かかりすぎ、オーマイガー
時間かかりすぎる場合はLightmapping Settingの見直し
ベイクやり直せないよマミィ
ベイクをやり直す時はClean Cacheするのがグッド
ライト周りのトラブルはしょっちゅうヒアリングでーす。
でも要素が多くて説明しきれないので、初級者つまずきポイントかつライトベイクなしのリアルタイムライトだけでも守ってほしいこといいまーす。
Realtime Light使う時はRender ModeをImportantに!
負けない事・投げ出さない事・逃げ出さない事・Render ModeをImportantにすること、リアタイライト使う時それが一番大事でーす。
Pixel数という画面の中で同時に作用できるリアルタイムライトの数は初期値2が推奨。
リアルタイムライトがある場合、アバターの近くにあるリアタイライトを優先させないと他のリアタイライトが作用しちゃう場合があるわけでーす。
ワールドを歩いていてライトがついたり消えたりする、そろそろ電球交換時?みたいな現象は、他のリアタイライトを優先させていることが多いのでーす。Render ModeをImportantにしておくとそれが防げまーす。ただし負荷あがることもあるので注意。(そもそもリアルタイムライト自体が都度演算で負荷かかるので対象を絞ったり、ライトプローブを混ぜるのがベター)
あとはEnviroment Lightingの設定を変更することをおすすめしていまーす。
アバターが暗くなっちゃう問題、光で顔のほりが深くなっちゃう問題(最近はそれをライクな人も…)、エリアライトベイクがビューチフルよ、など色々あるけれど中級編かなベイベー。
TerrainにはSmooth
ちょっと中級かな、とも思いつつ、お部屋の中をつくってたユー、外もつくりはじめまーす。きっと思います、地面を描くのにCubeで構成するとマイクラになっちゃうって。
そしてTerrainを使い始めまーす。Terrainつかったワールドでよく見かけるのが高さの変化がどこも崖状態のワールドでーす。もちろん、あえてそうしていることもありまーす。なぜならその方が多少軽いから(正確に言うと軽くする設定でも成り立つから)でーす。
ただ、やりかたがわからないユーもいるかもしれないので教えまーす。
SmoothHeightをつかって地面を「ならす」と崖状態は解消しまーす。ようは高いところと低いところの間をなじませてくれるのでーす。BlurDirectionをマイナスにすれば低い方に、プラスにすれば高い方に合わせまーす。0だと中間。中心ぐら。Terrainは初級ではそれくらいかな。
occlusion cullingおさえておくポイントュ
ユーがリアルな世界でトイレに入ってドアを閉めたとき、トイレの外には本当に世界が存在しているのだろうか?みたいな思考実験はロングタイムアゴーからよくされていまーす。これがワールドの場合、トイレのドアを閉めたらトイレの外の世界はなくなってしまっていた方が都合がいいでーす。
なぜなら、人間の意識と違って、トイレの外にあるすべてのものをワールドとして計算し続けないといけないからでーす。
これでイメージするのがわかりやすいでーす。そこで役立つのが上記のocclusion culling。occlusion culling自体初級じゃないと思うけど、もし使うなら、って感じでリードしてプリーズ。これをすることで今見えていないところを無いものとしてくれるので、負荷が軽くなりまーす。
でも、clusterと相性が悪いと言われていまーす。いくつかリーズンはあれど一番は3人称視点との相性だね。それというのもカリングするのはカメラ視点なのに対し三人称だとカメラとアバターの位置にずれが起きるので、予期せぬところにカメラが回ってしまい変なカリングを起こすから、なんだね。
ポイントュとしてはBackface Thresholdの値を100にすること。5にした方がocclusionデータ自体の容量は小さくなるので、それをお勧めする記事もあるのだけれど、視覚的アーティファクト(簡単に3人称時のチラチラと思ってもらえればここでは良い)が起きにくいのは100。ハンドュレット。
ここでも実はStaticがひとつではない、という情報が活きてきまーす。
もう一度出しましょう、どどん。
ここに、occluderとoccludeeという選択肢があるのね。occluderstaticは静的な遮蔽物、occludeestatic静的な被遮蔽物。ようするにocclusion cullingを実行したときに有効な遮蔽物(その裏にあるものは視界に入らない限りはないものになる)あるいは被遮蔽物(それが遮蔽物の裏にあるときは視界に入らない限りはないものになる)の設定ってわけ。ただ正直occludeestaticはあんま性能がよくないとミーは思ってるのでoccluderstaticだけ意識すればOKかなと思う。簡単に言うとどうにもカリングがうまくできないときはoccluderstaticを外してカリングベイク対象外にしちゃうアプローチだね。
あとはカリングの判定基準はコライダーではなく見えているものベースなので、見えている壁とコライダーの位置を少し離すとか、オクリュージョンエリアを設定するとかいろいろあるけど、もうそれは中級。
そうそう、occlusion cullingベイクはワールド内のオブジェクトを動かすたびにしないと、カリングベイクした時点での位置関係でベイクされるので気を付けて。うまくいかなかったらクリアすればなかったことにできるからね。ディフィカルトだけど場合によって大幅な負荷軽減ユーキャンドュー。
Mixamoのポージング微調整(おまけ)
ディスイズノット初級者向けだし、この頃はモーションキャプチャーしたものを使いやすくなったのだけど、フレンドのHOMURAさんがアスクミーだったのでついでにライティング。
まずはこれを読めばスタンダードは理解できるのだけど、いや右腕じゃなくて左腕あげたいのん。など微調整したいときって、5日に1度はあると思う。
だけど、編集どうしたらいいのかクエスチョンなユーにお伝えするね。
まず、記事の中で Skin を「Without Skin」とあるのだけど、そのまま使わずちょっと変更したいときは「With Skin」じゃないと調整無理。
ダウンロードしてきたものをそのままワールドにプットイット。このとき座標は0,0,0に。TagをEditorOnlyにしておくのがよき。アップする前にこいつを消しちゃうとアップ後また微調整するのめんどくさいけど、EditorOnlyにしておけばアップされないデータになるのでそのまま置いておいても問題ナッシング。
そのままだとアニメーション編集ができないのでコピペで外に出す。
ここからアニメーションの知識も必要なのでちょっとディフィカルトだけど、外に出したアニメーションをさっきプットイットしたマネキンにアタッチメント。アニメーションコントローラーが追加されていればサクセス。
そしたらさっき外にアウトしたアニメーションを開く。この時に通常のアニメーション編集と同じく、マネキンを選択した状態で開くこと。
すると全部の部位を変更可能になりまーす。動かないときはアニメーションのタイムコードを一回0地点以外選択して0に戻るとなおるはず。
フィンガー1本まで動かせまーす。ただ、関節なども意識しなければならずゼロから創るのノットイージーなので、ある程度近いのをMixamoでセレクトしておいてね。
あと動くやつはまずこれでやらないほうがよき。モーションキャプチャーをリコメンド。あくまで足の開く角度変えたいとかちょっとした調整用。
これで編集したら、あとはいつも通り、そのアニメーションをRidableのAvatarOverrideAnimationにアサインすればフィニッシュ。
おわりに
色々ライトしたけど、インポータントなのはワールドをクリエイトしたいというユーのマインドでーす。スキルはステップアップする気持ちがあれば必ずついてくるし、焦らずちょっとずつやればユーキャンドゥイット。
リトルでもユーの役に立つのがマイホープ。初級と言いつつライトベイクやカリングベイクなどを使わない上級者もいるし、全部覚えないといけないわけではないので、必要に応じてプリーズです。
トゥモローはサメちゃんさんのこちらでーす。