OrthographicCamera,Zoom Extent

时间:2015-04-23 13:36:30

标签: c# position width zoom orthographic

我正在使用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;  
    

缩放功能未正确完成...我看不到所有场景。场景的某些部分超出了相机。或者宽度不正确并约束视图......

你能帮帮我吗? (有一个很好的教程或指出我在我的代码中犯了错误的地方)

0 个答案:

没有答案