1
현재 모델을 사용하는 응용 프로그램을 개발 중이며 모델을 확대하는 방법을 알아야합니다 (가능한 한 많은 공간이 화면에 나타날 때 트릭을 만들어야 함).뷰포트 크기에 맞게 줌 모델
내 행렬은 다소 단순합니다. 나는 마우스 입력으로 _xrot
, _yrot
및 _scale
을 가져갔습니다.
var projectionMatrix = Matrix4.CreateOrthographic(_viewportSize.Width, _viewportSize.Height, 10000f, -10000f);
var viewMatrix = Matrix4.CreateRotationY((float)(_xrot)) *
Matrix4.CreateRotationX((float)(_yrot)) *
Matrix4.CreateScale((float)_scale);
var modelMatrix = Matrix4.Identity;
그런 다음이 행렬에 좌표를 곱하고 렌더링 된 지오메트리를 얻습니다.
또한 내 테두리 상자 (최대 및 최소 X, Y 및 Z)의 포인트가 있습니다. 나는이 모든 것을 혼자서 풀려고했지만 내 노력은 실패했다.
var maxPoint = new Vector3(_maxX, _maxY, _maxZ);
var minPoint = new Vector3(_minX, _minY, _minZ);
var pToProject = maxPoint.Length > minPoint.Length ? maxPoint : minPoint;
var projectedPoint =
Vector3.TransformPerspective(pToProject, modelMatrix * viewMatrix * projectionMatrix); //transform max point to NDC
var minP = Math.Min(projectedPoint.X, Math.Min(projectedPoint.Y, projectedPoint.Z));
_scale = 1/Math.Abs(minP);
의견이 있으십니까?