Ziath

Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

101 Neutral

About Ziath

  • Rank
    Newbie
  1.   I don't think so, each point needs to calculate its near points: p3-p1 p2-p1, right? so each time it runs, the normal calculation shifts up by one point.   Never mind. I need my coffee. haha. but why is it that it needs to be multiplied by 3?   // first set // second // third.. and so on float x1 = vBuffer.get(n + 0); // 0 // 1 // 2 float y1 = vBuffer.get(n + 1); // 1 // 2 // 3 float z1 = vBuffer.get(n + 2); // 2 // 3 // 4 float x2 = vBuffer.get(n + 3); // 3 // 4 // 5 float y2 = vBuffer.get(n + 4); // 4 // 5 // 6 float z2 = vBuffer.get(n + 5); // 5 // 6 // 7 float x3 = vBuffer.get(n + 6); // 6 // 7 // 8 float y3 = vBuffer.get(n + 7); // 7 // 8 // 9 float z3 = vBuffer.get(n + 8); // 8 // 9 // 10
  2. Hello all. I've made a height map program and i'm trying to calculate normals for each vertex. I've tried searching for a solution all morning but i can not figure out the error in my code. I am getting a weird tiled effect as you can see in the picture below.. I'm using triangle strips to render a 400 by 400 vertice plane. I have set all y values to 0 for this post. If anyone could help, and point out whats wrong, that would be awesome   http://imgur.com/ICeksXX   public void calculateNormals() { for (int n = 0; n < 400*200; n++) { float x1 = vBuffer.get(n + 0); float y1 = vBuffer.get(n + 1); float z1 = vBuffer.get(n + 2); float x2 = vBuffer.get(n + 3); float y2 = vBuffer.get(n + 4); float z2 = vBuffer.get(n + 5); float x3 = vBuffer.get(n + 6); float y3 = vBuffer.get(n + 7); float z3 = vBuffer.get(n + 8); float Ux = (x2 - x1); float Uy = (y2 - y1); float Uz = (z2 - z1); float Vx = (x3 - x1); float Vy = (y3 - y1); float Vz = (z3 - z1); float Nx = Uy*Vz - Uz*Vy; float Ny = Uz*Vx - Ux*Vz; float Nz = Ux*Vy - Uy*Vx; float normLength = (float)Math.sqrt(Math.pow(Nx,2) + Math.pow(Ny,2) + Math.pow(Nz,2)); if(normLength == 0){ Nx = 0; Ny = 0; Nz = 0; }else{ Nx /= normLength; Ny /= normLength; Nz /= normLength; } if ((n %2)==0){ nBuffer.put(Nx).put(Ny).put(Nz); } else{ nBuffer.put(-Nx).put(-Ny).put(-Nz); } } this.nBuffer.flip(); }