저는 Simplex 노이즈 알고리즘과 결합 된 threeJS를 사용하여 50x50 평면의 타일 시스템을 생성합니다. 지금은 x + y를 반복하면서 각 평면을 추가하고 있습니다. 그런 다음 심플 렉스 노이즈 알고리즘을 사용하여 평면의 네 정점 z 위치를 계산합니다. I는 좌상 정점으로 현재의 X/Y를 사용하고threeJS 프로 시저 평면 정점이 정렬되지 않았습니다.
([0]), 나머지는 처음 타일을 생성하는 기능을 이하에 볼 수 그게 그래서
PerlinSimplex.noiseDetail(4,0.5);
x=0;
y=0;
while (x<32) {
while (y<32) {
l=(x*tilesize)+(tilesize/2);
t=(y*tilesize)+(tilesize/2);
//fScl= .07;
fScl= 1;
xx=x*fScl;
yy=y*fScl;
tl=Math.floor((PerlinSimplex.noise(xx,yy))*100);
bl=Math.floor((PerlinSimplex.noise(xx,yy-1))*100);
br=Math.floor((PerlinSimplex.noise(xx+1,yy-1))*100);
tr=Math.floor((PerlinSimplex.noise(xx+1,yy))*100);
addTile(t,l,tl,tr,bl,br);
y++;
}
y=0;
x++;
}
확인 루프, 다음 addTile 기능 :
이function addTile(x,y,tl,tr,bl,br) {
var geo=new THREE.PlaneGeometry(tilesize, tilesize);
geo.dynamic = true;
geos.push(geo);
var plane = new THREE.Mesh(geo, col);
plane.overdraw = true;
plane.geometry.vertices[0].z=tl;
plane.geometry.vertices[1].z=tr;
plane.geometry.vertices[2].z=bl;
plane.geometry.vertices[3].z=br;
plane.geometry.computeFaceNormals();
plane.geometry.computeVertexNormals();
plane.geometry.__dirtyNormals = true;
plane.position.x=x;
plane.position.y=y;
plane.position.z=0;
scene.add(plane);
planes.push(plane);
plane.geometry.verticesNeedUpdate = true;
// changes to the normals
plane.geometry.normalsNeedUpdate = true;
}
여기
확인하고 (빠른 메모, 나는 내가 각 비행기에 대한 새로운 형상을 가질 필요가 없습니다 생각 실현)의 결과입니다
http://i.imgur.com/h4XNEYj.jpg
보시다시피, 정점이 정렬되지 않습니다. 나는 꽤 많은 것들을 시도했지만, 지금 당황 스럽다. 꽤 올바른 꼭지점이 TL, TR 등으로 설정되어 있는지 확신합니다. 왜 꼭지점이 정렬되어 있지 않은지 확인할 수 있습니까?