В настоящее время я разрабатываю приложения с моделью на экране, и мне нужно как-то изменить масштаб модели (сделайте трюк, когда геометрия на экране занимает как можно больше места).Увеличить размер модели до размера видового экрана
Мои матрицы довольно просты. Я взял _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);
Любые предложения?