Ignore:
Timestamp:
Apr 27, 2006, 2:14:52 PM (18 years ago)
Author:
qiaow
Message:

Fixed a bug in VolumeRenderer?.cpp

Location:
trunk/gui/vizservers/nanovis
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/ConvexPolygon.cpp

    r415 r417  
    187187                        }
    188188                        glVertex4fv((float *)&(vertices[i]));
    189                 }
    190          }
     189                        /*
     190                        //debug
     191                        fprintf(stderr, "(%f %f %f %f)",
     192                                        vertices[i].x,
     193                                        vertices[i].y,
     194                                        vertices[i].z,
     195                                        vertices[i].w );
     196                        */
     197                }
     198         }
     199        //fprintf(stderr, " ");
    191200}
    192201
  • trunk/gui/vizservers/nanovis/VolumeRenderer.cpp

    r416 r417  
    3131  tf.clear();
    3232  slice.clear();
    33   add_volume(_vol, _tf, 256);
     33  add_volume(_vol, _tf, 64);
    3434
    3535  //initialize the volume shaders
     
    9393      total_enabled_volumes ++;
    9494  }
    95   fprintf(stderr, "total volumes rendered: %d\n", total_enabled_volumes);
     95  //fprintf(stderr, "total volumes rendered: %d\n", total_enabled_volumes);
    9696
    9797  ConvexPolygon*** polys = new ConvexPolygon**[total_enabled_volumes];  //two dimension pointer array
     
    181181    Vector4 vert4 = (Vector4(+10, -10, -0.5, 1));
    182182
     183#if 1   
    183184    //Render cutplanes first with depth test enabled.
    184185    //They will mark the image with their depth values. Then we render other volume slices.
    185186    //These volume slices will be occluded correctly by the cutplanes and vice versa.
    186     glEnable(GL_DEPTH_TEST);
    187     glDisable(GL_BLEND);
    188 
     187
     188    ConvexPolygon static_poly;
    189189    for(int i=0; i<volume[volume_index]->get_cutplane_count(); i++){
    190190      if(!volume[volume_index]->cutplane_is_enabled(i))
     
    199199        vert3 = Vector4(+10, +10, offset, 1);
    200200        vert4 = Vector4(+10, -10, offset, 1);
     201        //continue;
    201202      }
    202203      else if(axis==2){
     
    205206        vert3 = Vector4(offset, +10, +10, 1);
    206207        vert4 = Vector4(offset, -10, +10, 1);
     208        //continue;
    207209      }
    208210      else if(axis==3){
     
    211213        vert3 = Vector4(+10, offset, +10, 1);
    212214        vert4 = Vector4(-10, offset, +10, 1);
     215        //continue;
    213216      }
    214217
     
    218221      vert4 = model_view_no_trans.transform(vert4);
    219222
    220       ConvexPolygon poly;
    221       poly.vertices.clear();
    222 
    223       poly.append_vertex(vert1);
    224       poly.append_vertex(vert2);
    225       poly.append_vertex(vert3);
    226       poly.append_vertex(vert4);
     223      ConvexPolygon* p = &static_poly;
     224      p->vertices.clear();
     225
     226      p->append_vertex(vert1);
     227      p->append_vertex(vert2);
     228      p->append_vertex(vert3);
     229      p->append_vertex(vert4);
    227230
    228231      for(int k=0; k<6; k++){
    229         poly.clip(volume_planes[k], true);
     232        p->clip(volume_planes[k], true);
    230233      }
    231234
    232       //poly->transform(model_view_inverse);
    233       //poly->translate(shift_4d);
    234       //poly->transform(model_view);
    235       poly.transform(model_view_no_trans_inverse);
    236       poly.transform(model_view_trans);
     235      p->transform(model_view_no_trans_inverse);
     236      p->transform(model_view_trans);
    237237
    238238      glPushMatrix();
    239239      glScalef(volume[volume_index]->aspect_ratio_width, volume[volume_index]->aspect_ratio_height, volume[volume_index]->aspect_ratio_depth);
    240240
    241       activate_one_volume_shader(volume_index, 0, 1);
     241      activate_one_volume_shader(volume_index, .0, 1.);
    242242      glPopMatrix();
    243243
     244      glEnable(GL_DEPTH_TEST);
     245      glDisable(GL_BLEND);
     246
    244247      glBegin(GL_POLYGON);
    245         poly.Emit(true);
     248        p->Emit(true);
    246249      glEnd();
     250      glDisable(GL_DEPTH_TEST);
    247251
    248252      deactivate_one_volume_shader();
    249253    } //done cutplanes
    250 
     254#endif
    251255   
    252256    //Now do volume rendering
     257
     258    vert1 = (Vector4(-10, -10, -0.5, 1));
     259    vert2 = (Vector4(-10, +10, -0.5, 1));
     260    vert3 = (Vector4(+10, +10, -0.5, 1));
     261    vert4 = (Vector4(+10, -10, -0.5, 1));
    253262
    254263    int counter = 0;
     
    286295    }
    287296  } //iterate all volumes
    288 
     297  fprintf(stderr, "total slices: %d\n", total_rendered_slices);
    289298
    290299  //We sort all the polygons according to their eye-space depth, from farthest to the closest.
     
    335344    deactivate_one_volume_shader();
    336345  }
     346  //fprintf(stderr, "\n\n");
     347
    337348
    338349  glDisable(GL_DEPTH_TEST);
  • trunk/gui/vizservers/nanovis/VolumeRenderer.h

    r415 r417  
    1919#include <GL/glew.h>
    2020#include <Cg/cgGL.h>
     21#include <GL/glut.h>
    2122#include <math.h>
    2223#include <stdio.h>
     
    4344  vector <TransferFunction*> tf;//array of corresponding transfer functions
    4445  vector <int> slice;           //array of corresponding number of slices
    45   vector <bool> render_bit;     //bits marking which volume(s) to render
    4646  int n_volumes;
    4747
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r416 r417  
    862862   load_vector_file(0, "./data/J-wire-vec.dx");
    863863   load_volume_file(1, "./data/mu-wire-3d.dx");
    864    load_volume_file(2, "./data/mu-wire-3d.dx");
    865    load_volume_file(3, "./data/mu-wire-3d.dx");
     864   //load_volume_file(2, "./data/mu-wire-3d.dx");
     865   //load_volume_file(3, "./data/mu-wire-3d.dx");
    866866
    867867   init_tf();   //initialize transfer function
     
    872872   //create volume renderer and add volumes to it
    873873   vol_render = new VolumeRenderer(cam, volume[1], tf[0], g_context);
    874    volume[2]->move(Vector3(0.42, 0.1, 0.1));
    875    vol_render->add_volume(volume[2], tf[0], 256);
    876    volume[3]->move(Vector3(0.2, -0.1, -0.1));
    877    vol_render->add_volume(volume[3], tf[0], 256);
     874   //volume[2]->move(Vector3(0.42, 0.1, 0.1));
     875   //vol_render->add_volume(volume[2], tf[0], 256);
     876   //volume[3]->move(Vector3(0.2, -0.1, -0.1));
     877   //vol_render->add_volume(volume[3], tf[0], 256);
    878878
    879879   
  • trunk/gui/vizservers/nanovis/shaders/one_volume.cg

    r416 r417  
    6464  OUT.Color = color;
    6565  //debug
    66   //OUT.Color = float4(tex_coord, 1);
     66  //OUT.Color = float4(tex_coord.xyz, 1);
    6767
    6868  return OUT;
Note: See TracChangeset for help on using the changeset viewer.