Dear list,

I'm working on a project that uses Crystal Space that you may find 
interesting.

I'm trying to setup a stereoscopic film projection for an open house at 
work. The general principles of this projection technique is well 
described in the Stereovision article of wikipedia 
(http://en.wikipedia.org/wiki/Stereovision). In practice, I'm aiming for 
a setup similar to what the Geowall consortium has been doing 
(http://geowall.geo.lsa.umich.edu/intro.html). The idea is to use two 
projectors and an optical setup to have each of our two eyes see one of 
the two projected images. If the two images correspond to two different 
perspective just like our eyes would see, we achieve an impression of 3D.

I plan on using crystal space as the content of the projection. I need 
to draw in a window two views side by side of the world from two cameras 
pointing in the same direction but separated by ~75mm. I've started 
modifying the split mode of walktest for that purpose. Using the patch 
below, I've slaved the position of the camera in the other view to the 
camera in the active view. Now, if you switch to split view with 'v', 
you have two images showing the same scene with a slightly different 
perspective. Those who know how to see seterograms, should be able to 
enjoy the result. I find it easier to see when adjusting the size of the 
CS window.

Once I have these two views side by side, I plan on sending half of a 
window to one projector and the other half to the other. Each projector 
will then send a perspective. I'll let you know how the rest of the 
setup went. Big thanks to CS for the wonderful engine.

-Gellule



Stereovison patch to walktest:

Index: CS/apps/walktest/walktest.cpp
===================================================================
--- CS/apps/walktest/walktest.cpp    (revision 30705)
+++ CS/apps/walktest/walktest.cpp    (working copy)
@@ -765,6 +765,13 @@
 
   float delta = float (elapsed_time) / 1000.0f;
   collider_actor.Move (delta, speed, velocity, angle_velocity);
+  if(Sys->split != -1)
+  {
+    int other = (Sys->split+1)%2;
+    
Sys->views[other]->GetCamera()->SetTransform(Sys->view->GetCamera()->GetTransform());
+    
Sys->views[other]->GetCamera()->SetSector(Sys->view->GetCamera()->GetSector());
+    Sys->views[other]->GetCamera()->Move(csVector3(0.08, 0, 0));
+  }
 }
 
 void perf_test (int num)

 

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]

Reply via email to