![]()  | 
	
| 
		 
			 
			#1  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
			
			 
				
				Depth of Field
			 
			
			
			Hi all, 
		
		
		
		
		
		
		
		
	
	Recently I've played around with the viz.postprocess module a bit, the effects of which are applied to entire screen. However, I am now looking to exclude some foreground objects from the getting blurred. Is that possible? You could describe it as a sort of depth of field, although I don't really need an accurate gradual blurring effect; just blur or no blur (per object). I guess I should be looking into writing shaders, but for now that seems absolute wizardry to me  
		 | 
| 
		 
			 
			#2  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
			
			 
			
			Well, this answer may come too late for Erik, but it might still be useful for somebody. I took the depth of field GLSL code from Martins Upitis and ported it to Vizard. I left out the part for blurring the depth buffer, since it just introduced undesirable effects. 
		
		
		
			Attached is the file containing the DoFEffect ShaderEffect class (ppDoF.py.txt). I would have liked to just post the code, but it has 10.000 characters too many for the allowed limit. There's also a screenshot attached showing the effect in action. It may not be perfect, but it's a start. You can utilize the effect by saving the ppDoF.py.txt file somewhere where Vizard can find it and removing the .txt, and then importing it to your python scene file. Here's an example: Code: 
	"""
Post-Processing Demo: Depth of Field.
"""
import viz
import vizconfig
import vizfx.postprocess
# Import the script that contains the DoFEffect post-processing class.
import ppDOF as dofFX
import vizinfo
# Setup info panel
info = vizinfo.InfoPanel()
viz.go()
import vizcam
vizcam.PivotNavigate(center=[0,1,0],distance=10)
# Setup Scene
viz.add('piazza.osgb')
# clipping planes in meters
nearClip = 0.1
farClip = 200.0
# Create the DoF effect
effect = dofFX.DoFEffect(nearClip,farClip)
vizfx.postprocess.addEffect(effect)
# Make effect config window visible
vizconfig.register(effect)
vizconfig.getConfigWindow().setWindowVisible(True)
 | 
| 
		 
			 
			#3  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			That's awesome, thanks for sharing!
		 
		
		
		
		
		
		
		
		
	
	 | 
![]()  | 
	
	
| Tags | 
| depth of field, postprocess | 
| Thread Tools | |
| Display Modes | Rate This Thread | 
		
  | 
	
		
  | 
			 
			Similar Threads
		 | 
	||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| Depth buffer | andrewjworz | Vizard | 5 | 03-22-2013 03:54 PM | 
| 3D grass shader to mimic large grass field | Zhi | Vizard | 9 | 04-22-2011 03:43 PM | 
| question about field extention | cyclonseye | Vizard | 1 | 07-19-2010 04:38 PM | 
| Is an object in the user's field of view? | 4711 | Vizard | 2 | 06-09-2010 03:16 AM | 
| depth perception for a DTI 3D monitor | timbo | Vizard | 5 | 07-16-2008 01:23 PM |