Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1767 - in trunk: Interface Model/Cameras


Chronological Thread 
  • From: bigler@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1767 - in trunk: Interface Model/Cameras
  • Date: Mon, 8 Oct 2007 17:13:11 -0600 (MDT)

Author: bigler
Date: Mon Oct  8 17:13:09 2007
New Revision: 1767

Modified:
   trunk/Interface/Camera.h
   trunk/Interface/CameraPath.cc
   trunk/Interface/CameraPath.h
   trunk/Model/Cameras/PinholeCamera.cc
   trunk/Model/Cameras/PinholeCamera.h
   trunk/Model/Cameras/ThinLensCamera.cc
   trunk/Model/Cameras/ThinLensCamera.h
Log:
Interface/Camera.h
Model/Cameras/PinholeCamera.cc
Model/Cameras/PinholeCamera.h
Model/Cameras/ThinLensCamera.cc
Model/Cameras/ThinLensCamera.h

  Removed reset(eye, up, lookat, hfov) function.  Use
  setBasicCameraData instead.

Interface/CameraPath.cc
Interface/CameraPath.h

  Added ability to create and view a path while rendering.  Previously
  you had to save it off and then reload the scene.

  Added hfov and vfov instead of fov.


Modified: trunk/Interface/Camera.h
==============================================================================
--- trunk/Interface/Camera.h    (original)
+++ trunk/Interface/Camera.h    Mon Oct  8 17:13:09 2007
@@ -80,8 +80,6 @@
     virtual void reset( const Vector& eye_,
                         const Vector& up_,
                         const Vector& lookat_ ) = 0;
-    virtual void reset(Vector const& eye_, Vector const& up_,
-                       Vector const& lookat_, Real const hfov_) { }
 
     enum TransformCenter {
       LookAt,

Modified: trunk/Interface/CameraPath.cc
==============================================================================
--- trunk/Interface/CameraPath.cc       (original)
+++ trunk/Interface/CameraPath.cc       Mon Oct  8 17:13:09 2007
@@ -28,7 +28,8 @@
   eyes.reset();
   lookats.reset();
   ups.reset();
-  fovs.reset();
+  hfovs.reset();
+  vfovs.reset();
 }
 
 void CameraPath::interpolate(int, int, bool&)
@@ -59,8 +60,11 @@
 
   if (frame < max_frame) {
     Camera* camera=interface->getCamera(0);
-    camera->reset(eyes.interpolate(frame), ups.interpolate(frame),
-                  lookats.interpolate(frame), fovs.interpolate(frame));
+    camera->setBasicCameraData(BasicCameraData(eyes.interpolate(frame),
+                                               lookats.interpolate(frame),
+                                               ups.interpolate(frame),
+                                               hfovs.interpolate(frame),
+                                               vfovs.interpolate(frame)));
     ++frame;
   } else {
     anim=false;
@@ -84,21 +88,26 @@
     interface->unregisterCallback(handle);
 }
 
-void CameraPath::addKnot(unsigned int const frame, BasicCameraData const& 
data)
+void CameraPath::addKnot(unsigned int const knot_frame, BasicCameraData 
const& data)
 {
+  Knot knot;
   // Force a control point at frame zero (prevents camera from going berzerk
   // on playback)
-  if (knots.size() == 0) {
-    Knot first;
-    first.frame=0;
-    first.data=data;
-    knots.push_back(first);
-  }
-
-  Knot knot;
-  knot.frame=frame;
+  knot.frame=(knots.size() == 0)? 0: knot_frame;
   knot.data=data;
   knots.push_back(knot);
+
+  // Add knot to paths
+  eyes.addKnot(knot_frame, data.eye);
+  lookats.addKnot(knot_frame, data.lookat);
+  ups.addKnot(knot_frame, data.up);
+  hfovs.addKnot(knot_frame, data.hfov);
+  vfovs.addKnot(knot_frame, data.vfov);
+
+  if (knot_frame > max_frame)
+    max_frame = knot_frame;
+
+  cout << "Adding knot at frame "<<knot_frame<<"\n";
 }
 
 void CameraPath::readKnots(void)
@@ -115,31 +124,22 @@
   max_frame=0;
   unsigned int nknots=0;
   while (nknots<total_knots) {
-    unsigned int frame;
-    Real ex, ey, ez;
-    Real lx, ly, lz;
-    Real ux, uy, uz;
-    Real fov;
-
+    unsigned int knot_frame;
+    BasicCameraData data;
+    
     // Frame number (+/- offset)
-    in>>frame;
-    frame += offset;
+    in>>knot_frame;
+    knot_frame += offset;
 
     // Camera parameters
-    in>>ex>>ey>>ez;
-    in>>lx>>ly>>lz;
-    in>>ux>>uy>>uz;
-    in>>fov;
-
-    // Add knot to paths
-    eyes.addKnot(frame, Vector(ex, ey, ez));
-    lookats.addKnot(frame, Vector(lx, ly, lz));
-    ups.addKnot(frame, Vector(ux, uy, uz));
-    fovs.addKnot(frame, fov);
-
-    if (frame>max_frame)
-      max_frame=frame;
+    in>>data.eye[0]>>data.eye[1]>>data.eye[2];
+    in>>data.lookat[0]>>data.lookat[1]>>data.lookat[2];
+    in>>data.up[0]>>data.up[1]>>data.up[2];
+    in>>data.hfov;
+    in>>data.vfov;
 
+    addKnot(knot_frame, data);
+    
     ++nknots;
   }
 
