Example #1
0
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");
}
Example #2
0
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;
//}
}
Example #3
0
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;
}
Example #4
0
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;
//}
}