爆炸或移动网格远离中心

时间:2017-08-21 08:52:23

标签: javascript three.js tesselation

我试图将所有加载的obj文件构成的网格彼此远离,以便用户可以看到所有网格。

我试图模仿以下示例

Demo

转到链接,点击UI托盘中的爆炸图标,然后移动滑块。

到目前为止我做了什么 我可以访问模型的所有网格 所以我可以对它们应用任何功能。 到目前为止,我已经通过它们并给它们随机的位置向量。

它工作正常,整个模型爆炸,每个网格都是可见的。

问题

通过给出随机位置矢量,他们显然会移动到随机位置。我想像共享链接一样移动它们。任何帮助,将不胜感激。 我是这个真棒三人的新手,我真的很想学到更多。 在此先感谢

修改 示例代码

    function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}
for(var i = 0; i < mainStand.children.length; i++)
{
    pos1 = getRandomArbitrary(1 , 2);
    pos2 = getRandomArbitrary(1 , 2);
    pos3 = getRandomArbitrary(1 , 2);
    mainStand.children[i].position.set(pos1 , pos2 , pos3);
}

其中mainStand是加载的obj模型

1 个答案:

答案 0 :(得分:1)

您要做的是从中心位置移动每个网格远离。这是通过计算网格位置和中心之间的向量,然后沿着这个方向移动网格来完成的:

var center = new THREE.Vector3(0, 0, 0);
var distanceToMove = 0.1;

for (var i = 0; i < mainStand.children.length; i++) {
    var meshPosition = mainStand.children[i].position;

    var direction = meshPosition.clone().sub(center).normalize();

    var moveThisFar = direction.clone().multiplyScalar(distanceToMove);

    mainStand.children[i].position.add(moveThisFar);
}