创建可以从末端修改的行

时间:2015-07-06 15:36:30

标签: three.js

所以我想创建一些可以从连接它们的点修改的行。

初始状态的一个例子

enter image description here

第一个向下移动,第二个向上移动,第三个向下移动。

在实施方面,我目前有两个网格。第一个伸出来,它将覆盖从起点到下一个点的距离,第二个标记起点。

var meshLine = new THREE.Mesh(boxGeometry, material);
meshLine.position.set(x,y,z);
meshLine.scale(1,1,distancetonextpoint);

var meshPoint = new THREE.Mesh(sphereGeometry, material);
meshPoint.position.set(x,y,z);
meshPoint.scale(2,2,2);

我想要的是当用户拖动圆形点时,其他线会拉伸或相应于被拖动的位置改变它们的位置。

是否有一些更合理的解决方案,因为我觉得我的不太好和干净。为了完成这项运动,我必须做很重的事情。

我还看了this example看起来非常好但无法将其集成到我的系统中。

1 个答案:

答案 0 :(得分:1)

你的意思是你需要通过拖动它们的顶点(这里是一条线)来编辑对象的几何体。

  1. 对象的顶点无法自行拖动,因此您需要遍历几何体并在每个顶点位置创建小球体;
  2. 你设置了一个raycaster来挑选那些球体,如例子所示;
  3. 您的屏幕是2D,因此要在3D中拖动对象,您需要一个垂直于屏幕的表面,该表面与球体位置相交。为此,您在顶点位置设置一个不可见的平面,让它看着相机;
  4. 一旦你可以正确地拖动球体,你告诉对象(你的线)上的相应顶点它们必须保持与球体相同的位置;
  5. geometry.verticesNeedUpdate=true结束。
  6. 你有新的几何

    • 有关拣选对象的详细信息,请查看官方拣货对象'示例draggable cubes
    • This example展示了如何使用它来编辑对象

    评论是否需要更多解释