|  | 
|  | 
| 
			 
			#1  
			
			
			
			
			
		 | |||
| 
 | |||
| 
				
				Extracting high precision depth map from scene
			 
			
			Hello, I'm new to using Vizard, and attempting to extract high-precision depth data from a scene. At the moment, to do this, I am using: Code: depth = viz.addRenderTexture(format=viz.TEX_DEPTH_32)
float_buff = depth.saveToBuffer('<raw>', dataType=viz.GL_FLOAT)
	
size = depth.getSize()
w = size[0]
h = size[1]
	
d_float = np.fromstring(float_buff, np.float32, w*h)
	
np.save('depth.npy', d_float.reshape((w, h)))This allows me to save the values of the depth render texture to a numpy array... but I have a few questions: 
 Any guidance would be appreciated. Thanks, Joe | 
| 
			 
			#2  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			The depth buffer on GPUs is non-linear, in order to provide greater precision to nearby objects. You can convert a raw depth buffer value to linear and world units using the following code: Code: z = <raw depth buffer value> znear = viz.MainWindow.getNearClip() zfar = viz.MainWindow.getFarClip() # Compute normalized linear depth value (0-1 range) linear = (2 * znear) / (zfar + znear - z * (zfar - znear)) # Compute world depth value (distance from view plane) world = (2.0 * znear * zfar) / (zfar + znear - (2.0 * z - 1.0) * (zfar - znear)) | 
| 
			 
			#3  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Hi Jeff, I forgot to reply to this at the time -- but thank you for your answer, it solved the issue for me. | 
|  | 
| 
 | 
 | 
|  Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| Copying Scene? | Brett Lindberg | Vizard | 0 | 08-28-2009 11:56 PM |