#1
|
|||
|
|||
stereo-projection
Hello, I have question regarding stereo-projection.
I would like to produce the image for the right and left eye separately on one client, with the aid of an nvidia-quadro-card. Furthermore I would like to use a curved-screen so I need a distortion-correction and edge-blending for a multi-channel projection. Is there a chance to do this with Viziard directly? If not, I will have to use an aditional Software-tool from another vendor, which archives this based on OpenGL- and DirectX-commands directly on the render-engine. This tool seems to have a very high-performance but there is a problem. The tool takes the openGL-output of a window and warps this into the configured projection. If I want to transform the image for the right and left eye on one Client I have to calculate the images each within separate windows. If I use the command “viz.STEREO” I get one big image with the information for the left and right eye. Is there a possibility to get two separate images in stead of one? Also I’m open to other solutions regarding this problem. |
#2
|
|||
|
|||
I've attached a sample script that renders the scene in stereo to a texture and displays it onto a tessellated quad. You can implement the _distortTexCoord function to return distorted texture coordinates, right now it simply returns undistorted coordinates.
Code:
import viz viz.go(viz.STEREO) #Initialize environment viz.clearcolor(viz.GRAY) viz.add('gallery.ive') #Hide scene so it is not rendered to frame buffer viz.MainScene.visible(0,viz.WORLD) #Distortion grid constants GRID_WIDTH = 100 GRID_HEIGHT = 100 GRID_STEP = 5 def CreateLensDistortion(eye): #Create render texture tex = viz.addRenderTexture() #Determine size of window width,height = viz.window.getSize() width /= 2 #Create node to render scene to a texture lens = viz.addRenderNode(size=[width,height]) lens.attachTexture(tex) lens.disable(eye) #Create node to displayed rendered texture to screen overlay = viz.addRenderNode() overlay.setOrder(viz.POST_RENDER) overlay.setHUD(0,GRID_WIDTH,0,GRID_HEIGHT) overlay.disable(eye) overlay.disable(viz.LIGHTING) def _distortTexCoord(x,y): #TODO: Distort texture coordinates given (x,y) vertex coordinates return x / float(GRID_WIDTH) , y / float(GRID_HEIGHT) #Create quad with distorted texture coordinates to display render texture viz.startlayer(viz.QUADS) for i in range(0,GRID_WIDTH,GRID_STEP): for j in range(0,GRID_HEIGHT,GRID_STEP): viz.texcoord(_distortTexCoord(i,j)) viz.vertex(i,j,0) viz.texcoord(_distortTexCoord(i+GRID_STEP,j)) viz.vertex(i+GRID_STEP,j,0) viz.texcoord(_distortTexCoord(i+GRID_STEP,j+GRID_STEP)) viz.vertex(i+GRID_STEP,j+GRID_STEP,0) viz.texcoord(_distortTexCoord(i,j+GRID_STEP)) viz.vertex(i,j+GRID_STEP,0) quad = viz.endlayer(parent=overlay) quad.texture(tex) #Create lens distortion for left/right eyes CreateLensDistortion(viz.RENDER_LEFT) CreateLensDistortion(viz.RENDER_RIGHT) |
#3
|
|||
|
|||
Thank you farshizoo for your reply. It seems to work very well but I had a Problem. Can you tell my why I get a complete white Screen if I use “viz.addRenderNode(size=[width,height])”? By using (size=1024,1024) it works also by viz.addRenderNode(scene = viz.MainScene). Is it ok if I use (scene = viz.MainScene)?
For my fist test I use static data’s for the texture coordinates. Have anybody a code for realtime-moving texture coordinates based on an x*x-Grid? |
#4
|
|||
|
|||
By default the render node is added to the main scene, so specifying that in your code is redundant. Your graphics card might not support render textures of size [1024,1024]. Try adding the following line after you create the render node to see if it helps:
Code:
lens.setBuffer(viz.RENDER_FRAME_BUFFER) |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
8800 ultra stereo driver | Dave | Vizard | 21 | 10-25-2009 10:25 AM |
anaglyphic stereo, backprojection & screendistance | malte | Vizard | 4 | 02-23-2008 06:48 AM |
stereo projection issue | asimbh | Vizard | 3 | 10-05-2007 10:22 AM |
quad buffered stereo? | halley | Vizard | 2 | 10-19-2005 12:28 PM |
SeeReal stereo with separate scenes | Jerry | Vizard | 2 | 10-18-2005 12:02 PM |