javascript - THREE.js - 将粒子均匀地放置在对象的面上而不是顶点上

标签 javascript three.js

目前,我已经设法创建了一个粒子云,其中的粒子出现在我导入的对象的每个顶点上。然而,我试图让粒子首先定位在物体的平面上而不是它们之间的点上,然后将粒子均匀分布在这些面上。

基本上我试图让我的 3d 对象由粒子制成

这是我目前所拥有的:

var loader = new THREE.JSONLoader();
loader.load('./resources/model.json', function (geometry, materials) {

    var material = new THREE.MeshFaceMaterial(materials);
    var model = new THREE.Mesh(geometry, material);

    var particleCount = geometry.vertices.length,
        particles = new THREE.Geometry(),
        pMaterial = new THREE.PointCloudMaterial({
            color: 0xFFFFFF,
            size: 1
        });

    for (var p = 0; p < particleCount; p ++) {
        particle = model.geometry.vertices[p];
        particles.vertices.push(particle);
    }
    particleSystem = new THREE.PointCloud(particles, pMaterial);
    particleSystem.position.set(0, -100, 0)
    particleSystem.scale.set(100,100,100)
    scene.add(particleSystem);

});

编辑 - 1

我附上了一张图片来尝试描述我目前拥有的东西以及我想要实现的目标。它以立方体的正面为例。我的对象将有更多的方面。

enter image description here

最佳答案

编辑:之前的答案已过时。

您现在可以使用 MeshSurfaceSampler 在网格表面生成随机样本。

MeshSurfaceSampler.js 文件位于 examples/jsm/math 目录中。

three.js r.128

关于javascript - THREE.js - 将粒子均匀地放置在对象的面上而不是顶点上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289577/

相关文章:

javascript - 函数只返回第一个值

three.js - 来自数组的 WebGL 高度图?

javascript - GLTF加载对象拖拽使用三个js

javascript - 在 Three.js 中更改单击边缘的颜色

javascript - 获取默认操作以便稍后在 javascript 中使用

javascript - 使用 lodash.groupBy() 标准化对象

javascript - 如何使用 "use strict"模式创建链式函数?

MediaWiki 中的 3D 对象查看器?

javascript - 三.js : Pass text instead of particles into particle cloud

javascript - 如何将参数传递给 eventListener 函数并稍后删除该函数?