#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Manta; using namespace std; using SCIRun::Clamp; float inverseProjView[4][4]; Vector target; MatrixCamera::MatrixCamera(const Vector& eye_, const Vector& lookat_, const Vector& up_ ) : eye( eye_ ), lookat( lookat_ ), up( up_ ) { haveCamera = true; setup(); } MatrixCamera::MatrixCamera(const vector& args) { haveCamera = false; bool gotEye=false; bool gotLookat=false; bool gotUp=false; normalizeRays=false; int argc=static_cast(args.size()); for (size_t i=0; i& args) { return new MatrixCamera(args); } void MatrixCamera::preprocess(const PreprocessContext& context) { haveCamera = true; } void MatrixCamera::getBasicCameraData(BasicCameraData& cam) const { } void MatrixCamera::setBasicCameraData(BasicCameraData cam) { } void MatrixCamera::reset( const Vector &eye_, const Vector &up_, const Vector &lookat_ ) { } void MatrixCamera::setMatrix(float incomingMatrix[16]) { int cnt=0; for(int i=0;i<16;i++) { if(i!=0 && i%4==0) { cnt++; } inverseProjView[cnt][i%4]=incomingMatrix[i]; } } void MatrixCamera::setup() { /* Working Matrix data inverseProjView[0][0]= -0.408248 ; inverseProjView[0][1]= -0.151846 ; inverseProjView[0][2]= -14.985 ; inverseProjView[0][3]= 14.3587 ; inverseProjView[1][0]= 0.408248 ; inverseProjView[1][1]= -0.151846 ; inverseProjView[1][2]= -14.985 ; inverseProjView[1][3]= 14.3587 ; inverseProjView[2][0]= -2.98023e-08 ; inverseProjView[2][1]= 0.535928 ; inverseProjView[2][2]= -9.99002 ; inverseProjView[2][3]= 9.63807 ; inverseProjView[3][0]= -1.49012e-08 ; inverseProjView[3][1]= -6.33299e-08 ; inverseProjView[3][2]= -4.99501 ; inverseProjView[3][3]= 5.00501 ; */ } void MatrixCamera::makeRays(RayPacket& rays) const { //cout<<"Entering: makeRays"<