Unity3d 图像目标丢失后应用缩放/平移

Unity3d 图像目标丢失后应用缩放/平移,unity3d,scale,translate,vuforia,epson,Unity3d,Scale,Translate,Vuforia,Epson,我有一个三维模型连接到图像目标。我想要的是根据相机的位置缩放模型,也就是说,当我靠近模型时,我希望它变大,当我远离模型时,它应该变小。我搜索了论坛并尝试了两种不同的解决方案: 解决方案1: 我创建了一个脚本并附加到三维模型: 公共级AR_胶囊:单一行为{ 浮动最小距离=0; 浮动最大距离=3; 浮动最小距离刻度=0.3f; 浮动最大距离刻度=0.1f; 无效更新() { 浮动距离=(transform.position-Camera.main.transform.position).大小; 浮点

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

公共级AR_胶囊:单一行为{
浮动最小距离=0;
浮动最大距离=3;
浮动最小距离刻度=0.3f;
浮动最大距离刻度=0.1f;
无效更新()
{
浮动距离=(transform.position-Camera.main.transform.position).大小;
浮点范数=(距离-最小距离)/(最大距离-最小距离);
norm=数学夹具01(norm);
Vector3最小刻度=Vector3.1*最大距离刻度;
Vector3最大刻度=Vector3.1*最小距离刻度;
transform.localScale=Vector3.Lerp(maxScale、minScale、norm);
}
}
解决方案2:

公共级AR_胶囊:单一行为{
公共浮子速度=10f;
无效更新()
{
transform.Translate(0,0,(-1*输入加速度.z*速度*时间增量));
}
}
当图像目标可见时,这两种解决方案都有效。但当我看不见目标时,对象会保持静止,相机位置始终为(0.0,0.0,0.0)。 你知道为什么目标丢失时物体会冻结吗? 我正在为爱普生Moverio bt-300开发并使用vuforia眼镜示例应用程序


谢谢。

我发现了问题。问题在于如何获得正确的摄像机位置。由于我使用的是眼镜
Camera.main.transform.position
将始终提供
(0,0,0)
。相反,我使用了工作正常的
Camera.main.transform.GetChild(1.transform.position)。以下是工作代码:

initialDist=Vector3.Distance(transform.position,Camera.main.transform.GetChild(1.transform.position));
距离=向量3.距离(lastMarkerpos,Camera.main.transform.GetChild(1.transform.position));
如果((transform.localScale.x*(initialDist/distance))>0.05&&(transform.localScale.x*(initialDist/distance))<2)
{
transform.localScale=newvector3(transform.localScale.x*(initialDist/distance)、transform.localScale.y*(initialDist/distance)、transform.localScale.z*(initialDist/distance));
}