Changeset 3492 for trunk/packages/vizservers/nanovis/VolumeRenderer.cpp
- Timestamp:
- Mar 13, 2013, 9:57:03 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/VolumeRenderer.cpp
r3452 r3492 23 23 #include <tcl.h> 24 24 25 #include <vrmath/Vector3f.h> 26 #include <vrmath/Matrix4x4d.h> 27 25 28 #include "nanovis.h" 26 29 #include "VolumeRenderer.h" 30 #include "Plane.h" 27 31 #include "ConvexPolygon.h" 28 32 #include "NvStdVertexShader.h" 29 33 #include "Trace.h" 34 35 using namespace vrmath; 30 36 31 37 VolumeRenderer::VolumeRenderer() … … 142 148 143 149 //volume start location 144 Vector3 volPos = volPtr->location();145 Vector3 volScaling = volPtr->getPhysicalScaling();150 Vector3f volPos = volPtr->location(); 151 Vector3f volScaling = volPtr->getPhysicalScaling(); 146 152 147 153 TRACE("VOL POS: %g %g %g", … … 154 160 double z0 = 0; 155 161 156 Mat 4x4model_view_no_trans, model_view_trans;157 Mat 4x4model_view_no_trans_inverse, model_view_trans_inverse;162 Matrix4x4d model_view_no_trans, model_view_trans; 163 Matrix4x4d model_view_no_trans_inverse, model_view_trans_inverse; 158 164 159 165 //initialize volume plane with world coordinates 160 Plane volume_planes[6];166 nv::Plane volume_planes[6]; 161 167 volume_planes[0].setCoeffs( 1, 0, 0, -x0); 162 168 volume_planes[1].setCoeffs(-1, 0, 0, x0+1); … … 172 178 glEnable(GL_DEPTH_TEST); 173 179 174 GL floatmv_no_trans[16];175 glGet Floatv(GL_MODELVIEW_MATRIX, mv_no_trans);176 177 model_view_no_trans = Mat 4x4(mv_no_trans);180 GLdouble mv_no_trans[16]; 181 glGetDoublev(GL_MODELVIEW_MATRIX, mv_no_trans); 182 183 model_view_no_trans = Matrix4x4d(mv_no_trans); 178 184 model_view_no_trans_inverse = model_view_no_trans.inverse(); 179 185 … … 185 191 glScalef(volScaling.x, volScaling.y, volScaling.z); 186 192 187 GL floatmv_trans[16];188 glGet Floatv(GL_MODELVIEW_MATRIX, mv_trans);189 190 model_view_trans = Mat 4x4(mv_trans);193 GLdouble mv_trans[16]; 194 glGetDoublev(GL_MODELVIEW_MATRIX, mv_trans); 195 196 model_view_trans = Matrix4x4d(mv_trans); 191 197 model_view_trans_inverse = model_view_trans.inverse(); 198 199 model_view_trans.print(); 192 200 193 201 //draw volume bounding box with translation (the correct location in … … 234 242 zNear, zFar, eyeMinX, eyeMaxX, eyeMinY, eyeMaxY, z_step, n_actual_slices); 235 243 236 Vector4 vert1, vert2, vert3, vert4;244 Vector4f vert1, vert2, vert3, vert4; 237 245 238 246 // Render cutplanes first with depth test enabled. They will mark the … … 250 258 switch (axis) { 251 259 case 1: 252 vert1 = Vector4 (offset, 0, 0, 1);253 vert2 = Vector4 (offset, 1, 0, 1);254 vert3 = Vector4 (offset, 1, 1, 1);255 vert4 = Vector4 (offset, 0, 1, 1);260 vert1 = Vector4f(offset, 0, 0, 1); 261 vert2 = Vector4f(offset, 1, 0, 1); 262 vert3 = Vector4f(offset, 1, 1, 1); 263 vert4 = Vector4f(offset, 0, 1, 1); 256 264 break; 257 265 case 2: 258 vert1 = Vector4 (0, offset, 0, 1);259 vert2 = Vector4 (1, offset, 0, 1);260 vert3 = Vector4 (1, offset, 1, 1);261 vert4 = Vector4 (0, offset, 1, 1);266 vert1 = Vector4f(0, offset, 0, 1); 267 vert2 = Vector4f(1, offset, 0, 1); 268 vert3 = Vector4f(1, offset, 1, 1); 269 vert4 = Vector4f(0, offset, 1, 1); 262 270 break; 263 271 case 3: 264 272 default: 265 vert1 = Vector4 (0, 0, offset, 1);266 vert2 = Vector4 (1, 0, offset, 1);267 vert3 = Vector4 (1, 1, offset, 1);268 vert4 = Vector4 (0, 1, offset, 1);273 vert1 = Vector4f(0, 0, offset, 1); 274 vert2 = Vector4f(1, 0, offset, 1); 275 vert3 = Vector4f(1, 1, offset, 1); 276 vert4 = Vector4f(0, 1, offset, 1); 269 277 break; 270 278 } 271 279 272 Vector4 texcoord1 = vert1;273 Vector4 texcoord2 = vert2;274 Vector4 texcoord3 = vert3;275 Vector4 texcoord4 = vert4;280 Vector4f texcoord1 = vert1; 281 Vector4f texcoord2 = vert2; 282 Vector4f texcoord3 = vert3; 283 Vector4f texcoord4 = vert4; 276 284 277 285 _cutplaneShader->bind(); … … 310 318 // Initialize view-aligned quads with eye space bounds of 311 319 // volume 312 vert1 = Vector4 (eyeMinX, eyeMinY, -0.5, 1);313 vert2 = Vector4 (eyeMaxX, eyeMinY, -0.5, 1);314 vert3 = Vector4 (eyeMaxX, eyeMaxY, -0.5, 1);315 vert4 = Vector4 (eyeMinX, eyeMaxY, -0.5, 1);320 vert1 = Vector4f(eyeMinX, eyeMinY, -0.5, 1); 321 vert2 = Vector4f(eyeMaxX, eyeMinY, -0.5, 1); 322 vert3 = Vector4f(eyeMaxX, eyeMaxY, -0.5, 1); 323 vert4 = Vector4f(eyeMinX, eyeMaxY, -0.5, 1); 316 324 317 325 size_t counter = 0; … … 389 397 volPtr = volumes[volume_index]; 390 398 391 Vector3 volScaling = volPtr->getPhysicalScaling();399 Vector3f volScaling = volPtr->getPhysicalScaling(); 392 400 393 401 glPushMatrix(); … … 510 518 } 511 519 512 void VolumeRenderer::getEyeSpaceBounds(const Mat 4x4& mv,520 void VolumeRenderer::getEyeSpaceBounds(const Matrix4x4d& mv, 513 521 double& xMin, double& xMax, 514 522 double& yMin, double& yMax, … … 542 550 543 551 for (int i = 0; i < 8; i++) { 544 Vector4 eyeVert = mv.transform(Vector4(vertex[i][0],545 vertex[i][1],546 vertex[i][2],547 vertex[i][3]));552 Vector4f eyeVert = mv.transform(Vector4f(vertex[i][0], 553 vertex[i][1], 554 vertex[i][2], 555 vertex[i][3])); 548 556 if (eyeVert.x < xMin) xMin = eyeVert.x; 549 557 if (eyeVert.x > xMax) xMax = eyeVert.x;
Note: See TracChangeset
for help on using the changeset viewer.