3

在 THREE.js 中,我试图根据鼠标位置在屏幕上移动对象。在看了一些例子之后,它似乎很困难。这是我从一个示例中借来的一些代码,这些示例主要满足我的需要:

function mouseMove(e){
    mouse2D.x = ( (e.pageX-canvas.offsetParent.offsetLeft) / canvas.clientWidth ) * 2 - 1;
    mouse2D.y = - ( (e.pageY-canvas.offsetParent.offsetTop) / canvas.clientHeight ) * 2 + 1;

    if (selected) {
      var ray = projector.pickingRay(mouse2D, PGL._camera).ray;
      var targetPos = ray.direction.clone().addSelf(ray.origin);
      targetPos.subSelf(_offset);

      obj.position.x = initPos.x + targetPos.x;
      obj.position.y = initPos.y + targetPos.y;
    }
  }

这适用于在场景中移动直接子级。问题是试图移动具有旋转和/或缩放的父对象的对象。你会怎么处理呢?将对象matrixRotationWorld应用于运动可能吗?我仍在努力解决这些问题。任何帮助表示赞赏。

4

1 回答 1

0

请参阅这些示例,它们可以帮助您:

http://mrdoob.github.com/three.js/examples/misc_controls_fly.html

或者

http://mrdoob.github.com/three.js/examples/webgl_interactive_voxelpainter.html

于 2013-01-21T10:26:40.607 回答