# Misskey Room ## オブジェクトの仕様 - Blenderで設計すること。必ず.blendファイルも含めること。 - 単位はセンチメートルで設計すること。 - それを置いたときに底になる縦軸座標(blenderならz)が0になるように設計すること。 - BlenderならYがマイナスになる方向が手前。(=スザンヌを設置してデフォルトで顔が向いている方向が手前) - 壁面設置の場合は壁面に接する面のY軸座標が0になるように設計すること。 - ポリゴン数は、極端にハイポリでない限りはパフォーマンスに影響を及ぼすことは少ないです(必要ドローコール数の多寡の方が重要)。とはいえ、モデリングのし易さ・見た目の統一感を考えると(極端に見た目が不自然にならない程度に)低ポリゴンを推奨します。 目安として、例えば円柱を考えると、直径20cm程度以下なら頂点数16、直径2cm程度以下なら頂点数8、0.5cm程度以下なら頂点数4程度を推奨します。(2の乗数を推奨) なおここでいう頂点数とは、メッシュ全体の頂点数ではなく、円柱を作成するときのオプション項目にある"Vertices"の値のことです。 具体例を挙げると、大きめの円形の壁掛け時計であれば32、コップであれば16、ストローであれば4~8 です。 イメージとしてはPS2とか3DSくらいのポリゴン感です。Misskey Roomは3DCG作品ではなくゲームなので、多少のローポリ感はあってもいいです。 - メッシュ名を `__TOP__` で始めると、その面の上にモノを置けることを示す。当該メッシュはレンダリングでは表示されません。 - メッシュ名を `__SIDE__` で始めると、その面にモノを貼り付けられることを示す。当該メッシュはレンダリングでは表示されません。 - なお、現状 `__TOP__` / `__SIDE__` メッシュは単一の面でなければなりません。つまりArray Modifierなどを適用した状態では正しく動作しません。 - メッシュ名を `__COLLISION__` で始めると、コリジョン用メッシュとして扱われます。当該メッシュはレンダリングでは表示されません。 - メッシュ名を `__PICK__` で始めると、レイのヒットチェック用メッシュとして扱われます。当該メッシュはレンダリングでは表示されません。 - `__PICK__`が無い場合、すべてのメッシュをヒットチェックメッシュとして扱いますが、例えば網目のようなメッシュではレイが隙間を通り抜けて後ろにあるオブジェクトにヒットしてしまうなどの問題が発生します。 - 後からモデルを調整したくなった時に備え、モディファイアを駆使するなどして、なるべく非破壊的なモデリングを心がけることを推奨します。 - パーツ的に分かれていることが自然なメッシュについても、できるだけマージせす、別々のメッシュのままにしてください。 - モディファイアをapplyしないとならないシチュエーションでは、apply前の状態を複製して(非表示にした上で)残すことを推奨します。 - 位置や回転についても、不必要にapplyしないでください。 - 現在のMisskey RoomのGLB root除去システムの実装上、スケールに1以外の値を持つメッシュにシェイプキーを設定することはサポートされていません。 - マテリアルは基本的にPrincipled BSDFを使ってください。 - パフォーマンスに影響を及ぼすため、不必要にUVを作成しないでください。 - メッシュ名やマテリアル名などは英語であると嬉しいです。 ### 開発者向けメモ - シェイプキーを使用する場合、normalのエクスポートが有効だと面のレンダリングがおかしくなる場合があります。その場合は無効化してください。 - 非破壊的なモデリングの原則に反しない限り、なるべくscaleはapplyした状態で(=scaleが1, 1, 1の状態で)エクスポートすること。そうしないとbake前後で法線が変わるのかレンダリング結果が異なる現象が発生することがあります。 - 位置や回転についてはapplyする必要はありません。むしろなるべくしないでください。 - パフォーマンスに影響を及ぼすため、UV情報が必要ない場合はエクスポート時にUVのチェックを外すこと。