Changeset 431 for trunk/gui/vizservers
- Timestamp:
- May 4, 2006, 8:36:28 PM (18 years ago)
- Location:
- trunk/gui/vizservers/nanovis
- Files:
-
- 3 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/vizservers/nanovis/Camera.cpp
r426 r431 49 49 glMatrixMode(GL_PROJECTION); 50 50 glLoadIdentity(); 51 gluPerspective( 60, (GLdouble)width/(GLdouble)height, 0.1, 50.0);51 gluPerspective(30, (GLdouble)width/(GLdouble)height, 0.1, 50.0); 52 52 53 53 glMatrixMode(GL_MODELVIEW); -
trunk/gui/vizservers/nanovis/Makefile
r427 r431 3 3 PerfQuery.o TransferFunction.o ControlPoint.o ColorGradient.o ColorPaletteWindow.o\ 4 4 ColorGradientGLUTWindow.o TransferFunctionGLUTWindow.o MainWindow.o Event.o \ 5 Lic.o Renderable.o Camera.o ScreenSnapper.o VolumeRenderer.o 5 Lic.o Renderable.o Camera.o ScreenSnapper.o VolumeRenderer.o PlaneRenderer.o 6 6 OBJ_VOLUMERENDERER = Volume.o ConvexPolygon.o TransferFunction.o Mat4x4.o Camera.o 7 7 OBJ_PLANERENDERER = Texture2D.o TransferFunction.o 8 8 OBJ_CLIENT = Socket.o ClientSocket.o RenderClient.o Event.o 9 9 … … 15 15 NANOSCALESRC = ./nanoscale 16 16 17 LIB_NANOVIS = -ltcl8. 3-L/opt/render/lib -lGL -lglut -lglui -lGLEW -lCg -lCgGL -pthread -lstdc++17 LIB_NANOVIS = -ltcl8.4 -L/opt/render/lib -lGL -lglut -lglui -lGLEW -lCg -lCgGL -pthread -lstdc++ 18 18 LIB_CLIENT = -L/opt/render/lib -lGL -lglut -pthread -lstdc++ 19 INCLUDES = -I../ ../src2/core -I/opt/render/include -I/autohome/u76/qiaow/Cg/usr/include19 INCLUDES = -I../src2/core -I/opt/render/include -I/autohome/u76/qiaow/Cg/usr/include 20 20 CFLAG = -g -c $(INCLUDES) 21 21 … … 26 26 27 27 nanovis: $(OBJ_NANOVIS) 28 gcc -g -o nanovis $(OBJ_NANOVIS) $(LIB_NANOVIS) ../ ../src2/core/*.o28 gcc -g -o nanovis $(OBJ_NANOVIS) $(LIB_NANOVIS) ../src2/core/*.o 29 29 30 30 ColorGradient.o: Color.o $(TFSRC)/ColorGradient.cpp … … 107 107 gcc $(CFLAG) VolumeRenderer.cpp 108 108 109 PlaneRenderer.o: $(OBJ_PLANERENDERER) PlaneRenderer.h PlaneRenderer.cpp 110 gcc $(CFLAG) PlaneRenderer.cpp 111 109 112 Mat4x4.o: Mat4x4.cpp Mat4x4.h 110 113 gcc $(CFLAG) Mat4x4.cpp -
trunk/gui/vizservers/nanovis/Texture2D.cpp
r273 r431 23 23 Texture2D::Texture2D(){} 24 24 25 Texture2D::Texture2D(int width, int height, GLuint type=GL_FLOAT, GLuint interp=GL_LINEAR, int n=4 )25 Texture2D::Texture2D(int width, int height, GLuint type=GL_FLOAT, GLuint interp=GL_LINEAR, int n=4, float* data = 0) 26 26 { 27 27 assert(type == GL_UNSIGNED_BYTE || type == GL_FLOAT|| type ==GL_UNSIGNED_INT); … … 35 35 36 36 this->id = 0; 37 38 if(data != 0) 39 initialize(data); 37 40 } 38 41 -
trunk/gui/vizservers/nanovis/Texture2D.h
r273 r431 31 31 32 32 Texture2D(); 33 Texture2D(int width, int height, GLuint type, GLuint interp, int n );33 Texture2D(int width, int height, GLuint type, GLuint interp, int n, float* data); 34 34 ~Texture2D(); 35 35 -
trunk/gui/vizservers/nanovis/Volume.cpp
r423 r431 100 100 int Volume::get_n_slice() { return n_slice; } 101 101 102 void Volume::set_size(float s) { 103 size = s; 104 aspect_ratio_width = s*tex->aspect_ratio_width; 105 aspect_ratio_height = s*tex->aspect_ratio_height; 106 aspect_ratio_depth = s*tex->aspect_ratio_depth; 107 } 108 102 109 float Volume::get_specular() { return specular; } 103 110 float Volume::get_diffuse() { return diffuse; } -
trunk/gui/vizservers/nanovis/Volume.h
r423 r431 83 83 int get_n_slice(); //return number of slices 84 84 85 void set_size(float s); //set the drawing size of volume 86 85 87 //methods related to cutplanes 86 88 int add_cutplane(int _orientation, float _location); //add a plane and returns its index -
trunk/gui/vizservers/nanovis/VolumeRenderer.cpp
r423 r431 45 45 //cgGLSetTextureParameter(m_vol_one_volume_param, _vol->id); 46 46 m_tf_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "tf"); 47 //m_tf_cut_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "tf_cutplane"); 47 48 //cgGLSetTextureParameter(m_tf_one_volume_param, _tf->id); 48 49 m_mvi_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "modelViewInv"); … … 630 631 cgGLSetTextureParameter(m_vol_one_volume_param, volume[volume_index]->id); 631 632 cgGLSetTextureParameter(m_tf_one_volume_param, tf[volume_index]->id); 633 //cgGLSetTextureParameter(m_tf_cut_one_volume_param, tf_cut[volume_index]->id); 632 634 cgGLEnableTextureParameter(m_vol_one_volume_param); 633 635 cgGLEnableTextureParameter(m_tf_one_volume_param); 636 //cgGLEnableTextureParameter(m_tf_cut_one_volume_param); 634 637 635 638 if(!slice_mode) -
trunk/gui/vizservers/nanovis/config.h
r427 r431 16 16 17 17 #define NV40 //Uncomment if using 6 series card. By default we assume older card the 5xxx series 18 #define XINETD //enable render server18 //#define XINETD //enable render server 19 19 //#define EVENTLOG //enable event logging 20 20 //#define DO_RLE //do run length compression -
trunk/gui/vizservers/nanovis/nanovis.cpp
r427 r431 38 38 39 39 VolumeRenderer* vol_render; 40 PlaneRenderer* plane_render; 40 41 Camera* cam; 42 43 bool volume_mode = false; //if true nanovis renders volumes in 3D, if not renders 2D plane 41 44 42 45 // color table for built-in transfer function editor … … 83 86 84 87 int n_volumes = 0; 85 Volume* volume[MAX_N_VOLUMES]; //point to volumes, currently handle up to 10 volumes88 Volume* volume[MAX_N_VOLUMES]; //pointers to volumes, currently handle up to 10 volumes 86 89 TransferFunction* tf[MAX_N_VOLUMES]; //transfer functions, currently handle up to 10 colormaps 90 Texture2D* plane[10]; //pointers to 2D planes, currently handle up 10 87 91 88 92 PerfQuery* perf; //perfromance counter … … 254 258 255 259 int axis; 256 if (DecodeAxis(interp, argv[3], &axis) != TCL_OK) {260 if (DecodeAxis(interp, (char*)argv[3], &axis) != TCL_OK) { 257 261 return TCL_ERROR; 258 262 } … … 299 303 300 304 int axis; 301 if (DecodeAxis(interp, argv[3], &axis) != TCL_OK) {305 if (DecodeAxis(interp, (char*)argv[3], &axis) != TCL_OK) { 302 306 return TCL_ERROR; 303 307 } … … 381 385 } 382 386 383 resize_offscreen_buffer( w,h);387 resize_offscreen_buffer((int)w, (int)h); 384 388 fprintf(stdin,"new screen size: %d %d\n",w,h); 385 389 return TCL_OK; … … 488 492 } 489 493 494 495 static int 496 VolumeResizeCmd(ClientData cdata, Tcl_Interp *interp, int argc, CONST84 char *argv[]) 497 { 498 fprintf(stderr, "resize drawing size of the volume command\n"); 499 500 double volume_index, size; 501 502 if (argc != 3) { 503 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 504 " volume_index size \"", (char*)NULL); 505 return TCL_ERROR; 506 } 507 if (Tcl_GetDouble(interp, argv[1], &volume_index) != TCL_OK) { 508 return TCL_ERROR; 509 } 510 if (Tcl_GetDouble(interp, argv[2], &size) != TCL_OK) { 511 return TCL_ERROR; 512 } 513 514 volume[(int)volume_index]->set_size((float) size); 515 return TCL_OK; 516 } 490 517 491 518 static int … … 1143 1170 win_height = h; 1144 1171 1172 //fprintf(stderr, "screen_buffer size: %d\n", sizeof(screen_buffer)); 1173 1145 1174 if (screen_buffer) { 1146 1175 delete[] screen_buffer; 1147 } 1148 screen_buffer = new unsigned char[3*win_width*win_height+1]; 1176 screen_buffer = 0; 1177 } 1178 screen_buffer = new unsigned char[5*win_width*win_height]; 1179 assert(screen_buffer!=0); 1149 1180 1150 1181 //delete the current render buffer resources … … 1288 1319 1289 1320 1321 void make_test_2D_data(){ 1322 1323 int w = 300; 1324 int h = 200; 1325 float* data = new float[w*h]; 1326 1327 //procedurally make a gradient plane 1328 for(int j=0; j<h; j++){ 1329 for(int i=0; i<w; i++){ 1330 data[w*j+i] = float(i)/float(w); 1331 } 1332 } 1333 1334 plane[0] = new Texture2D(w, h, GL_FLOAT, GL_LINEAR, 1, data); 1335 1336 delete[] data; 1337 } 1338 1339 1290 1340 /*----------------------------------------------------*/ 1291 1341 void initGL(void) … … 1297 1347 if (screen_buffer) { 1298 1348 delete[] screen_buffer; 1349 screen_buffer = 0; 1299 1350 } 1300 screen_buffer = new unsigned char[3*win_width*win_height+1]; 1351 screen_buffer = new unsigned char[5*win_width*win_height]; 1352 assert(screen_buffer!=0); 1301 1353 1302 1354 //create the camera with default setting … … 1344 1396 //load_volume_file(0, "./data/input_nd_dx_4"); //take a VERY long time? 1345 1397 //load_vector_file(1, "./data/J-wire-vec.dx"); 1346 load_volume_file(1, "./data/mu-wire-3d.dx");1398 //load_volume_file(1, "./data/mu-wire-3d.dx"); 1347 1399 //load_volume_file(3, "./data/mu-wire-3d.dx"); 1348 1400 //load_volume_file(4, "./data/mu-wire-3d.dx"); … … 1368 1420 //vol_render->add_volume(volume[4], tf[0]); 1369 1421 1422 1423 //create an 2D plane renderer 1424 plane_render = new PlaneRenderer(g_context, win_width, win_height); 1425 make_test_2D_data(); 1426 1427 plane_render->add_plane(plane[0], tf[0]); 1428 1429 1370 1430 //init_particle_system(); 1371 1431 //init_lic(); … … 1400 1460 //enable or disable an existing volume 1401 1461 Tcl_CreateCommand(interp, "volume_enable", VolumeEnableCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL); 1462 //resize volume 1463 Tcl_CreateCommand(interp, "volume_resize", VolumeResizeCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL); 1402 1464 1403 1465 //refresh the screen (render again) … … 1409 1471 //glBindTexture(GL_TEXTURE_2D, 0); 1410 1472 //glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, final_fbo); 1411 glReadPixels(0, 0, win_width, win_height, GL_RGB, GL_UNSIGNED_BYTE, screen_buffer); 1473 1474 //debug: set magic number 1475 memset(screen_buffer, 253, 5*win_width*win_height); 1476 1477 glReadPixels(0, 0, win_width, win_height, GL_RGBA, GL_UNSIGNED_BYTE, screen_buffer); 1478 //glReadPixels(0, 0, win_width, win_height, GL_RGB, GL_UNSIGNED_BYTE, screen_buffer); 1412 1479 assert(glGetError()==0); 1480 1481 fprintf(stderr, "%d %d:", win_width, win_height); 1482 for(int i=5*win_width*win_height-1; i>=0; i--){ 1483 if(screen_buffer[i] != 253){ 1484 fprintf(stderr, "%d\n", i); 1485 i=0; 1486 //fprintf(stderr, "%d ", screen_buffer[i]); 1487 } 1488 } 1413 1489 1414 1490 /* … … 1470 1546 1471 1547 void xinetd_listen(){ 1472 //command:1473 // 0. load data1474 // 1. flip on/off screen1475 // 2. rotation1476 // 3. zoom1477 // 4. more slices1478 // 5. less sleces1479 1548 1480 1549 std::string data; … … 1960 2029 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear screen 1961 2030 1962 glEnable(GL_TEXTURE_2D); 1963 glEnable(GL_DEPTH_TEST); 1964 1965 //camera setting activated 1966 cam->activate(); 1967 1968 //now render things in the scene 1969 // 1970 draw_3d_axis(); 2031 if( volume_mode){ //3D rendering mode 2032 glEnable(GL_TEXTURE_2D); 2033 glEnable(GL_DEPTH_TEST); 2034 2035 //camera setting activated 2036 cam->activate(); 2037 2038 //now render things in the scene 2039 // 2040 draw_3d_axis(); 1971 2041 1972 //lic->render(); //display the line integral convolution result 1973 //soft_display_verts(); 1974 //perf->enable(); 1975 // psys->render(); 1976 //perf->disable(); 1977 //fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count()); 1978 //perf->reset(); 1979 1980 1981 perf->enable(); 1982 vol_render->render_all(); 1983 //fprintf(stderr, "%lf\n", get_time_interval()); 1984 perf->disable(); 1985 2042 //lic->render(); //display the line integral convolution result 2043 //soft_display_verts(); 2044 //perf->enable(); 2045 // psys->render(); 2046 //perf->disable(); 2047 //fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count()); 2048 //perf->reset(); 2049 2050 perf->enable(); 2051 vol_render->render_all(); 2052 //fprintf(stderr, "%lf\n", get_time_interval()); 2053 perf->disable(); 2054 } 2055 else{ //2D rendering mode 2056 2057 perf->enable(); 2058 plane_render->render(); 2059 perf->disable(); 2060 } 2061 2062 1986 2063 #ifdef XINETD 1987 2064 float cost = perf->get_pixel_count(); … … 1995 2072 read_screen(); 1996 2073 #else 1997 //read_screen();2074 read_screen(); 1998 2075 #endif 1999 2076 -
trunk/gui/vizservers/nanovis/nanovis.h
r406 r431 41 41 #include "Lic.h" 42 42 #include "VolumeRenderer.h" 43 #include "PlaneRenderer.h" 43 44 44 45 #include "config.h"
Note: See TracChangeset
for help on using the changeset viewer.