javascript - Three.js 随机点列表

标签 javascript three.js

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

这行是什么:

vardots = []; 为? 之后的评论是另一个人添加的,我不明白。

如何在 Three.js 中的两点之间画一条线(假设列表中的第一个和第二个 - 0 和 1)?

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

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

应该应用什么规则? 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);
}

最佳答案

从数组中获取随机元素:

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

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

如果你只是想生成如图所示的地形,有terrain generation from heightmap

关于javascript - Three.js 随机点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793750/

相关文章:

javascript - SyntaxError : Cannot use import statment without a module, 类型错误 [ERR_UNKNOWN_FILE_EXTENSION]:Catch 22

javascript - 函数内的范围问题

javascript - 是什么导致我的测试中出现 "Uncaught Error: write after end"?

three.js - Raycaster.intersectObjects() 不返回任何内容?

editor - 三.js在线编辑器导出法线图

javascript - fontloader 和 textgeometry 在 threejs 中不起作用

javascript - Bootstrap 3 Typeahead 不出现

javascript - 如何使用 svelte :global() with sass/scss?

three.js - 在 three.js 中沿 raycaster 的方向画线

html - 使用 clojurescript 在 HTML 页面上渲染 Three.js 场景