Jump to content

  • Log In with Google      Sign In   
  • Create Account

#ActualZiath

Posted 01 June 2013 - 09:12 PM


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 tongue.png

 

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();
	}
	

#3Ziath

Posted 01 June 2013 - 08:39 PM


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 tongue.png

 

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();
	}
	

#2Ziath

Posted 01 June 2013 - 08:38 PM


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 :P

 

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();
	}
	

#1Ziath

Posted 01 June 2013 - 08:38 PM

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 :P


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();
	}
	

 


PARTNERS