我需要计算3D对象的正确位置,该对象正显示在UI中的RawImage上。如果将UI图像放在屏幕中央,则可以完美地进行计算;如果在UI画布上移动图像,则得到的结果将偏移一定的偏移量,具体取决于移动的侧面。我已经截取了几个截图,橙色的一面是我的3D四边形,白色的正方形只是一个调试图像的地方,应该计算我的点。
我的设置是这样的: -指向3D四边形的世界相机 -带有专用透视相机的ui画布(屏幕空间-相机) -我的ui画布中的一个面板,显示3D四边形
代码:
var worldPoint = t.Value.MeshRenderer.bounds.min; //t.Value is the 3D quad
var screenPoint = worldCamera.WorldToScreenPoint(worldPoint);
screenPoint.z = (baseCanvas.transform.position - uiCamera.transform.position).magnitude; //baseCanvas is the UI canvas
var pos = uiCamera.ScreenToWorldPoint(screenPoint);
debugger.transform.position = pos; //debugger is just the square image used to see where my calculated point is landing
我尝试了多种方法,例如:
var screenPoint = worldCamera.WorldToScreenPoint(t.Value.MeshRenderer.bounds.min);
Vector2 localPoint;
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, screenPoint, uiCamera, out localPoint); //rectTransform is my UI panel
debugger.transform.localPosition = localPoint
但是我总是得到相同的结果,考虑到偏移量,如何进行正确的计算?