Commit 9f724579 authored by axel's avatar axel

--no commit message

--no commit message
parent 1c5389e2
......@@ -38,119 +38,138 @@ int main(int argc, char** argv)
{
FILE *file;
/*Creation d'une sphere : entite A*/
LrMatrix mat_A=LrMatrix::translate(LrVector(-1, 15, 0)) * LrMatrix::scale(3);
LrGeometrySphere geo_A;
/*##################### LES OBJETS de LA SCENE #############################*/
/* Entite A : Sphere */
LrMatrix A_Mat = LrMatrix::translate(LrVector(-1, 15, 0)) * LrMatrix::scale(3);
LrGeometrySphere A_Geo;
LrPertNormalBasic A_Pn;
LrColor c_bois1((uint8_t)140,(uint8_t)73,(uint8_t)15);
LrColor c_bois2((uint8_t)109,(uint8_t)60,(uint8_t)0);
LrColor c_bois3((uint8_t)67,(uint8_t)40,(uint8_t)0);
LrPertColorTextProcBois pcb_A(c_bois1, c_bois2, c_bois3, 1.0, 1);
LrPertNormalBasic pnb_A;
LrOpticPhong opt_A(0.4, 0.6, 0, &pcb_A, &pnb_A, 10);
//LrOpticBasic opt_A(0,1,0,&pcb_A,&pnb_A);
LrEntityElementary sphere_A(mat_A, &geo_A, &opt_A);
/*Creation d'une sphere : entite B*/
LrMatrix mat_B = LrMatrix::translate(LrVector(10, 25, 5)) * LrMatrix::scale(2);
LrPertColorTextProcBois A_Pc(c_bois1, c_bois2, c_bois3, 1.0, 1);
LrOpticPhong A_Opt(0.4, 0.6, 0, &A_Pc, &A_Pn, 10);
LrEntityElementary A(A_Mat, &A_Geo, &A_Opt);
/**************************************************************************/
/* Entite B : Sphere */
LrMatrix B_Mat = LrMatrix::translate(LrVector(10, 25, 5)) * LrMatrix::scale(2);
LrColor c_1((uint8_t)175,(uint8_t)17,(uint8_t)17);
LrColor c_2((uint8_t)0,(uint8_t)100,(uint8_t)100);
LrColor c_3((uint8_t)215,(uint8_t)21,(uint8_t)21);
LrPertColorTextProcTurbulence pcb_B(c_2, LrColor::YELLOW, c_3, 1.0, 4);
LrPertNormalBasic pnb_B;
LrOpticPhong opt_B(0.5, 0.5, 0, &pcb_B, &pnb_B, 50);
LrEntityElementary sphere_B(mat_B, &geo_A, &opt_B);
/*Creation d'une sphere : entite B*/
LrMatrix mat_C = LrMatrix::translate(LrVector(-10, 15, -3)) * LrMatrix::scale(3);
LrPertColorTextProcMarbre pcb_C(LrColor::BLACK, LrColor::WHITE, LrColor::GREY, 1, 4);
LrPertNormalBasic pnb_C;
LrOpticPhong opt_C(0.5, 0.5, 0, &pcb_C, &pnb_C, 50);
LrEntityElementary sphere_C(mat_C, &geo_A, &opt_C);
LrPertColorTextProcTurbulence B_Pc(c_2, LrColor::YELLOW, c_3, 1.0, 4);
LrOpticPhong B_Opt(0.5, 0.5, 0, &B_Pc, &A_Pn, 50);
LrEntityElementary B(B_Mat, &A_Geo, &B_Opt);
/**************************************************************************/
/* Entite C : Sphere */
LrMatrix C_Mat = LrMatrix::translate(LrVector(-10, 15, -3)) * LrMatrix::scale(3);
LrPertColorTextProcMarbre C_Pc(LrColor::BLACK, LrColor::WHITE, LrColor::GREY, 1, 4);
LrOpticPhong C_Opt(0.5, 0.5, 0, &C_Pc, &A_Pn, 50);
LrEntityElementary C(C_Mat, &A_Geo, &C_Opt);
/**************************************************************************/
/*Creation d'une cube : entite C (cube)*/
LrMatrix mat_D= LrMatrix::translate(LrVector(-25, -7, -10)) * LrMatrix::scale(50);
LrGeometryCube geo_C(true);
LrPertColorBasic pcb_D(LrColor::WHITE);
LrPertNormalBasic pnb_D;
LrOpticPhong opt_D(0, 0.8, 0, &pcb_D, &pnb_D, 25);
LrEntityElementary cube_D(mat_D, &geo_C, &opt_D);
/* PLAN*/
LrMatrix mat_E= LrMatrix::translate(LrVector(0, 0, -6));
/* Entite D : Cube*/
LrMatrix D_Mat = LrMatrix::translate(LrVector(-25, -7, -10)) * LrMatrix::scale(50);
LrGeometryCube D_Geo(true);
LrPertColorBasic D_Pc(LrColor::WHITE);
LrOpticPhong D_Opt(0, 0.8, 0, &D_Pc, &A_Pn, 25);
LrEntityElementary D(D_Mat, &D_Geo, &D_Opt);
/**************************************************************************/
/*Entite E : Plan*/
LrMatrix E_Mat = LrMatrix::translate(LrVector(0, 0, -6));
LrVector normale(0, 0, 1);
LrGeometryPlan geo_E(normale);
LrPertColorTextProcDamier pcb_E(LrColor::WHITE, LrColor::BLACK, 1.0f);
LrGeometryPlan E_Geo(normale);
LrPertColorTextProcDamier E_Pc(LrColor::WHITE, LrColor::BLACK, 1.0f);
LrOpticPhong E_Opt(0.7, 0.3, 0, &E_Pc, &A_Pn, 25);
LrEntityElementary E(E_Mat, &E_Geo, &E_Opt);
/**************************************************************************/
/*############################################################################*/
LrPertNormalBasic pnb_E;
LrOpticPhong opt_E(0.7, 0.3, 0, &pcb_E, &pnb_E, 25);
LrEntityElementary plan_E(mat_E, &geo_E, &opt_E);
//Creation d'une lumiere point : entite X (lumiere de droite)
LrMatrix mat_lum_X = LrMatrix::translate(LrVector(-5, -8, 5));
LrEntityLightPoint lum_X(mat_lum_X, LrColor(0.8f,0.8f,0.8f));
//LrEntityLightPlane lum_X(mat_lum_X, LrColor(0.6f,0.6f,0.6f),10);
//Creation d'une lumiere point : entite Y (Lumiere au plafond)
LrMatrix mat_lum_Y = LrMatrix::translate(LrVector(0, 0, 20));
LrEntityLightPoint lum_Y(mat_lum_Y, LrColor(0.6f,0.6f,0.6f));
//LrEntityLightPlane lum_Y(mat_lum_Y, LrColor(0.6f,0.6f,0.6f),10);
/*##################### LES LUMIERES de LA SCENE ###########################*/
//Entite X
LrMatrix X_Mat = LrMatrix::translate(LrVector(-5, -8, 5));
LrEntityLightPoint X(X_Mat, LrColor(0.8f,0.8f,0.8f));
//LrEntityLightPlane X(X_Mat, LrColor(0.6f,0.6f,0.6f),10);
/**************************************************************************/
//Entite Y
LrMatrix Y_Mat = LrMatrix::translate(LrVector(0, 0, 20));
LrEntityLightPoint Y(Y_Mat, LrColor(0.6f,0.6f,0.6f));
//LrEntityLightPlane Y(Y_Mat, LrColor(0.6f,0.6f,0.6f),10);
/**************************************************************************/
//Entite Z
LrMatrix Z_Mat = LrMatrix::translate(LrVector(5, 0, 5));
LrEntityLightPoint Z(Z_Mat, LrColor(0.8f,0.8f,0.8f));
//LrEntityLightPlane Z(Z_Mat, LrColor(0.6f,0.6f,0.6f),10);
/**************************************************************************/
//Creation d'une lumiere point : entite Z (Lumiere de gauche)
LrMatrix mat_lum_Z = LrMatrix::translate(LrVector(5, 0, 5));
LrEntityLightPoint lum_Z(mat_lum_Z, LrColor(0.8f,0.8f,0.8f));
//LrEntityLightPlane lum_Z(mat_lum_Z, LrColor(0.6f,0.6f,0.6f),10);
/*############################################################################*/
//Creation de la Liste des entites-lumieres et ajout des entites-lumieres dans cette liste
/*##################### LES LISTES D'OBJETS ET DE LUMIERES #################*/
//Creation de la Liste des entites-lumieres et ajout des
//entites-lumieres dans cette liste
LrScene::LrEntityList list_lights;
list_lights.push_back(&lum_Z);
list_lights.push_back(&lum_Y);
list_lights.push_back(&lum_X);
list_lights.push_back(&X);
list_lights.push_back(&Y);
list_lights.push_back(&Z);
/**************************************************************************/
//Creation de la Liste des entites et ajout des entites dans cette liste
LrScene::LrEntityList list_entities;
list_entities.push_back(&sphere_A);
list_entities.push_back(&sphere_C);
//list_entities.push_back(&cube_D);
list_entities.push_back(&plan_E);
list_entities.push_back(&sphere_B);
list_entities.push_back(&A);
list_entities.push_back(&B);
list_entities.push_back(&C);
//list_entities.push_back(&D);
list_entities.push_back(&E);
/**************************************************************************/
/*############################################################################*/
/*########### STRUCTURE ACCELERATRICE, IMAGE, CAMERA, SCENE #################*/
//La structure acceleratrice
LrBinderSimple bind_A(list_entities);
//Image et camera
LrImage img_A(600,600);
LrPoint pt_origine_cam(0, -25, 0);
LrCameraPlane cam_A(pt_origine_cam,LrVector::K,LrVector::J,M_PI/4,M_PI/4);
LrBinderSimple binder(list_entities);
//L'antiAliasing
//Image
LrImage image(600,600);
//Camera
LrPoint position_camera(0, -25, 0);
LrCameraPlane camera(position_camera,LrVector::K,LrVector::J,M_PI/4,M_PI/4);
//AntiAliasing
LrAntiAliasingCentre aa(1);
//LrAntiAliasingRandom aa(1);
//LrAntiAliasingCentre aa(2);
//LrAntiAliasingRandom aa(2);
//LrAntiAliasingCentre aa(4);
//LrAntiAliasingRandom aa(4);
//La scene avec 5 rebonds
LrSceneRayTracing scene_A(list_entities, list_lights,&bind_A, &img_A, &cam_A, &aa, 10);
//La SCENE
LrSceneRayTracing scene(list_entities, list_lights,&binder, &image, &camera, &aa, 10);
cout<<"RayTracing Start..."<< endl;
//Lancement de l'algorithme de lancer de rayons (parametre : nb de threads)
scene_A.generateImage(8);
scene.generateImage(8);
//Sauvegarde de l'image
file = fopen("./test21.ppm","wb");
img_A.savePPM(file);
image.savePPM(file);
fclose(file);
cout<<"Image generee dans le fichier"<<endl;
/*############################################################################*/
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment