三个js raycaster不返回交集

Diederik Kroondijk

对Three.js来说是非常新的东西,并且通常会进行编码,所以请耐心等待。我正在尝试实现一些可拖动的多维数据集,类似于threejs.org上的示例,但是我的代码的特定部分中的raycaster出现了问题。出于某种原因,选择我的立方体后,光线投射器不会返回与我的平面几何形状的交点。下面是特定的代码块。任何帮助将非常感激。

function onDocumentMouseMove(event) {
    event.preventDefault();

    mouse.x = ((event.clientX - 70)/renderer.domElement.width) * 2 - 1;
    mouse.y = ((event.clientY - 50)/renderer.domElement.height) * 2 + 1;

    var raycaster = new THREE.Raycaster();
    raycaster.setFromCamera( mouse, camera );

    if (SELECTED) {
      var intersects = raycaster.intersectObject(plane);
      SELECTED.position.copy( intersects[ 0 ].point.sub( offset ) );
      return;
    }

    var intersects = raycaster.intersectObjects(objects);
    if (intersects.length >  0) {
      INTERSECTED = intersects[0].object;
      plane.position.copy(INTERSECTED.position);
      plane.lookAt(camera.position);
    }

    render();
  };

以下是用于选择多维数据集的mouseDown事件:

function onDocumentMouseDown(event) {
    event.preventDefault();

    mouse.x = ( ( event.clientX - 70 ) / renderer.domElement.width ) * 2 - 1; 
    mouse.y = - ( ( event.clientY - 50 ) / renderer.domElement.height ) * 2 + 1;

    var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5);
    vector = vector.unproject(camera);
    var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
    var intersects = raycaster.intersectObject(cube);

    if (intersects.length > 0) {    
      intersects[0].object.material.color.setHex(0xff0000);    
      SELECTED = intersects[ 0 ].object;
      var intersects = raycaster.intersectObject( plane );
      offset.copy( intersects[ 0 ].point ).sub( plane.position );    
    }

    render();
  };
Diederik Kroondijk

找出我的错误。我在onMouseMove函数中缺少mouse.y的“-”。

mouse.x = ((event.clientX - 70)/renderer.domElement.width) * 2 - 1;
mouse.y = -((event.clientY - 50)/renderer.domElement.height) * 2 + 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

三个js顶点不更新

来自分类Dev

三个js纹理偏移不更新

来自分类Dev

检查两个列表的交集是否有效,不需要返回交集本身

来自分类Dev

检查两个列表的交集是否有效,不需要返回交集本身

来自分类Dev

如何在不倾斜三个js的情况下向上移动相机

来自分类Dev

在维恩图中填充三个或更多集合的交集

来自分类Dev

Three.js raycaster交集

来自分类Dev

bootstrap nav-后三个<li>不链接

来自分类Dev

Apache HttpClient 不执行第三个请求

来自分类Dev

三个.indexOf不匹配-返回另一个结果

来自分类Dev

如果三个相邻值匹配,则返回键

来自分类Dev

检索每个模型并返回三个值

来自分类Dev

三个JS RawShaderMaterial

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

Python:在2d列表中找到一个单词,然后返回交集,即该单词在列表中的行索引和列索引

来自分类Dev

函数返回一个包含两个反向副本而不是三个的列表

来自分类Dev

根据三个观测值的交集将观测值输入向量的程序

来自分类Dev

如果第二个或第三个表为空,则LINQ Join不返回结果

来自分类Dev

通过映射第三个表查询联接两个表,而无需从Oracle中的第三个表返回所有记录

来自分类Dev

三个js raycasting OBJ

来自分类Dev

球形的三个js缓冲几何

来自分类Dev

三个js键盘旋转

来自分类Dev

三个JS线框球形SVG

来自分类Dev

三个js raycasting OBJ

来自分类Dev

三个JS遍历的回调

来自分类Dev

三个js,块纹理模糊

来自分类Dev

Skydome内的三个js Raycast

来自分类Dev

Lodash适用于两个对象,但如果包含三个对象,则返回null

Related 相关文章

  1. 1

    三个js顶点不更新

  2. 2

    三个js纹理偏移不更新

  3. 3

    检查两个列表的交集是否有效,不需要返回交集本身

  4. 4

    检查两个列表的交集是否有效,不需要返回交集本身

  5. 5

    如何在不倾斜三个js的情况下向上移动相机

  6. 6

    在维恩图中填充三个或更多集合的交集

  7. 7

    Three.js raycaster交集

  8. 8

    bootstrap nav-后三个<li>不链接

  9. 9

    Apache HttpClient 不执行第三个请求

  10. 10

    三个.indexOf不匹配-返回另一个结果

  11. 11

    如果三个相邻值匹配,则返回键

  12. 12

    检索每个模型并返回三个值

  13. 13

    三个JS RawShaderMaterial

  14. 14

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  15. 15

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  16. 16

    Python:在2d列表中找到一个单词,然后返回交集,即该单词在列表中的行索引和列索引

  17. 17

    函数返回一个包含两个反向副本而不是三个的列表

  18. 18

    根据三个观测值的交集将观测值输入向量的程序

  19. 19

    如果第二个或第三个表为空,则LINQ Join不返回结果

  20. 20

    通过映射第三个表查询联接两个表,而无需从Oracle中的第三个表返回所有记录

  21. 21

    三个js raycasting OBJ

  22. 22

    球形的三个js缓冲几何

  23. 23

    三个js键盘旋转

  24. 24

    三个JS线框球形SVG

  25. 25

    三个js raycasting OBJ

  26. 26

    三个JS遍历的回调

  27. 27

    三个js,块纹理模糊

  28. 28

    Skydome内的三个js Raycast

  29. 29

    Lodash适用于两个对象,但如果包含三个对象,则返回null

热门标签

归档