2016-10-29 6 views
0

私は今日(惑星には歪んだ/不規則なエッジがあります)this codepenと同様にthree.jsのメッシュをランダム化しようとしています。私はcodepenでこれを再現しようとしました(前にリンクされたcodepenからちょっとしたコードスニペットをコピーして)、私のものに合うようにパラメータを変更しました(56行目を見てください)。あなたが見ることができるように、望ましい効果は現れず、コードを壊します。three.jsメッシュの頂点の長さをランダム化するにはどうすればよいですか?

これは動作しません一部です:

var noise = randomRange(1,5); 
for(var i=0; i<Ico.vertices.length; i++){ 
     var v = Ico.vertices[i]; 
     v.x += -noise/2 + Math.random()*noise; 
    v.y += -noise/2 + Math.random()*noise; 
    v.z += -noise/2 + Math.random()*noise; 
    }; 

は、私がここで考慮されていませんでしたものはありますか?どんな助けでも大歓迎です。

+1

最初に「randomRange」関数が定義されていません。 – Sgnl

+0

そうですね、ごめんなさい、ここに固定http://codepen.io/Maharkus/pen/EgBNRz – Maharkus

答えて

2

これはあなたの問題にアプローチする方法である。

function randomRange(min,max) { 
    return Math.floor(Math.random()*(max-min+1)+min); 
} 

//Geometry 

var geometry = new THREE.IcosahedronGeometry(25, 3); 

var noise = randomRange(1,5); 
for(var i=0; i<geometry.vertices.length; i++){ 
    var v = geometry.vertices[i]; 
    v.x += -noise/2 + Math.random()*noise; 
    v.y += -noise/2 + Math.random()*noise; 
    v.z += -noise/2 + Math.random()*noise; 
}; 

//Meshes 

var Ico = new THREE.Mesh(geometry, cyanMat); 
Ico.rotation.z = 0.5; 
+0

本当にありがとう! – Maharkus

1

代わりの

var Ico = new THREE.Mesh(
new THREE.IcosahedronGeometry(25,0), cyanMat); 
Ico.rotation.z = 0.5; 

function randomRange(min,max) { 
    return Math.floor(Math.random()*(max-min+1)+min); 
} 

var icoGeom = new THREE.IcosahedronGeometry(25,1); 
var noise = randomRange(5,10); 
console.log(icoGeom); 
icoGeom.vertices.forEach(function(vertex){ 
    console.log(vertex); 
    vertex.x += Math.random()*noise - noise/2; 
    vertex.y += Math.random()*noise - noise/2; 
    vertex.z += Math.random()*noise - noise/2; 
}); 

を入れて、はい、あなたは)ペースト/ randomRangeを(コピーするのを忘れ関数。

+0

ええ、私は実現しました..あなたの助けをありがとう! – Maharkus

関連する問題