@@ -167,7 +167,8 @@
        <<knots[i].data.eye<<' '
        <<knots[i].data.lookat<<' '
        <<knots[i].data.up<<' '
-       <<knots[i].data.hfov<<'\n';
+       <<knots[i].data.hfov<<' '
+       <<knots[i].data.vfov<<'\n';
   }
 
   out.close();

Modified: trunk/Interface/CameraPath.h
==============================================================================
--- trunk/Interface/CameraPath.h        (original)
+++ trunk/Interface/CameraPath.h        Mon Oct  8 17:13:09 2007
@@ -45,6 +45,9 @@
     unsigned int frame;
     unsigned int max_frame;
 
+    // You have to keep track of these separate from the splines,
+    // since you can't get access to the knots in the spline directly.
+    // Perhaps this should change....
     struct Knot
     {
       unsigned int frame;
@@ -55,7 +58,8 @@
     Spline<Vector> eyes;
     Spline<Vector> lookats;
     Spline<Vector> ups;
-    Spline<Real> fovs;
+    Spline<Real> hfovs;
+    Spline<Real> vfovs;
   };
 }
 

Modified: trunk/Model/Cameras/PinholeCamera.cc
==============================================================================
--- trunk/Model/Cameras/PinholeCamera.cc        (original)
+++ trunk/Model/Cameras/PinholeCamera.cc        Mon Oct  8 17:13:09 2007
@@ -432,18 +432,6 @@
   setup();
 }
 
-void PinholeCamera::reset(Vector const& eye_, Vector const& up_,
-                          Vector const& lookat_, Real const hfov_,
-                          Real const vfov_)
-{
-  eye=eye_;
-  up=up_;
-  lookat=lookat_;
-  hfov=hfov_;
-  vfov=vfov_;
-  setup();
-}
-
 void PinholeCamera::getBasicCameraData(BasicCameraData& cam) const
 {
   cam = BasicCameraData(eye, lookat, up, hfov, vfov);

Modified: trunk/Model/Cameras/PinholeCamera.h
==============================================================================
--- trunk/Model/Cameras/PinholeCamera.h (original)
+++ trunk/Model/Cameras/PinholeCamera.h Mon Oct  8 17:13:09 2007
@@ -42,8 +42,6 @@
 
     virtual void reset( const Vector& eye_, const Vector& up_,
                         const Vector& lookat_ );
-    virtual void reset(Vector const& eye_, Vector const& up_,
-                       Vector const& lookat_, Real const hfov_, Real const 
vfov_ );
 
     void setStereoOffset( Real stereo_offset_ ) { stereo_offset = 
stereo_offset_; }
     Real getStereoOffset() const { return stereo_offset; }

Modified: trunk/Model/Cameras/ThinLensCamera.cc
==============================================================================
--- trunk/Model/Cameras/ThinLensCamera.cc       (original)
+++ trunk/Model/Cameras/ThinLensCamera.cc       Mon Oct  8 17:13:09 2007
@@ -374,18 +374,6 @@
   setup();
 }
 
-void ThinLensCamera::reset(Vector const& eye_, Vector const& up_,
-                          Vector const& lookat_, Real const hfov_,
-                          Real const vfov_)
-{
-  eye=eye_;
-  up=up_;
-  lookat=lookat_;
-  hfov=hfov_;
-  vfov=vfov_;
-  setup();
-}
-
 void ThinLensCamera::getBasicCameraData(BasicCameraData& cam) const
 {
   cam = BasicCameraData(eye, lookat, up, hfov, vfov);

Modified: trunk/Model/Cameras/ThinLensCamera.h
==============================================================================
--- trunk/Model/Cameras/ThinLensCamera.h        (original)
+++ trunk/Model/Cameras/ThinLensCamera.h        Mon Oct  8 17:13:09 2007
@@ -43,8 +43,6 @@
 
     virtual void reset( const Vector& eye_, const Vector& up_,
                         const Vector& lookat_ );
-    virtual void reset(Vector const& eye_, Vector const& up_,
-                       Vector const& lookat_, Real const hfov_, Real const 
vfov_ );
 
     void setStereoOffset( Real stereo_offset_ ) { stereo_offset = 
stereo_offset_; }
     Real getStereoOffset() const { return stereo_offset; }




  • [Manta] r1767 - in trunk: Interface Model/Cameras, bigler, 10/08/2007

Archive powered by MHonArc 2.6.16.

Top of page