2016-06-13 3 views
0

초급 질문 : 자바 스크립트에서 임의의 포인트를 만듭니다. 나중에 어떻게 하나 하나씩 "호출"할 수 있습니까? 저는 이것이 Object (모든 점의 목록)라고 불리우며 목록에서 자신의 위치를 ​​조작하거나 필요한 것을 끌어낼 수 있다고 생각합니다. js에서 어떻게합니까? 대한Three.js 랜덤 포인트 목록

var dots = []; :

라인 무엇인가? 그 후 다른 사람이 덧붙인 코멘트는받지 못했습니다.

Three.js의 두 점 사이에 선을 만들려면 어떻게해야합니까? (예 : 목록의 첫 번째와 두 번째 - 0과 1)?

더 복잡한 질문 : 여기에서 Java 스크립트의 X (이 경우 20 개) 임의의 점을 만듭니다. 나는 임의로 3 점의 그룹을 사용하여 얼굴을 만들고 메쉬를 형성하는 방법을 찾아 내려고 노력 중이다.

모든 얼굴이 연속 메쉬로 묶여있는 결과가 필요하기 때문에 무작위로는 안됩니다. 결과는 여러 버텍스 포인트로 만들어진 지형 폴리 표면처럼 보입니다.

어떤 규칙을 적용해야합니까? 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); 
} 
+0

그룹화는 상면으로 간주되기 때문에 조금 더 힘듭니다 (양면 재질을 사용하지 않는 한 제 생각에는 처리가 더 힘듭니다). 상면은 축 주위로 시계 방향으로 회전해야하므로 그들을 시계 방향으로 보는 방법 ... 그건 복잡합니다. 그러나 쉽게 포인트를 만들 수 있고 (새로운 THREE.Vector3 (x, y, z)),이를 지오 메트릭에 추가 할 수 있습니다 (새로운 THREE.Geometry.vertices.push (point1, point2, ...)). 얼굴을 만들려면'새로운 THREE.Face3 (pointVertexIndex1, pointVertexIndex2, pointVertexIndex3)'(Geometry.faces로 푸시)를 사용할 수 있습니다. – somethinghere

+1

'var dots = [];'은 var dots = new Array()와 동일합니다. 의견은 의미가 없습니다. –

답변

1

는 배열에서 임의의 요소를 효율적으로 활용하려면 다음 convex hullalpha shape :

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

내가 알고있는 임의의 점에서 메쉬를 생성하는 2 방법이 있습니다. 3 개의 임의의 점을 반복하여 메쉬를 생성하면 거의 확실하게 스파게티가됩니다.

그림과 같이 지형을 생성하려는 경우 terrain generation from heightmap입니다.

관련 문제