首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在三个js中将随机立方体转化为随机球

在三个js中将随机立方体转化为随机球
EN

Stack Overflow用户
提问于 2016-11-08 11:01:59
回答 2查看 696关注 0票数 0

所以我的问题是,我试图在three.js中创建一个随机星图,当放大后,它就变成了一个由恒星产生的行星(球体)。

目前使用的代码im随机生成我的恒星,但当我放大它是一个立方体,而不是一个球体。

代码语言:javascript
复制
    for (var i = 0;i<2000;i++){
                var mesh = new THREE.Mesh( geometry, material);
                mesh.position.x = ( Math.random() - 0.5) * 4000 * Math.random();
                mesh.position.y = ( Math.random() - 0.5) * 4000* Math.random() ;
                mesh.position.z = ( Math.random() - 0.5) * 4000* Math.random() ;

                mesh.rotation.x = Math.random();
                mesh.rotation.y = Math.random();
                mesh.rotation.z = Math.random();

                scene.add(mesh);
                objects.push(mesh);
            }

这是一个for循环,我在其中生成我的恒星,第3-6行决定了恒星的产生方式,然而,我所能做的就是再次用数学随机乘以定位,创建一个稍微不那么定义的立方体,而不是我想要的球体。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-08 11:18:03

不要像您所做的那样设置网格的x,y,z位置,而是尝试这样做

代码语言:javascript
复制
var newPos = new THREE.Vector3(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5 ).normalize().multiplyScalar( 4000 * Math.random() );
mesh.position.copy(newPos);

因此,设置一个随机向量,然后将其规范化,使其长度等于1,然后用一个随机值乘以它。简单地说:你设定了方向和距离。

有一个包含这两种解决方案的小提琴示例(我的和Adder的)

票数 0
EN

Stack Overflow用户

发布于 2016-11-08 14:07:31

把星体外的星星修剪一下:

代码语言:javascript
复制
var R=2000;
for (var i = 0;i<2000;){
    var mesh = new THREE.Mesh( geometry, material);
    mesh.position.x = ( Math.random() - 0.5) * R*2 * Math.random();
    mesh.position.y = ( Math.random() - 0.5) * R*2 * Math.random() ;
    mesh.position.z = ( Math.random() - 0.5) * R*2 * Math.random() ;

    mesh.rotation.x = Math.random();
    mesh.rotation.y = Math.random();
    mesh.rotation.z = Math.random();

    var distance_squared = mesh.position.x*mesh.position.x + mesh.position.y*mesh.position.y + mesh.position.z*mesh.position.z;

    if(distance_squared <= R*R) {
        scene.add(mesh);
        objects.push(mesh);
        ++i;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40485197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档