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); } }
相关文章推荐
- Vuforia SDK---- Vuforia+unity模型抖动和识别错误解决方案
- ASP.NET MVC3 匿名类型视图模型无法识别的解决方案
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
- 关于模型抖动解决方案
- [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
- unity3d 摄像机抖动情况和解决方案汇总
- unity3d 重叠面 图层抖动的解决方案,z-fighting.
- cifar10模型训练完,用于识别单个图片报错解决方案
- 【风宇冲】Unity3D教程宝典之Shader篇:第十六讲自定义光照模型
- unity3d模型旋转和模型导出obj
- [Unity3D]人物模型的换装
- Unity导入模型一面有贴图另一面透明的解决方案
- 微软解决方案框架 - MSF的团队模型
- Unity3D在Android编辑模式下使用lightmap出现高亮解决方案
- Mac OSX上eclipse adb 无法识别(调试)真机的解决方案
- 深度学习(二).Caffe之使用LeNet-5模型识别手写体数字
- 词向量-LRWE模型-更好地识别反义词同义词
- Unity3d与3dmax模型比例问题
- Unity3d 加载UnityEngine.UI.dll失败的解决方案(2017.2)