【发布时间】:2018-03-18 03:03:09
【问题描述】:
我必须生成大量可以单独拖动的对象。这些对象也仅限于平面形式(例如矩形或圆形)。 起初,我使用简单的 CircleGeometries,它们放置在另一个几何图形(平面)内。拖动它们也很容易,但正如预期的那样,其中大约 200000 个的性能非常非常差。 然后我决定使用点/particleSystem。平面内的定位效果很好,但我无法设法使粒子系统的各个点可拖动。我在threejs文档中找到了交互式粒子示例但仍然没有clou,如何将它们与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()旨在处理对象,而不是几何体的顶点。您必须使用示例中的信息提供自己的逻辑来管理顶点。
标签: javascript three.js particle-system