我需要生成大量的物体,每个物体都可以单独拖动。这些物体只能限定在平面内(例如矩形或圆形)。 起初,我使用简单的CircleGeometries,在另一个几何体(平面)中放置它们。拖拽它们也非常容易,但是预期的性能对于约20万个物体来说非常差。 然后,我决定使用点/粒子系统。在平面内定位非常好,但我无法将粒子系统的各个点做成可拖动的状态。我在threejs文档中找到了交互式粒子示例,但仍然不知道如何将它们与dragcontrols相结合。 下面是我的代码,用于创建粒子系统并在一个平面上填充这些点:
//Create a plane geometrie, that is later filled with points
var geometry2 = new THREE.CircleGeometry(30,32);
var material2 = new THREE.MeshBasicMaterial( {color: 0x666666, side: THREE.DoubleSide, wireframe:true} );
var mat1 = new THREE.MeshBasicMaterial( {color: 0x00ff00, wireframe:false} );
var plane1 = new THREE.Mesh(geometry2, material2);
geometries.push(plane1); //push to object for draggable elements
scene.add(plane1);
var positionsX;
positionsX = inGeometry.inGeometry(plane1.geometry, 200000); // get positions for points inside plane1
var geometry = new THREE.Geometry();
for (var i = 0; i < positionsX.length; i++) {
geometry.vertices.push(positionsX[i]); //add positions to vertices
}
console.log(geometry);
//Create Particle system
var material = new THREE.PointsMaterial({ size:0.02, color: 0xffffff });
particleSystem = new THREE.Points(geometry, material);
scene.add(particleSystem);
console.log(particleSystem);
var dragGeo = new DragControls(geometries, camera, container); //dragging
请问有人可以帮忙吗? 谢谢
THREE.DragControls()
旨在与对象一起使用,而不是几何体的顶点。您需要提供自己的逻辑来管理顶点,使用示例中提供的信息。 - prisoner849