如何通过Unity3d中的屏幕截图点坐标正确获取对象?

时间:2017-02-05 22:51:02

标签: unity3d

我想做下一个:

  • 从相机获取屏幕截图
  • 使用python脚本处理它并找到一些要点
  • 为每个点 - 找到投射到这一点的对象

获取代码效果很好的截图。 Python脚本输出有下一个视图:

x=X1 y=Y1 ... \n
x=X2 y=Y2 ... \n

其中0 <= X1&lt;屏幕截图宽度,0&lt; = Y1&lt;截图高度。

E.g。在调试模式下,我可以看到下一张图片:screenshot

如您所见 - 位于椅子/桌子投影上的部分点。

我需要获取这个chair / table对象(每个对象都附加了BoxCollider)。 我尝试使用camera.ScreenPointToRayPhysics.Raycast获取光线,但输出错误:

private void ApplyClassTextures()
{
    var screenshot = GetComponent<Screenshoter>().MakeScreenshot();
    Debug.Log(screenshot);
    var map = GetComponent<Scenemap>().MakeMap(screenshot);
    var objectContours = new Dictionary<GameObject, List<Scenemap.MapContour>>();
    var camera = GetComponent<Camera>();
    foreach (var item in map)
    {
        var ray = camera.ScreenPointToRay(new Vector3(item.X, item.Y, 0.0f));
        var rayHit = new RaycastHit();
        if (Physics.Raycast(ray, out rayHit, raycastHitDistance))
        {
            var obj = rayHit.collider.gameObject;
            if (!objectContours.ContainsKey(obj))
            {
                Debug.Log(obj);
                objectContours.Add(obj, new List<Scenemap.MapContour>());
            }
            objectContours[obj].Add(item);
        }
    }
}

在那里,我可以看到很少的地板/墙面和一把椅子,但没有其他和桌子。

0 个答案:

没有答案