void Picture::render(Pixel* pix) { double eX, eY, eZ, aX, aY, aZ, fov, zMin, zMax; Vector *vUp; vUp = readCamera(&eX, &eY, &eZ, &aX, &aY, &aZ); readFOV(&zMax, &zMin, &fov); BasicObject* obj = readObject("sphere.txt"); InstanceObject* io = buildInstanceObject("trs.txt", obj); Scene *sc; Matrix *windowTransform = AffineTransforms::getWindowTransform(pix->getWidth(), pix->getHeight()); Matrix *aspectRatioTransform = AffineTransforms::getAspectTransform(pix->getWidth(), pix->getHeight(), fov); Matrix *normalTransform = AffineTransforms::getNormalTransform(zMin, zMax); Matrix *cameraTransform = AffineTransforms::getCameraTransform(eX, eY, eZ, aX, aY, aZ, vUp); Matrix *WNAC; /*printf("\nCamera: \n"); cameraTransform->printMatrix(); printf("\nNormal: \n"); normalTransform->printMatrix(); printf("\nAspect Ratio: \n"); aspectRatioTransform->printMatrix(); printf("\nWindow: \n"); windowTransform->printMatrix();*/ Matrix *temp = aspectRatioTransform->multiply(cameraTransform); Matrix *temp2 = normalTransform->multiply(temp); WNAC = windowTransform->multiply(temp2); //WNAC->printMatrix(); delete temp; delete temp2; delete cameraTransform; delete normalTransform; delete windowTransform; delete aspectRatioTransform; sc = new Scene(WNAC); sc->addNode(io); sc->render(pix); delete sc; printf("\n\n"); }
void Picture::render(int w, int h ) { //while(true){ // Get BasicObjects BasicObject* obj = new BasicObject( OBJ_FILE ); Vertex* eye = new Vertex( 0,0,0 ); Vertex* at = new Vertex(0,0,0); Matrix* camera = buildCamera( CMRA_FILE, eye, at ); // Scene creation Scene* scene = new Scene(); // Set up lighting double shading[8]; getShadingInfo( SHADE_FILE, shading ); Light* light = new Light(); Vertex* light_loc = new Vertex( shading[0], shading[1], shading[2] ); Color* light_clr = new Color( LGHT_CLR ); light->setLocation( light_loc ); light->setColor( light_clr ); Color* amb = new Color( AMB_CLR ); // Add objects to the scene. InstanceObject* sp = buildInstanceObject( TRS_FILE, obj ); sp->setShininess( shading[7] ); scene->addNode( sp ); scene->render( w, h, light, eye, at, amb ); delete eye; delete at; delete amb; delete light; delete scene; //} }
void Picture::render(Pixel* pix) { Matrix* T; Matrix* R; Matrix* S; Matrix* T2; Matrix* T3; // Get BasicObjects BasicObject* cube = readObject( "cube.txt" ); BasicObject* cyli = readObject( "cylinder.txt" ); // BasicObject* sphere = readObject( "sphere.txt" ); //WA Matrix* wnd_trns = AffineTransforms::windowingTransform(pix->getWidth(), pix->getHeight()); Matrix* aspct_ratio = AffineTransforms::aspectRatio(pix->getWidth(), pix->getHeight()); // Matrix for aspect ratio. // Concatenate wnd_trns and aspct_ratio. Matrix* wa = wnd_trns->multiply( aspct_ratio ); delete wnd_trns; delete aspct_ratio; Scene* scene = new Scene(wa); // Robot 1 Arm Matrix* robot1; S = AffineTransforms::scale( 0.2, 0.2, 0.2 ); T = AffineTransforms::translate(0.0, 0.0, -3.0); robot1 = T->multiply(S); delete S; delete T; // Robot 2 Arm Matrix* robot2; T = AffineTransforms::translate(-3.0,0.5,0.0); S = AffineTransforms::scale( 0.2, 0.2, 0.2 ); R = AffineTransforms::rotateX(45.0); robot2 = S->multiply(T->multiply(R->multiply(S))); delete T; delete S; delete R; // Create Base InstanceObject* base = buildInstanceObject( "base.txt", cyli ); T = AffineTransforms::translate( 0.0, -2.0, 0.0 ); R = AffineTransforms::rotateY( 30.0 ); TransformNode* baseT = new TransformNode(T->multiply( R )); delete T; delete R; // Create Lower Arm InstanceObject* lower_arm = buildInstanceObject( "lower_arm.txt", cube ); T = AffineTransforms::translate( 0.0, 3.0, 0.0 ); T2 = AffineTransforms::translate( 0.0, -2.0, 0.0 ); R = AffineTransforms::rotateZ( -20.0 ); T3 = AffineTransforms::translate( 0.0, 2.0, 0.0 ); TransformNode* lowerT = new TransformNode(T->multiply(T2->multiply( R->multiply(T3)))); delete T; delete T2; delete T3; delete R; // Create Upper Arm InstanceObject* upper_arm = buildInstanceObject( "upper_arm.txt", cube ); T = AffineTransforms::translate( 0.0,3.0, 0.0 ); T2 = AffineTransforms::translate( 0, -1.0, 0 ); R = AffineTransforms::rotateZ( 90 ); T3 = AffineTransforms::translate( 0.0, 1.0, 0.0 ); TransformNode* upperT = new TransformNode(T->multiply(T2->multiply( R->multiply(T3)))); delete T; delete T2; delete T3; delete R; // Create sphere /*InstanceObject* ball = buildInstanceObject( "sphere_trs.txt", sphere ); InstanceObject* clamp = buildInstanceObject( "clamp1.txt", cube ); InstanceObject* clamp2 = buildInstanceObject( "clamp2.txt", cube );*/ // Connect the pieces. baseT->addNode( base ); lowerT->addNode( lower_arm ); lowerT->addNode( upperT ); upperT->addNode( upper_arm ); /* upperT->addNode( clamp ); upperT->addNode( clamp2 ); upperT->addNode( ball );*/ baseT->addNode( lowerT ); // Create Robot Arm 1 TransformNode* tn1 = new TransformNode( robot1 ); tn1->addNode( baseT ); TransformNode* tn2 = new TransformNode( robot2 ); tn2->addNode( baseT ); // Scene creation scene->addNode( tn1 ); scene->addNode( tn2 ); //while(1){ scene->render( pix ); //} delete scene; }
void Picture::render(Pixel* pix) { //while(true){ // Get BasicObjects BasicObject* obj = readObject( OBJ_FILE ); double z[3]; getZValues( FOV_FILE, z ); //WNACI Matrix* wnd = AffineTransforms::windowingTransform(pix->getWidth(), pix->getHeight()); Matrix* aspct = AffineTransforms::aspectRatio(pix->getWidth(), pix->getHeight(), z[0]); // Matrix for aspect ratio. Vertex* eye = new Vertex( 0,0,0 ); Matrix* camera = buildCamera( CMRA_FILE, eye ); Matrix* normal = AffineTransforms::perspective( z[1], z[2] ); Matrix* tmp = aspct->multiply(camera); delete camera; delete aspct; Matrix* tmp2 = normal->multiply( tmp ); delete tmp; delete normal; Matrix* wnca = wnd->multiply(tmp2); delete tmp2; delete wnd; // END WNACI // Scene creation Scene* scene = new Scene(wnca); // Set up lighting double shading[8]; getShadingInfo( SHADE_FILE, shading ); Light* light = new Light(); Vertex* light_loc = new Vertex( shading[0], shading[1], shading[2] ); Color* light_clr = new Color( LGHT_CLR ); light->setLocation( light_loc ); light->setColor( light_clr ); Color* amb = new Color( AMB_CLR ); // Add objects to the scene. InstanceObject* sp = buildInstanceObject( TRS_FILE, obj ); sp->setShininess( shading[7] ); scene->addNode( sp ); scene->render( pix, light, eye, amb, shading[6] ); delete eye; delete amb; delete light; delete scene; //} }