这是我想要实现的(一个可修改的多边形,红色圆圈表示顶点),我希望能够动态地构建多边形。
初始化几何图形时
var geometry = new THREE.Geometry();
geometry.vertices.push(point);
geometry.vertices.push(point);
var line = new THREE.Line(geometry, new THREE.LineBasicMaterial({}));
第一次点击有效,可以在1和2之间绘制一条直线,但是当第二次点击时不会添加第三条线到数组中。WebGL似乎需要缓冲点。
如果我像这样预定义顶点,则可以绘制两条线(第三次点击)
var geometry = new THREE.Geometry();
for (var i = 0; i < 4; i++) {
geometry.vertices.push(point);
}
var line = new THREE.Line(geometry, new THREE.LineBasicMaterial({}));
但这不是一个好的解决方案,因为我不知道用户想添加多少个顶点,把大数字赋给它也是无意义的,因为我还需要多次循环。
有没有其他方法可以解决这个问题?
MAX_POINTS = 500;
的意思是,如果用户创建的点超过了500个,程序就会崩溃,对吗?最好的情况是我不需要预定义要添加多少个点。虽然你的解决方案比我的更好,因为BufferGeometry
更节省内存,并且使用更少的绘制调用。 - user3960875lineDistance
来适应LineDashedMaterial
。 - WestLangley