将“轨道控制”目标设置为“摇摄”结束位置

问题描述

我正在将Orbit控件与AFrame一起使用。当我平移对象,然后使用鼠标左键旋转它时,它不会围绕其新中心旋转。它仍然绕着0,0旋转。

如何实现为Orbit控件设置新目标,以便在用户平移然后旋转/缩放时,相机应围绕新目标旋转和缩放?

我是AFrame和Three js的新手。到目前为止,这是我在有限的知识基础上尝试过的。

  var entity_3dModel = document.createElement("a-entity");
  scene.appendChild(entity_3dModel);
  entity_3dModel.setAttribute("modify-materials","");
  entity_3dModel.setAttribute("click","");
  entity_3dModel.setAttribute("gltf-model",'url(' + models_Path[current_Learning_Number] + ')');
  entity_3dModel.setAttribute('scale',"1 1 1");
  entity_3dModel.setAttribute("id","Model");
  entity_3dModel.setAttribute("shadow","cast : true");
  entity_3dModel.setAttribute("position","0 0 0");
  entity_3dModel.setAttribute("class","clickable");
  entity_3dModel.setAttribute("cursor","rayOrigin: mouse");
  entity_3dModel.setAttribute("debug-cursor","true");
  entity_3dModel.setAttribute("foo","");

  AFRAME.registerComponent("foo",{
    init: function() {

      this.el.addEventListener('mousedown',(captureEvent) => {
        $(document).on("contextmenu",this.el.object3D,function(e) {
          if (captureEvent.detail.intersection)
            PannedPointStart = new THREE.Vector3(captureEvent.detail.intersection.point.x,captureEvent.detail.intersection.point.y,captureEvent.detail.intersection.point.z);
          console.log('PannedPointStart' + PannedPointStart);
          e.preventDefault();
        });
      });

      this.el.addEventListener('mouseup',(captureEventup) => {
        $(document).on("contextmenu",function(e) {
          if (captureEventup.detail.intersection)
            PannedPointEnd = new THREE.Vector3(captureEventup.detail.intersection.point.x,captureEventup.detail.intersection.point.y,captureEventup.detail.intersection.point.z);
          //console.log('Context Menu event has fired!' + captureEventup.detail.intersection.point.x);
          console.log('PannedPointEnd' + PannedPointEnd);
          if (PannedPointStart != PannedPointEnd)
            ChangeTarget(PannedPointEnd);
          e.preventDefault();


        });
      });


    },remove: function() {
      this.el.remove('mousedown');
      this.el.remove('mouseup');
    }
  });

  function ChangeTarget(centerPoint) {

    document.querySelector('#camera').setAttribute('orbit-controls','target',centerPoint);

  }

此操作一次或两次,然后停止。可能是什么原因? 还有其他更简单的方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)