Three.js随机点列表

时间:2016-06-13 15:31:57

标签: javascript three.js

初学者问题: 我在java脚本中创建了一些随机点。我怎么能以后“称呼”他们中的每一个?我相信它被称为一个对象(所有点的列表),在那里我可以操纵它们在列表中的位置或“拉”我需要的那些。我怎么在js中做到这一点?

行是什么:

var dots = [];? 之后的评论是从另一个人那里添加的,但是我没有得到它。

如何在Three.js中的两个点(让我们说列表中的第一个和第二个 - 0和1)之间划一条线?

更复杂的问题:我在这里创建X(在本例中为20)java脚本中的随机点。我试图找出一种方法,使用3个点的组来随机创建面并形成一个网格。

嗯,不是那么随机,因为我需要一个结果,所有面都在一个连续的网格中绑定在一起。结果应该看起来像是由许多顶点构成的地形多面体。

应该应用哪些规则? enter image description here

var numpoints = 20;
var dots = []; //If you want to use for other task

for (var i = 0 ; i < numpoints ; i++) {
    var x = Math.random() * (80 - 1) + 1  //Math.random() * (max - min) + min
    var y = Math.random() * (80 - 1) + 1
    var z = Math.random() * (10 - 1) + 1

    var dotGeometry = new THREE.Geometry();
    dots.push(dotGeometry);
    dotGeometry.vertices.push(new THREE.Vector3(x, y, z));
    var dotMaterial = new THREE.PointCloudMaterial( { size: 3, sizeAttenuation: false, color: 0xFF0000 });
    var dot = new THREE.PointCloud( dotGeometry, dotMaterial);
    scene.add(dot);
}

1 个答案:

答案 0 :(得分:1)

从数组中获取随机元素:

function randChoice(array){
    return array[Math.floor(Math.random()*array.length)];
};

我知道有两种从随机点生成网格的方法: convex hullalpha shape。通过重复挑选3个随机点来创建网格几乎肯定会产生意大利面。

如果您只想生成图片中的地形,则会terrain generation from heightmap