#include <stdlib.h>#include <iostream>#include <GL/glut.h>#include <cmath>#include <string>#include <errno.h>#include <GL/glext.h>#include <stdio.h>#include <vector>#include <Skinned.h>#include <Skeleton.h>#include <File_parser.h>#include <Mesh_object.h>#include <Mesh_object_loader.h>#include <OpenGL_drawer.h>#include <Navigator_tool.h>Go to the source code of this file.
Defines | |
| #define | PI 3.14159 |
| #define | GLUT_SPACE 32 |
Functions | |
| static void | display_callback () |
| static void | reshape_callback (int width, int height) |
| static void | keyboard_callback (unsigned char key, int x, int y) |
| static void | idle_callback (int value) |
| static void | motion_callback (int x, int y) |
| static void | mouse_callback (int button, int action, int x, int y) |
| int | setup_opengl (int argc, char **argv) |
| int | draw_scene () |
| int | load_model_1 () |
| int | load_model_2 () |
| int | load_model_3 () |
| double | get_rand () |
| int | evolve () |
| int | main (int argc, char *argv[]) |
Variables | |
| OpenGL_drawer | openGL_drawer |
| Navigator_tool | navigator |
| Mesh_object | mesh |
| Mesh_object | mesh2 |
| int | counter = 0 |
| Skeleton | skeleton |
| Skeleton | deformed_skeleton |
| Mesh_object | deformed_mesh |
| Skinned | skinned |
| int | is_draw_grid = 0 |
| int | is_draw_skeleton = 0 |
| #define GLUT_SPACE 32 |
| static void display_callback | ( | ) | [static] |
Definition at line 607 of file main.cpp.
References draw_scene(), Navigator_tool::get_dist_obs(), Navigator_tool::get_screen_ratio(), Navigator_tool::get_theta_1(), Navigator_tool::get_theta_2(), Navigator_tool::get_tr_x(), Navigator_tool::get_tr_y(), Navigator_tool::get_tr_z(), Navigator_tool::get_X_screen(), and Navigator_tool::get_Y_screen().
Referenced by setup_opengl().
00608 { 00609 //croping 00610 double Z_MIN = 1; 00611 double Z_MAX = 900; 00612 00613 00614 //vieport (all screen) 00615 glViewport (0, 0, navigator.get_X_screen(),navigator.get_Y_screen()); 00616 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 00617 00618 //Projection 00619 glMatrixMode(GL_PROJECTION); 00620 glLoadIdentity (); 00621 gluPerspective (45, navigator.get_screen_ratio(), Z_MIN,Z_MAX); 00622 00623 //Modelview 00624 glMatrixMode(GL_MODELVIEW); 00625 glLoadIdentity(); 00626 00627 glTranslatef(0,0,navigator.get_dist_obs()); 00628 glRotatef(navigator.get_theta_1(),1.0,0.0,0.0); 00629 glRotatef(navigator.get_theta_2(),0.0,1.0,0.0); 00630 glTranslatef(navigator.get_tr_x(),navigator.get_tr_y(),navigator.get_tr_z()); 00631 00632 //printf("%f,(%f,%f)-[%f,%f,%f]\n",navigator.get_dist_obs(),navigator.get_theta_1(),navigator.get_theta_2(),navigator.get_tr_x(),navigator.get_tr_y(),navigator.get_tr_z()); 00633 00634 00635 // glTranslatef(0,0,-1.336); 00636 // glRotatef(11.0,1.0,0.0,0.0); 00637 // glRotatef(-140.0,0.0,1.0,0.0); 00638 // glTranslatef(0.0,0.0,0.0); 00639 00640 00641 //Draw the scene 00642 draw_scene(); 00643 00644 //draw the basis 00645 //openGL_drawer.draw_local_basis(navigator); 00646 00647 00648 00649 00650 //code d'erreur OpenGL 00651 GLenum errCode; 00652 const GLubyte *errString; 00653 if((errCode=glGetError()) != GL_NO_ERROR) 00654 { 00655 errString = gluErrorString(errCode); 00656 printf("ERROR OPENGL : %s\n",errString); 00657 exit(-2); 00658 } 00659 00660 //redraw 00661 glFlush (); 00662 glutSwapBuffers (); 00663 00664 }

| int draw_scene | ( | ) |
Definition at line 137 of file main.cpp.
References OpenGL_drawer::draw_mesh_grid(), OpenGL_drawer::draw_mesh_slow(), OpenGL_drawer::draw_skeleton(), Navigator_tool::get_current_position(), is_draw_grid, and is_draw_skeleton.
Referenced by display_callback().
00138 { 00139 00140 glEnable(GL_LIGHTING); 00141 00142 //current position in space 00143 V_3D position = -1*navigator.get_current_position(); 00144 00145 glEnable(GL_POLYGON_OFFSET_FILL); 00146 glPolygonOffset(1.0,1.0); 00147 glLineWidth(2.0); 00148 openGL_drawer.draw_mesh_slow(deformed_mesh); 00149 glDisable(GL_POLYGON_OFFSET_FILL); 00150 00151 glColor4d(0.0,0.0,0.4,1.0); 00152 glLineWidth(1.5); 00153 if(is_draw_grid==1) 00154 openGL_drawer.draw_mesh_grid(deformed_mesh); 00155 00156 if(is_draw_skeleton==1) 00157 openGL_drawer.draw_skeleton(deformed_skeleton); 00158 glLineWidth(1.0); 00159 return 0; 00160 }


| int evolve | ( | ) |
Definition at line 557 of file main.cpp.
References counter, Skeleton::deform_skeleton(), and Skinned::skinning().
Referenced by idle_callback().
00558 { 00559 double t=(double(counter%150)/150.0); 00560 00561 //deformed_mesh.build_normal_per_vertex(); 00562 00563 deformed_skeleton=skeleton; 00564 skeleton.deform_skeleton(t,&deformed_skeleton); 00565 skinned.skinning(); 00566 00567 //deformed_mesh.build_normal_per_polygon(); 00568 00569 00570 00571 return 0; 00572 }


| double get_rand | ( | ) |
| static void idle_callback | ( | int | value | ) | [static] |
Definition at line 729 of file main.cpp.
References counter, evolve(), and Navigator_tool::increase_time().
Referenced by setup_opengl().
00730 { 00731 value=1;//useless 00732 00733 navigator.increase_time(); 00734 glutPostRedisplay (); 00735 glutTimerFunc( 33, idle_callback, 1); 00736 counter++; 00737 00738 evolve(); 00739 }


| static void keyboard_callback | ( | unsigned char | key, | |
| int | x, | |||
| int | y | |||
| ) | [static] |
Definition at line 674 of file main.cpp.
References Navigator_tool::get_dist_obs(), Navigator_tool::go_backward(), Navigator_tool::go_down(), Navigator_tool::go_forward(), Navigator_tool::go_left(), Navigator_tool::go_right(), Navigator_tool::go_up(), is_draw_grid, and is_draw_skeleton.
Referenced by setup_opengl().
00675 { 00676 00677 x=0;y=0; 00678 double d_L=0.001*(1+100*abs(navigator.get_dist_obs())); 00679 00680 #define GLUT_SPACE 32 00681 00682 00683 switch(key) 00684 { 00685 case 'Q'://quit 00686 printf("\n[EXIT OK]\n\n"); 00687 exit(0); 00688 break; 00689 00690 00691 case 'w': 00692 navigator.go_forward(d_L); 00693 break; 00694 case 's': 00695 navigator.go_backward(d_L); 00696 break; 00697 case 'a': 00698 navigator.go_left(d_L); 00699 break; 00700 case 'd': 00701 navigator.go_right(d_L); 00702 break; 00703 case 'r': 00704 navigator.go_up(d_L); 00705 break; 00706 case 'f': 00707 navigator.go_down(d_L); 00708 break; 00709 00710 case 'G': 00711 is_draw_grid==1?is_draw_grid=0:is_draw_grid=1; 00712 break; 00713 case 'S': 00714 is_draw_skeleton==1?is_draw_skeleton=0:is_draw_skeleton=1; 00715 break; 00716 00717 case 'W'://wireframe 00718 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 00719 break; 00720 case 'F'://Filled 00721 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 00722 break; 00723 } 00724 00725 glutPostRedisplay (); 00726 }


| int load_model_1 | ( | ) |
Definition at line 167 of file main.cpp.
References Skinned::automatic_weight_calculation(), Mesh_object::build_normal_per_vertex(), Skeleton::deform_skeleton(), Mesh_object::fast_subdivide_mixed_mid_edge(), Mesh_object::fill_color(), Skeleton::fix_init_bind_pose(), Skeleton::get_N_joint(), Mesh_object::Laplacien_smooth(), File_parser::load_collada_skeleton(), Mesh_object::load_obj_file(), Skeleton::precalculate_matrix(), Skeleton::read_skeleton(), Skeleton::scale(), Skeleton::set_angle(), Skinned::set_deformed_mesh(), Skinned::set_deformed_skeleton(), Skinned::set_mesh(), Skeleton::set_size_time(), Skinned::set_skeleton(), Skeleton::set_time(), and Skinned::skinning().
Referenced by main().
00168 { 00169 00170 //*********************************// 00171 //LOAD MESH 00172 //*********************************// 00173 mesh.load_obj_file("data/man.obj"); 00174 00175 00176 //*********************************// 00177 //LOAD TEXTURE 00178 //*********************************// 00179 00180 Mesh_object_loader loader; 00181 mesh.load_obj_file("data/man.obj"); 00182 00183 00184 00185 //*********************************// 00186 //SUBDIVISION 00187 //*********************************// 00188 00189 int N_subdiv=1; 00190 for(int k=0;k<N_subdiv;k++) 00191 { 00192 mesh.fast_subdivide_mixed_mid_edge(); 00193 00194 // lissage 00195 for(int k=0;k<4;k++) 00196 mesh.Laplacien_smooth(0.25); 00197 } 00198 00199 00200 // couleur 00201 mesh.fill_color(0.9,0.9,0.9,1.0); 00202 mesh.build_normal_per_vertex(); 00203 00204 00205 00206 00207 deformed_mesh=mesh; 00208 00209 00210 00211 00212 00213 00214 //*********************************// 00215 //LOAD SKELETON 00216 //*********************************// 00217 00218 File_parser parser; 00219 parser.load_collada_skeleton("data/skeleton_man_by_hand.dae","0",&skeleton); 00220 skeleton.scale(10); 00221 00222 skeleton.fix_init_bind_pose(); 00223 skeleton.read_skeleton(); 00224 skeleton.precalculate_matrix(); 00225 00226 deformed_skeleton=skeleton; 00227 00228 00229 //*********************************// 00230 //INIT SKINNING 00231 //*********************************// 00232 00233 skinned.set_mesh(&mesh); 00234 skinned.set_deformed_mesh(&deformed_mesh); 00235 skinned.set_skeleton(&skeleton); 00236 00237 //*********************************// 00238 // LOAD SKINNING ATTRIBUTE 00239 //*********************************// 00240 00241 skinned.automatic_weight_calculation(); 00242 00243 00244 00245 //*********************************// 00246 // SET SKELETON ANIMATION 00247 //*********************************// 00248 00249 int k_bone=0; 00250 for(k_bone=0;k_bone<skeleton.get_N_joint();k_bone++) 00251 { 00252 skeleton.set_size_time(k_bone,3); 00253 skeleton.set_time(k_bone,0,0.0); 00254 skeleton.set_time(k_bone,1,0.5); 00255 skeleton.set_time(k_bone,2,1.0); 00256 skeleton.set_angle(k_bone,0,0,0.0); 00257 skeleton.set_angle(k_bone,1,0,0.0); 00258 skeleton.set_angle(k_bone,2,0,0.0); 00259 } 00260 00261 00262 k_bone=3; 00263 skeleton.set_angle(k_bone,0,0,-40.0); 00264 skeleton.set_angle(k_bone,1,0,+10.0); 00265 skeleton.set_angle(k_bone,2,0,-40.0); 00266 00267 k_bone=1; 00268 skeleton.set_angle(k_bone,0,0,-60.0); 00269 skeleton.set_angle(k_bone,1,0,15.0); 00270 skeleton.set_angle(k_bone,2,0,-60.0); 00271 00272 k_bone=8; 00273 skeleton.set_angle(k_bone,0,1,-35.0); 00274 skeleton.set_angle(k_bone,1,1,40.0); 00275 skeleton.set_angle(k_bone,2,1,-35.0); 00276 00277 k_bone=13; 00278 skeleton.set_angle(k_bone,0,0,-25.0); 00279 skeleton.set_angle(k_bone,1,0,15.0); 00280 skeleton.set_angle(k_bone,2,0,-25.0); 00281 00282 k_bone=14; 00283 skeleton.set_angle(k_bone,0,0,-15.0); 00284 skeleton.set_angle(k_bone,1,0,19.0); 00285 skeleton.set_angle(k_bone,2,0,-15.0); 00286 00287 00288 00289 00290 00291 //*********************************// 00292 // DEFORM IT 00293 //*********************************// 00294 00295 skeleton.deform_skeleton(0.0,&deformed_skeleton); 00296 skinned.set_deformed_skeleton(&deformed_skeleton); 00297 00298 00299 skinned.skinning(); 00300 00301 00302 00303 return 0; 00304 }

| int load_model_2 | ( | ) |
Definition at line 310 of file main.cpp.
References Mesh_object::build_normal_per_vertex(), Skeleton::deform_skeleton(), Mesh_object::fill_color(), Skeleton::fix_init_bind_pose(), Skeleton::get_N_joint(), Mesh_object::load_collada_file(), File_parser::load_collada_skeleton(), File_parser::load_collada_skining_attribute(), Mesh_object_loader::load_collada_texture(), OpenGL_drawer::load_texture(), Skeleton::precalculate_matrix(), Skeleton::read_skeleton(), Skeleton::set_angle(), Skinned::set_deformed_mesh(), Skinned::set_deformed_skeleton(), Skinned::set_mesh(), Skeleton::set_size_time(), Skinned::set_skeleton(), Mesh_object::set_texture_number(), Skeleton::set_time(), and Skinned::skinning().
00311 { 00312 00313 //*********************************// 00314 //LOAD MESH 00315 //*********************************// 00316 char filename[]="data/collada_man.dae"; 00317 mesh.load_collada_file(filename); 00318 00319 //*********************************// 00320 //LOAD TEXTURE 00321 //*********************************// 00322 00323 Mesh_object_loader loader; 00324 loader.load_collada_texture(filename,&mesh,"MAN_BODYShape","MAN_BODYShape-TexCoord0"); 00325 mesh.set_texture_number(openGL_drawer.load_texture("data/MAN_BOD.jpg")); 00326 00327 mesh.fill_color(0.9,0.9,0.9,1.0); 00328 mesh.build_normal_per_vertex(); 00329 00330 00331 00332 00333 deformed_mesh=mesh; 00334 00335 00336 00337 00338 00339 00340 //*********************************// 00341 //LOAD SKELETON 00342 //*********************************// 00343 00344 File_parser parser; 00345 parser.load_collada_skeleton(filename,"AVATAR",&skeleton); 00346 00347 skeleton.fix_init_bind_pose(); 00348 skeleton.read_skeleton(); 00349 skeleton.precalculate_matrix(); 00350 00351 deformed_skeleton=skeleton; 00352 00353 00354 //*********************************// 00355 //INIT SKINNING 00356 //*********************************// 00357 00358 skinned.set_mesh(&mesh); 00359 skinned.set_deformed_mesh(&deformed_mesh); 00360 skinned.set_skeleton(&skeleton); 00361 00362 //*********************************// 00363 // LOAD SKINNING ATTRIBUTE 00364 //*********************************// 00365 00366 parser.load_collada_skining_attribute(filename,&skinned); 00367 00368 00369 00370 //*********************************// 00371 // SET SKELETON ANIMATION 00372 //*********************************// 00373 00374 int k_bone=0; 00375 for(k_bone=0;k_bone<skeleton.get_N_joint();k_bone++) 00376 { 00377 skeleton.set_size_time(k_bone,3); 00378 skeleton.set_time(k_bone,0,0.0); 00379 skeleton.set_time(k_bone,1,0.5); 00380 skeleton.set_time(k_bone,2,1.0); 00381 skeleton.set_angle(k_bone,0,0,0.0); 00382 skeleton.set_angle(k_bone,1,0,0.0); 00383 skeleton.set_angle(k_bone,2,0,0.0); 00384 } 00385 00386 00387 k_bone=4; 00388 skeleton.set_angle(k_bone,0,0,-65.0); 00389 skeleton.set_angle(k_bone,1,0,69.0); 00390 skeleton.set_angle(k_bone,2,0,-65.0); 00391 00392 k_bone=62; 00393 skeleton.set_angle(k_bone,0,0,-25.0); 00394 skeleton.set_angle(k_bone,1,0,0.0); 00395 skeleton.set_angle(k_bone,2,0,-25.0); 00396 00397 k_bone=63; 00398 skeleton.set_angle(k_bone,0,0,35.0); 00399 skeleton.set_angle(k_bone,1,0,0.0); 00400 skeleton.set_angle(k_bone,2,0,35.0); 00401 00402 k_bone=35; 00403 skeleton.set_angle(k_bone,0,1,-35.0); 00404 skeleton.set_angle(k_bone,1,1,0.0); 00405 skeleton.set_angle(k_bone,2,1,-35.0); 00406 00407 00408 00409 //*********************************// 00410 // DEFORM IT 00411 //*********************************// 00412 00413 skeleton.deform_skeleton(0.0,&deformed_skeleton); 00414 skinned.set_deformed_skeleton(&deformed_skeleton); 00415 00416 00417 skinned.skinning(); 00418 00419 00420 00421 return 0; 00422 }
| int load_model_3 | ( | ) |
Definition at line 424 of file main.cpp.
References Mesh_object::build_normal_per_vertex(), Skeleton::deform_skeleton(), Mesh_object::fill_color(), Skeleton::fix_init_bind_pose(), Skeleton::get_N_joint(), Mesh_object::load_collada_file(), File_parser::load_collada_skeleton(), File_parser::load_collada_skining_attribute(), Mesh_object_loader::load_collada_texture(), OpenGL_drawer::load_texture(), Skeleton::precalculate_matrix(), Skeleton::read_skeleton(), Skeleton::set_angle(), Skinned::set_deformed_mesh(), Skinned::set_deformed_skeleton(), Skinned::set_mesh(), Skeleton::set_size_time(), Skinned::set_skeleton(), Mesh_object::set_texture_number(), Skeleton::set_time(), and Skinned::skinning().
00425 { 00426 00427 //*********************************// 00428 //LOAD MESH 00429 //*********************************// 00430 00431 00432 char filename[]="data/collada_woman.dae"; 00433 //char filename[]="data/collada_man.dae"; 00434 mesh.load_collada_file(filename); 00435 00436 00437 00438 00439 //*********************************// 00440 //LOAD TEXTURE 00441 //*********************************// 00442 00443 Mesh_object_loader loader; 00444 loader.load_collada_texture(filename,&mesh,"WOMAN_BODYShape","WOMAN_BODYShape-TexCoord0"); 00445 //loader.load_collada_texture(filename,&mesh,"MAN_BODYShape","MAN_BODYShape-TexCoord0"); 00446 00447 00448 00449 00450 mesh.set_texture_number(openGL_drawer.load_texture("data/WOMAN_BOD.jpg")); 00451 //mesh.set_texture_number(openGL_drawer.load_texture("data/MAN_BOD.jpg")); 00452 00453 00454 mesh.fill_color(0.9,0.9,0.9,1.0); 00455 mesh.build_normal_per_vertex(); 00456 00457 00458 00459 00460 deformed_mesh=mesh; 00461 00462 00463 00464 00465 00466 00467 //*********************************// 00468 //LOAD SKELETON 00469 //*********************************// 00470 00471 File_parser parser; 00472 parser.load_collada_skeleton(filename,"AVATAR",&skeleton); 00473 00474 skeleton.fix_init_bind_pose(); 00475 skeleton.read_skeleton(); 00476 skeleton.precalculate_matrix(); 00477 00478 deformed_skeleton=skeleton; 00479 00480 00481 //*********************************// 00482 //INIT SKINNING 00483 //*********************************// 00484 00485 skinned.set_mesh(&mesh); 00486 skinned.set_deformed_mesh(&deformed_mesh); 00487 skinned.set_skeleton(&skeleton); 00488 00489 //*********************************// 00490 // LOAD SKINNING ATTRIBUTE 00491 //*********************************// 00492 00493 parser.load_collada_skining_attribute(filename,&skinned); 00494 00495 00496 00497 //*********************************// 00498 // SET SKELETON ANIMATION 00499 //*********************************// 00500 00501 int k_bone=0; 00502 for(k_bone=0;k_bone<skeleton.get_N_joint();k_bone++) 00503 { 00504 skeleton.set_size_time(k_bone,3); 00505 skeleton.set_time(k_bone,0,0.0); 00506 skeleton.set_time(k_bone,1,0.5); 00507 skeleton.set_time(k_bone,2,1.0); 00508 skeleton.set_angle(k_bone,0,0,0.0); 00509 skeleton.set_angle(k_bone,1,0,0.0); 00510 skeleton.set_angle(k_bone,2,0,0.0); 00511 } 00512 00513 00514 00515 00516 k_bone=4; 00517 skeleton.set_angle(k_bone,0,0,-65.0); 00518 skeleton.set_angle(k_bone,1,0,69.0); 00519 skeleton.set_angle(k_bone,2,0,-65.0); 00520 00521 k_bone=62; 00522 skeleton.set_angle(k_bone,0,0,-25.0); 00523 skeleton.set_angle(k_bone,1,0,0.0); 00524 skeleton.set_angle(k_bone,2,0,-25.0); 00525 00526 k_bone=63; 00527 skeleton.set_angle(k_bone,0,0,35.0); 00528 skeleton.set_angle(k_bone,1,0,0.0); 00529 skeleton.set_angle(k_bone,2,0,35.0); 00530 00531 k_bone=35; 00532 skeleton.set_angle(k_bone,0,1,-35.0); 00533 skeleton.set_angle(k_bone,1,1,0.0); 00534 skeleton.set_angle(k_bone,2,1,-35.0); 00535 00536 00537 00538 //*********************************// 00539 // DEFORM IT 00540 //*********************************// 00541 00542 skeleton.deform_skeleton(0.0,&deformed_skeleton); 00543 skinned.set_deformed_skeleton(&deformed_skeleton); 00544 00545 00546 skinned.skinning(); 00547 00548 00549 00550 return 0; 00551 }
| int main | ( | int | argc, | |
| char * | argv[] | |||
| ) |
Definition at line 85 of file main.cpp.
References load_model_1(), Navigator_tool::set_screen_size(), and setup_opengl().
00086 { 00087 cout<<"**hello**\n"<<endl; 00088 printf("run %s with %d parameters ... \n\n",argv[0],argc-1); 00089 00090 00091 //start OpenGL 00092 //*************// 00093 navigator.set_screen_size(800,800); 00094 setup_opengl(argc,argv); 00095 00096 00097 00098 //load models 00099 //*************// 00100 load_model_1(); 00101 //load_model_2(); 00102 //load_model_3(); 00103 00104 00105 00106 00107 //run 00108 printf("**RUN**\n\n"); 00109 printf("Navigation with keys:\n\n"); 00110 printf("==========================\n"); 00111 printf("Space Displacement\n"); 00112 printf(" w r\n"); 00113 printf("a s d f\n\n"); 00114 printf("and mouse with drag & drop\n\n"); 00115 printf("W: wireframe mode\n"); 00116 printf("F: filled mode\n"); 00117 printf("G: Grid mode\n"); 00118 printf("S: Skeleton\n"); 00119 printf("==========================\n"); 00120 glutMainLoop (); 00121 00122 00123 return 0; 00124 }

| static void motion_callback | ( | int | x, | |
| int | y | |||
| ) | [static] |
Definition at line 743 of file main.cpp.
References Navigator_tool::get_current_view(), Navigator_tool::get_left_b(), Navigator_tool::get_right_b(), Navigator_tool::get_x_prec(), Navigator_tool::get_y_prec(), Navigator_tool::increase_dist_obs(), Navigator_tool::increase_theta_1(), Navigator_tool::increase_theta_2(), Navigator_tool::set_x_prec(), and Navigator_tool::set_y_prec().
Referenced by setup_opengl().
00744 { 00745 /* si le bouton gauche est presse */ 00746 double d_x=x-navigator.get_x_prec(),d_y=y-navigator.get_y_prec(); 00747 if (navigator.get_left_b()) 00748 { 00749 if(navigator.get_current_view()==1) 00750 { 00751 navigator.increase_theta_2(d_x); 00752 navigator.increase_theta_1(d_y); 00753 } 00754 navigator.set_x_prec(x); 00755 navigator.set_y_prec(y); 00756 } 00757 00758 /* si le bouton droit est presse */ 00759 if (navigator.get_right_b()) 00760 { 00761 double u = double(y-navigator.get_y_prec()); 00762 double fu = abs(u)/500.0; 00763 if(u<0) 00764 fu=-fu; 00765 00766 navigator.increase_dist_obs(fu); 00767 navigator.set_y_prec(y); 00768 } 00769 00770 glutPostRedisplay (); 00771 }

| static void mouse_callback | ( | int | button, | |
| int | action, | |||
| int | x, | |||
| int | y | |||
| ) | [static] |
Definition at line 772 of file main.cpp.
References Navigator_tool::set_left_b(), Navigator_tool::set_right_b(), Navigator_tool::set_x_prec(), and Navigator_tool::set_y_prec().
Referenced by setup_opengl().
00773 { 00774 00775 if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN) { 00776 navigator.set_left_b(1); 00777 navigator.set_x_prec(x); 00778 navigator.set_y_prec(y); 00779 } 00780 if (button == GLUT_LEFT_BUTTON && action == GLUT_UP) 00781 navigator.set_left_b(0); 00782 00783 if (button == GLUT_RIGHT_BUTTON && action == GLUT_DOWN) { 00784 navigator.set_right_b(1); 00785 navigator.set_y_prec(y); 00786 } 00787 if (button == GLUT_RIGHT_BUTTON && action == GLUT_UP) 00788 navigator.set_right_b(0); 00789 00790 glutPostRedisplay (); 00791 }


| static void reshape_callback | ( | int | width, | |
| int | height | |||
| ) | [static] |
Definition at line 667 of file main.cpp.
References Navigator_tool::set_screen_size().
Referenced by setup_opengl().
00668 { 00669 navigator.set_screen_size(width,height); 00670 }


| int setup_opengl | ( | int | argc, | |
| char ** | argv | |||
| ) |
Definition at line 589 of file main.cpp.
References display_callback(), idle_callback(), OpenGL_drawer::init_opengl(), keyboard_callback(), motion_callback(), mouse_callback(), and reshape_callback().
Referenced by main().
00590 { 00591 openGL_drawer.init_opengl(argc,argv,navigator); 00592 00593 //callback 00594 glutDisplayFunc (display_callback); 00595 glutReshapeFunc (reshape_callback); 00596 glutKeyboardFunc(keyboard_callback); 00597 glutTimerFunc(33,idle_callback,1); 00598 glutMotionFunc (motion_callback); 00599 glutMouseFunc (mouse_callback); 00600 00601 return 0; 00602 }


| int counter = 0 |
Definition at line 74 of file main.cpp.
Referenced by evolve(), Skeleton::get_position(), and idle_callback().
| int is_draw_grid = 0 |
| int is_draw_skeleton = 0 |
Definition at line 73 of file main.cpp.
Referenced by File_parser::load_collada_skining_attribute().
Definition at line 73 of file main.cpp.
Referenced by Mesh_object::fast_subdivide_barycenter_mid_edge(), Mesh_object::fast_subdivide_mid_edge(), Mesh_object::fast_subdivide_mixed_mid_edge(), Mesh_object::subdivide_barycenter_mid_edge(), Mesh_object::subdivide_mid_edge(), and Mesh_object::subdivide_mixed_mid_edge().
Definition at line 77 of file main.cpp.
Referenced by File_parser::load_collada_skining_attribute().
1.5.6