Text archives Help
- 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.