Unity Vuforia:尝试使用LineRenderer绘制线时,相机位置错误

时间:2018-08-06 12:07:02

标签: unity3d vuforia

您好,我是AR开发的新手,我尝试制作一个简单的脚本,该脚本将摄像机的位置和某个对象在世界上的位置,然后使用LineRenderer在它们之间绘制一条简单的线。

该对象与imagetarget绑定,并且以FIRST_TARGET设置运行(因此世界应该在imagetarget上具有其原点(0,0,0))

但是相机的位置对我来说似乎是错误的,我也不是很清楚为什么。我想要的是一条从移动(相机)屏幕的中心到使用imagetarget查看的世界上某个对象的直线。我希望我的问题有所帮助。我的脚本的代码在这里:

public class POILine : MonoBehaviour
{
//Camera
private GameObject camera;
//Gameobject of interest to point the user towards
public GameObject to;
private GameObject toParent;
private LineRenderer line;
public float lineWidthMultiplier = 0.5f;
private float distance;
public float distanceMin = 50f;
void Start ()
{
    camera = GameObject.FindGameObjectWithTag("MainCamera");
    line = this.gameObject.AddComponent<LineRenderer>();

    line.positionCount = 2;
    //Thickness of the line
    line.widthMultiplier = lineWidthMultiplier;
}

// Update is called once per frame
void Update ()
{
    TrackableBehaviour.Status toStatus = to.transform.parent.GetComponent<TrackableBehaviour>().CurrentStatus;
    if (toStatus == TrackableBehaviour.Status.TRACKED || toStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
    {
        distance = Vector3.Distance(camera.transform.position, to.transform.position);
        if (distance > distanceMin)
        {
            line.enabled = true;
            if (to != null)
            {
                //I think the error is here
                line.SetPosition(0, camera.transform.position);
                line.SetPosition(1, to.transform.position);
            }
        }
        else
        {
            line.enabled = false;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

设法使其工作,我所做的是,将一个空的游戏对象从小放置到当前正在跟踪的Imagetarget上,然后使其遵循了ARCamera变换位置。

然后代码通过渲染从该空游戏对象到感兴趣对象的直线来工作。