0

Я использую три JS в сочетании с алгоритмом Simplex noise для создания плиткой 50x50. На данный момент я перебираю x + y и добавляю каждую плоскость. Затем я использую алгоритм Simplex noise для вычисления четырех вершин z положения плоскости.3JS процедурные плоские вершины не выравниваются

Я использую текущий х/у, как в левом верхнем Vertice ([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++; 
     } 

Ok так То будет цикл, то функция 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; 

    } 

(Краткое примечание, я понял, что я думаю, что не нужно иметь новую геометрию для каждой плоскости)

Ok и вот результат:

http://i.imgur.com/h4XNEYj.jpg

Как вы можете видеть, вершины не совпадают. Я пробовал немало вещей, но сейчас я полностью в тупике. Я уверен, что у меня есть верные вершины, заданные как TL, TR и т. Д. Можете ли вы определить, почему вершины не выстраиваются в линию?

Thankyou :) Джек

ответ

0

Хорошо, получается, я проезжал т и л в функцию неправильный путь вокруг. Doh!

:)