您的位置:首页 > 移动开发 > Unity3D

unity3D EasyAR 识别模型抖动解决方案

2017-04-07 18:30 871 查看
EasyAR引擎不知道什么原因导致识别成功后,模型出现高频率抖动,问官方无解后,尝试按论坛里的朋友的方式试验即,在模型抖动的幅度在一定范围内的时候,不允许该模型抖动,但是这样会导致平移相机时,模型的移动有卡顿。如果大家有更好的改进方案,烦请告知一下本人,感谢!首先需要在  Augmenter 设置世界中心为 Augmenter然后在ImageTarge 的 EasyImageTargetBehaviour类重写Update方法具体代码如下
protected override void Update()
{
base.Update();
float myrx = 0;
myrx = this.transform.localEulerAngles.x;
while (myrx >= 360)//为了让判断条件时方便,强制把所有不在1~270以内的数字,转换为-270~270
{
myrx -= 360;
}
while (myrx <= -360)
{
myrx += 360;
}
while (myrx > 270 && 360 - myrx >= 0)
myrx = -(360 - myrx);
float myry = 0;
myry = this.transform.localEulerAngles.y;
while (myry >= 360)
{
myry -= 360;
}
while (myry <= -360)
{
myry += 360;
}

while (myry > 270 && 360 - myry >= 0)
myry = -(360 - myry);

float myrz = 0;
myrz = this.transform.localEulerAngles.z;
while (myrz >= 360)
{
myrz -= 360;
}

while (myrz <= -360)
{
myrz += 360;
}

while (myrz > 270 && 360 - myrz >= 0)
myrz = -(360 - myrz);
//关键,当模型抖动超过一定范围时,不修正模型的坐标角度,记录坐标和角度
if (((Math.Abs(this.transform.position.x - lastX) > 0.06 || Math.Abs(this.transform.position.y - lastY) > 0.06 || Math.Abs(this.transform.position.z - lastZ) > 0.06)&&
            (Math.Abs(this.transform.position.x - lastX) > 0.13 || Math.Abs(this.transform.position.y - lastY) > 0.13 || Math.Abs(this.transform.position.z - lastZ) > 0.13))||
            ( (Math.Abs(myrx - lastRX) > 3 &&Math.Abs(myry - lastRY) >3 &&Math.Abs(myrz - lastRZ) > 3)&& (Math.Abs(myrx - lastRX) > 6 || Math.Abs(myry - lastRY) > 6 || Math.Abs(myrz - lastRZ) > 6))
{
lastX = this.transform.position.x;
lastY = this.transform.position.y;
lastZ = this.transform.position.z;
lastRX = myrx;
lastRY = myry;
lastRZ = myrz;
this.transform.rotation = Quaternion.Euler(lastRX, lastRY, lastRZ);
this.transform.position = new Vector3(lastX, lastY, lastZ);
}
else//模型抖动范围过小时,修正模型坐标为上一次正确的坐标
{

this.transform.rotation = Quaternion.Euler(lastRX, lastRY, lastRZ);
this.transform.position = new Vector3(lastX, lastY, lastZ);
}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: