概要
ビューポートで\キーを押すだけで一時的に表示されるSM_ColorCalibratorはライトとマテリアルの関係の整合性を確認するのに便利です。
しかし、惜しいのはいつも地面に半分埋まって表示されることです。
UE5標準のモデリングツールでピボットを移動し、地面に埋まらなくしてみました。
今回はUE5.7を使います。
ピボットを編集し、プレビューメッシュを差し替える方法
SM_ColorCalibratorは以下の位置にあります。
/Engine/EditorMeshes/ColorCalibrator/SM_ColorCalibrator
早速ワールドに配置し、Modeling Modeでピボットを編集しようとしてみますが、エンジンアセットであるため編集不可と言われます。
Contentフォルダ直下に複製を作ってみたところPivotの編集ができました。
エンジンコンテンツ内のものと区別するため、名前はSM_ColorCalibrator_Modifiedとしました。ピボットを底面に移動させてAcceptを押し、アセットを保存します。
エディタ設定からプレビューメッシュを差し替えて設定完了です。
おまけ1:Shift+\でプレビューメッシュ切り替え
プレビューメッシュは複数指定できます。表示の切り替えはShift+\です。以下はエンジンコンテンツのSM_ColorCalibratorとSM_ColorCalibrator_Modifiedを切り替えられるように設定した例です。
このあたりの実装は、エンジンソースを"CyclePreviewMesh"で検索すると出てきます。
おまけ2:地面のコリジョンによってマウスの位置にプレビューメッシュが出ない
UE5.7のThird Personサンプルでは、床の上にプレビューメッシュを出すことができません。
この床はなぜかMobilityがMovableに設定されています。MobilityをStaticに設定するか、以下のようにコリジョンプリセットをBlockAll等に設定すれば、床の上にプレビューメッシュを出せるようになります。
ヒットするコリジョンの条件は UEditorEngine::UpdatePreviewMesh に書かれています。
FHitResult Hit(ForceInit);
FCollisionQueryParams LineParams(SCENE_QUERY_STAT(UpdatePreviewMeshTrace), true);
LineParams.bTraceComplex = false;
if ( GWorld->LineTraceSingleByObjectType(Hit, LineCheckStart, LineCheckEnd, FCollisionObjectQueryParams(ECC_WorldStatic), LineParams) )
WorldStaticチャンネルでヒット判定をしています。よって、WorldDynamicである床にプレビューメッシュが乗りません。これは、Template_Default.umap (New LevelでBasicを選んだ時のレベル)も床がMovableなので同様です。









