3Dモデルを ScreenCapture2D の機能を使って表示した画面において、
3Dビューワーの様にカメラが移動する画面を実装し、
カメラの移動でモデルが画面外へ移動しようとすると、
モデルの3D座標から、2D座標への変換しカメラ移動の制限をかける方法はないでしょうか。
FMTMeshUtility::ProjectWorldToScreen の使用を考えており、
この引数に「const FSceneView* InView」があるように、
ScreenCapture2DのSceneView を取得しようと考えております。
SceneCaptureRendering.cpp を確認すると、取得方法がありません。
ScreenCapture2DのSceneView を取得する為にはどうすればよいでしょうか?
お世話になっております。こちらの件に関しましては、
直接取得を行えないためカスタマイズが必要になるかと思います。
お問い合わせていただいた該当の関数(FMTMeshUtility::ProjectWorldToScreen)を確認できていないのですが、
FSceneViewで定義されている同様の機能の関数の場合は、次のような引数が必要となります。
.\Engine\Source\Runtime\Renderer\Private\SceneCaptureRendering.cpp
bool FSceneView::ProjectWorldToScreen(const FVector& WorldPosition,
const FIntRect& ViewRect, const FMatrix& ViewProjectionMatrix, FVector2D& out_ScreenPos)
こちらで必要な引数に関しましては、以下関数が参考になるかと思います。
.\Engine\Source\Runtime\Renderer\Private\SceneCaptureRendering.cpp
(BuildProjectionMatrixなど)
上記箇所をご確認頂けますと幸いです。
よろしくお願いいたします。
教えていただいた方法でエンジンを拡張し、意図した通りの実装ができました。
ありがとうございました。