0

저는 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 등으로 설정되어 있는지 확신합니다. 왜 꼭지점이 정렬되어 있지 않은지 확인할 수 있습니까?

답변

0

확인

감사합니다 :) 잭, 내가 잘못된 방향으로 주위의 기능에 t 및 L을 통과했다 밝혀졌습니다. 도!

: