【发布时间】:2019-05-21 20:50:24
【问题描述】:
我有不同类型的物体,它们尺寸可变,并且放置在场景中的不同位置。我想用硬编码旋转(北旋转)的相机聚焦/显示每个对象。与特定的相机旋转一样,我想将它完全显示到相机和屏幕中心的对象聚焦。出于这个原因,我写了这段代码sn-p 1
使用获取特定焦点对象后面的位置
TransformPoint使用
bound中最大的extent提供高程,以便显示对象的最大面积。-
分配
position和固定的rotationVector3 dest = destination.transform.TransformPoint(0, 0, behindPositionDistance);// GetBehindPosition(destination.transform, behindPositionDistance, elevation); Debug.Log(dest); float eleveMax = Mathf.Max(destination.GetComponent<MeshRenderer>().bounds.extents.x, destination.GetComponent<MeshRenderer>().bounds.extents.z); dest = new Vector3(dest.x, eleveMax, dest.z); camera.transform.position = dest; camera.transform.rotation = lookNorth;
但问题是,它不能准确地处理所有对象,因为每个对象都处于不同的位置和维度。我想使用相机聚焦整个对象,但不改变旋转。
【问题讨论】:
-
您可以只在摄像机 fov 的外部边界处对与对象的交点进行光线追踪。如果没有交集,则对象是完全可见的。我认为这将是一种更安全的方式来实现您想要的结果。