我正在使用OrthographicCamera,我需要制作缩放范围,这样即使场景旋转,我也可以看到整个场景。
基本上,我实际上是这样做的:
计算包含场景所有点的Rect3D:
Rect3D boundTotal = new Rect3D(vertex[0], Size3D.Empty);
for (i = 1; i < nbVertex; i++)
boundTotal = Rect3D.Union(boundTotal, vertex[i]);
现在,我正在计算半径/直径以及包含3D矩形(包括场景的所有点)的球体中心:
Vector3D diagonal = new Vector3D(boundTotal.SizeX, boundTotal.SizeY, boundTotal.SizeZ);
Point3D center = boundTotal.Location + (diagonal * 0.5);
double diam = diagonal.Length;
double radius = diam * 0.5;
最后,我沿着观察方向将相机位置移动到球体表面:
Vector3D d = camera.LookDirection;
d.Normalize();
camera.Position = center - (radius * d);
camera.Width = diam;
缩放功能未正确完成...我看不到所有场景。场景的某些部分超出了相机。或者宽度不正确并约束视图......
你能帮帮我吗? (有一个很好的教程或指出我在我的代码中犯了错误的地方)