有人在3D模型上使用Hammer.js Pinch Events有成功吗?

时间:2018-04-05 14:33:11

标签: javascript augmented-reality hammer.js

我在增强现实项目中使用Hammer并使用Hammer.js成功移动,旋转和放置3D模型(JSON)。

我试图使用捏合事件来上下缩放对象,但我对模型的行为提出了相当大的挑战。

在控制台中,基于手势似乎对象的比例是正确的,但在应用程序中,需要几个手势才能使模型起作用,然后它会快速颠倒颠倒。

我无法让模型变小,看起来模型对我的捏合手势没有反应。

    scaleSpeed: { default: 1 }
    onPinchIn: function (event) {
        this.scene.emit('objectScaling')
        const scaleDelta = this.initialHammerScale + (event.scale * this.data.scaleSpeed)

    this.modelScaleRig3D.scale.set(
      (this.modelScaleRigAtScaleStart.x - scaleDelta),
      (this.modelScaleRigAtScaleStart.y - scaleDelta),
      (this.modelScaleRigAtScaleStart.z - scaleDelta)
    )
   }

onPinchOut: function (event) {
    const scaleDelta = this.initialHammerScale + (event.scale * this.data.scaleSpeed)
    this.modelScaleRig3D.scale.set(
      (this.modelScaleRigAtScaleStart.x + scaleDelta),
      (this.modelScaleRigAtScaleStart.y + scaleDelta),
      (this.modelScaleRigAtScaleStart.z + scaleDelta)
    )
    }

onPinchStart: function (event) {
    this.modelScaleAtScaleStart = this.modelRig.getAttribute('scale')
    this.initialHammerScale = event.scale   
  },

有没有人获得成功,并且有使用3D模型的锤子捏事件的技巧?

1 个答案:

答案 0 :(得分:0)

来自Getting Started documentation

  

默认情况下,它会添加一组轻击,双击,按下,水平平移和滑动,以及多点触控捏合和旋转识别器。 默认情况下禁用捏合和旋转识别器,因为它们会阻止元素,但您可以通过调用来启用它们:

     

hammertime.get('pinch').set({ enable: true });

     

hammertime.get('rotate').set({ enable: true });