away3d4beta工具类Drag3D拖动子对象的问题

Drag3D是个好东西,初始化定义好拖放的平面、被拖放的物体、以及VIEW,即可实现3D的拖放。

但是如果拖动的3D对象A是另一个3D对象B的子对象(child),同时B不在场景中心的话,DRAG对象A,是会产生不准确的偏移的。

因为Drag3D是根据被拖动对象的自身坐标来运算的,所以当被拖动对象的自身坐标和全球坐标不重合的时候,就会产生一定的偏移,这种偏移的XYZ距离值,其实就是父容器B的XYZ坐标。我们只要把A被改变后产生偏移错误的坐标,再做一次处理,减去父容器B的xyz坐标,即可实现准确的拖动。

那么,如果这个被拖动的对象是层层嵌套中的对象怎么办呢?难道要递归地一层层获取上层的父容器XYZ坐标,每获取一个父容器就做一次修正吗?

完全没必要,只要做如下处理:

_object3d.x -= _object3d.scenePosition.x - _object3d.x;
_object3d.y -= _object3d.scenePosition.y - _object3d.y;
_object3d.z -= _object3d.scenePosition.z - _object3d.z;

被拖动物体的全球坐标减去自身坐标,就可以一次获取物体的总偏移值了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值