shadow mapping demo compiles (looks like it doesn't do anything corretly though)

Former-commit-id: 66b11fcc01
This commit is contained in:
Alec Jacobson
2014-06-24 17:00:56 -04:00
parent f46c10355b
commit 16c166edf5
+20 -14
View File
@@ -19,7 +19,6 @@
#include <igl/trackball.h>
#include <igl/snap_to_canonical_view_quat.h>
#include <igl/REDRUM.h>
#include <igl/Camera.h>
#include <igl/ReAntTweakBar.h>
#include <igl/get_seconds.h>
#include <igl/jet.h>
@@ -57,6 +56,14 @@
#include <iostream>
struct Camera
{
Eigen::Vector3d pan;
Eigen::Quaterniond rotation;
double zoom;
double angle;
Camera():pan(0,0,0),rotation(1,0,0,0),zoom(1),angle(25){}
};
// Initialize shadow textures. Should be called on reshape()
//
@@ -154,7 +161,7 @@ std::vector<Mesh> meshes;
struct State
{
igl::Camera camera;
::Camera camera;
State():
camera()
{
@@ -175,7 +182,7 @@ std::stack<State> redo_stack;
bool is_rotating = false;
int down_x,down_y;
igl::Camera down_camera;
::Camera down_camera;
bool is_animating = false;
double animation_start_time = 0;
@@ -276,7 +283,7 @@ void push_lightview_camera(const Eigen::Vector4f & light_pos)
0,1,0);
}
void push_camera(const igl::Camera & camera)
void push_camera(const ::Camera & camera)
{
using namespace igl;
glMatrixMode(GL_MODELVIEW);
@@ -284,7 +291,7 @@ void push_camera(const igl::Camera & camera)
// scale, pan
glScaled(camera.zoom, camera.zoom, camera.zoom);
double mat[4*4];
quat_to_mat(camera.rotation,mat);
quat_to_mat(camera.rotation.coeffs().data(),mat);
glMultMatrixd(mat);
}
@@ -454,7 +461,7 @@ void display()
q.coeffs() =
animation_to_quat.coeffs()*t + animation_from_quat.coeffs()*(1.-t);
q.normalize();
copy(q.coeffs().data(),q.coeffs().data()+4,s.camera.rotation);
s.camera.rotation = q;
}
update_meshes();
@@ -577,7 +584,7 @@ void mouse_drag(int mouse_x, int mouse_y)
case ROTATION_TYPE_IGL_TRACKBALL:
{
// Rotate according to trackball
igl::trackball<double>(
igl::trackball(
width,
height,
2.0,
@@ -591,8 +598,7 @@ void mouse_drag(int mouse_x, int mouse_y)
}
case ROTATION_TYPE_TWO_AXIS_VALUATOR_FIXED_UP:
{
Quaterniond down_q;
copy(down_camera.rotation,down_camera.rotation+4,down_q.coeffs().data());
Quaterniond down_q = down_camera.rotation;
Vector3d axis(0,1,0);
const double speed = 2.0;
Quaterniond q;
@@ -615,7 +621,7 @@ void mouse_drag(int mouse_x, int mouse_y)
q.normalize();
}
}
copy(q.coeffs().data(),q.coeffs().data()+4,s.camera.rotation);
s.camera.rotation = q;
break;
}
default:
@@ -688,7 +694,7 @@ void key(unsigned char key, int mouse_x, int mouse_y)
}else
{
push_undo();
igl::snap_to_canonical_view_quat<double>(
igl::snap_to_canonical_view_quat(
s.camera.rotation,
1.0,
s.camera.rotation);
@@ -712,7 +718,7 @@ void TW_CALL set_rotation_type(const void * value, void * clientData)
old_rotation_type != ROTATION_TYPE_TWO_AXIS_VALUATOR_FIXED_UP)
{
push_undo();
copy(s.camera.rotation,s.camera.rotation+4,animation_from_quat.coeffs().data());
animation_from_quat = s.camera.rotation;
const Vector3d up = animation_from_quat.matrix() * Vector3d(0,1,0);
Vector3d proj_up(0,up(1),up(2));
if(proj_up.norm() == 0)
@@ -825,7 +831,7 @@ int main(int argc, char * argv[])
rebar.TwNewBar("bar");
TwDefine("bar label='Shadow Mapping' size='200 550' text=light alpha='200' color='68 68 68'");
rebar.TwAddVarRW("camera_zoom", TW_TYPE_DOUBLE,&s.camera.zoom,"");
rebar.TwAddVarRW("camera_rotation", TW_TYPE_QUAT4D,s.camera.rotation,"");
rebar.TwAddVarRW("camera_rotation", TW_TYPE_QUAT4D,s.camera.rotation.coeffs().data(),"");
TwType RotationTypeTW = ReTwDefineEnumFromString("RotationType","igl_trackball,two_axis_fixed_up");
rebar.TwAddVarCB( "rotation_type", RotationTypeTW,
set_rotation_type,get_rotation_type,NULL,"keyIncr=] keyDecr=[");
@@ -834,7 +840,7 @@ int main(int argc, char * argv[])
rebar.load(REBAR_NAME);
animation_from_quat = Quaterniond(1,0,0,0);
copy(s.camera.rotation,s.camera.rotation+4,animation_to_quat.coeffs().data());
animation_from_quat = s.camera.rotation;
animation_start_time = get_seconds();
// Init antweakbar