0
初学者问题: 我在java脚本中创建了一些随机点。我怎样才能稍后“打电话”他们中的每一个?我相信它被称为对象(所有点的列表),我可以在列表中操纵它们的位置或“拉”我需要的位置。我如何在js中做到这一点?Three.js随机点列表
什么是行:
var dots = [];
呢? 之后的评论是从另一个人添加的,我不明白。
如何在Three.js中的两点之间(假设第一个和第二个来自列表 - 0和1)?
更复杂的问题:我在这里创建X(在这种情况下20)Java脚本中的随机点。我试图找出一种方法来随机创建使用3个点组并形成网格的面。
好吧,不是那么随意,因为我需要一个结果,其中所有面都以连续的网格结合在一起。结果应该看起来像一个由多个顶点构成的地形多面体。
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);
}
由于什么被认为是一个upface(除非你使用双面材料,这是更强烈的处理我认为),一个正面是围绕轴线顺时针旋转,所以你将不得不找到一个以顺时针方向检查它们的方式......这很复杂。但你可以很容易地创建点('new THREE.Vector3(x,y,z)'),将它们添加到几何体(new THREE.Geometry.vertices.push(point1,point2,...))。要创建面孔,可以使用'new THREE.Face3(pointVertexIndex1,pointVertexIndex2,pointVertexIndex3)'(push to Geometry.faces)。 – somethinghere
'var dots = [];'与'var dots = new Array()'相同。评论是没有意义的。 –