首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在图像目标丢失后应用缩放/平移Vuforia Unity

在图像目标丢失后应用缩放/平移Vuforia Unity
EN

Stack Overflow用户
提问于 2017-07-13 05:51:31
回答 1查看 311关注 0票数 0

我有一个3D模型附加到一个图像目标。我想要的是根据相机的位置缩放模型,也就是说,当我靠近模型时,我希望它变大,当我远离模型时,它应该变小。我搜索了论坛,并尝试了两种不同的解决方案:方案1:我创建了一个脚本并附加到3d模型:

代码语言:javascript
运行
复制
public class AR_Capsule : MonoBehaviour {

    float minimumDistance = 0;
    float maximumDistance = 3;
    float minimumDistanceScale = 0.3f;
    float maximumDistanceScale = 0.1f;  

    void Update()
    {
        float distance = (transform.position - Camera.main.transform.position).magnitude;

        float norm = (distance - minimumDistance) / (maximumDistance - minimumDistance);

        norm = Mathf.Clamp01(norm);

        Vector3 minScale = Vector3.one * maximumDistanceScale;
        Vector3 maxScale = Vector3.one * minimumDistanceScale;

        transform.localScale = Vector3.Lerp(maxScale, minScale, norm);
    }
}

解决方案2:

代码语言:javascript
运行
复制
public class AR_Capsule : MonoBehaviour {

    public float speed = 10f;

    void Update()
    {
        transform.Translate(0, 0,(-1 * Input.acceleration.z * speed * Time.deltaTime));
    }
}

当图像目标可见时,这两种解决方案都有效。但当我从视线中失去目标时,对象保持静止,相机位置始终为(0.0,0.0,0.0)。你知道为什么当目标丢失时对象会冻结吗?我正在为爱普生Moverio bt-300开发,并使用vuforia眼镜样本应用程序。

谢谢。

EN

Stack Overflow用户

发布于 2017-07-13 19:55:07

我找到问题了。问题是如何获得正确的相机位置。因为我用的是眼镜,所以Camera.main.transform.position会给always (0,0,0)。取而代之的是,我使用了Camera.main.transform.GetChild(1).transform.position,它工作得很好。以下是工作代码:

代码语言:javascript
运行
复制
initialDist = Vector3.Distance(transform.position, Camera.main.transform.GetChild(1).transform.position);

distance = Vector3.Distance(lastMarkerpos, Camera.main.transform.GetChild(1).transform.position);

if((transform.localScale.x * (initialDist / distance)) > 0.05 && (transform.localScale.x * (initialDist / distance)) < 2)
{
    transform.localScale = new Vector3(transform.localScale.x * (initialDist / distance), transform.localScale.y * (initialDist / distance), transform.localScale.z * (initialDist / distance));
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45068092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档