Changeset 2506 for trunk/packages/vizservers/vtkvis
- Timestamp:
- Sep 10, 2011 4:23:33 PM (13 years ago)
- Location:
- trunk/packages/vizservers/vtkvis
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/vtkvis/RpStreamlines.cpp
r2467 r2506 26 26 #include <vtkTransform.h> 27 27 #include <vtkTransformPolyDataFilter.h> 28 #include <vtkVertexGlyphFilter.h> 28 29 29 30 #include "RpStreamlines.h" … … 123 124 _seedActor = vtkSmartPointer<vtkActor>::New(); 124 125 _seedActor->GetProperty()->SetColor(_seedColor[0], _seedColor[1], _seedColor[2]); 126 _seedActor->GetProperty()->SetEdgeColor(_seedColor[0], _seedColor[1], _seedColor[2]); 125 127 _seedActor->GetProperty()->SetLineWidth(1); 126 128 _seedActor->GetProperty()->SetPointSize(2); … … 218 220 // all cells are equal area/volume) 219 221 int cell = rand() % numCells; 220 double bounds[6]; 221 ds->GetCellBounds(cell, bounds); 222 // Note: point is inside AABB of cell, but may be outside the cell 223 getRandomPoint(pt, bounds); 222 int type = ds->GetCellType(cell); 223 if (type == VTK_VERTEX) { 224 vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New(); 225 ds->GetCellPoints(cell, ptIds); 226 assert(ptIds->GetNumberOfIds() == 1); 227 ds->GetPoint(ptIds->GetId(0), pt); 228 } else if (type == VTK_LINE) { 229 double v[2][3]; 230 vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New(); 231 ds->GetCellPoints(cell, ptIds); 232 assert(ptIds->GetNumberOfIds() == 2); 233 for (int i = 0; i < 2; i++) { 234 ds->GetPoint(ptIds->GetId(i), v[i]); 235 } 236 getRandomPointOnLineSegment(pt, v[0], v[1]); 237 } else if (type == VTK_TRIANGLE) { 238 double v[3][3]; 239 vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New(); 240 ds->GetCellPoints(cell, ptIds); 241 assert(ptIds->GetNumberOfIds() == 3); 242 for (int i = 0; i < 3; i++) { 243 ds->GetPoint(ptIds->GetId(i), v[i]); 244 } 245 getRandomPointInTriangle(pt, v[0], v[1], v[2]); 246 } else if (type == VTK_QUAD) { 247 double v[4][3]; 248 vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New(); 249 ds->GetCellPoints(cell, ptIds); 250 assert(ptIds->GetNumberOfIds() == 4); 251 for (int i = 0; i < 4; i++) { 252 ds->GetPoint(ptIds->GetId(i), v[i]); 253 } 254 int tri = rand() & 0x1; 255 if (tri) { 256 getRandomPointInTriangle(pt, v[0], v[1], v[2]); 257 } else { 258 getRandomPointInTriangle(pt, v[0], v[2], v[3]); 259 } 260 } else { 261 double bounds[6]; 262 ds->GetCellBounds(cell, bounds); 263 // Note: point is inside AABB of cell, but may be outside the cell 264 getRandomPoint(pt, bounds); 265 } 224 266 } 225 267 … … 286 328 _seedMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); 287 329 _seedMapper->SetResolveCoincidentTopologyToPolygonOffset(); 330 _seedMapper->ScalarVisibilityOff(); 288 331 } 289 332 290 333 // Set up seed source object 291 setSeedTo RandomPoints(200);334 setSeedToFilledMesh(200); 292 335 293 336 switch (_lineType) { … … 343 386 344 387 /** 345 * \brief Use randomly distributed seed points 388 * \brief Use points of the DataSet associated with this 389 * Streamlines as seeds 390 */ 391 void Streamlines::setSeedToMeshPoints() 392 { 393 setSeedToMeshPoints(_dataSet->getVtkDataSet()); 394 } 395 396 /** 397 * \brief Use seed points randomly distributed within the cells 398 * of the DataSet associated with this Streamlines 346 399 * 347 400 * Note: The current implementation doesn't give a uniform … … 351 404 * \param[in] numPoints Number of random seed points to generate 352 405 */ 353 void Streamlines::setSeedToRandomPoints(int numPoints) 406 void Streamlines::setSeedToFilledMesh(int numPoints) 407 { 408 setSeedToFilledMesh(_dataSet->getVtkDataSet(), numPoints); 409 } 410 411 /** 412 * \brief Use points of a supplied vtkDataSet as seeds 413 * 414 * \param[in] seed vtkDataSet with points to use as seeds 415 */ 416 void Streamlines::setSeedToMeshPoints(vtkDataSet *seed) 417 { 418 if (_streamTracer != NULL) { 419 TRACE("Seed points: %d", seed->GetNumberOfPoints()); 420 vtkSmartPointer<vtkDataSet> oldSeed; 421 if (_streamTracer->GetSource() != NULL) { 422 oldSeed = _streamTracer->GetSource(); 423 } 424 425 _streamTracer->SetSource(seed); 426 if (oldSeed != NULL) { 427 oldSeed->SetPipelineInformation(NULL); 428 } 429 430 if (vtkPolyData::SafeDownCast(seed) != NULL) { 431 _seedMapper->SetInput(vtkPolyData::SafeDownCast(seed)); 432 } else { 433 vtkSmartPointer<vtkVertexGlyphFilter> vertFilter = vtkSmartPointer<vtkVertexGlyphFilter>::New(); 434 vertFilter->SetInput(seed); 435 _seedMapper->SetInputConnection(vertFilter->GetOutputPort()); 436 } 437 } 438 } 439 440 /** 441 * \brief Use seed points randomly distributed within the cells 442 * of a supplied vtkDataSet 443 * 444 * Note: The current implementation doesn't give a uniform 445 * distribution of points, and points outside the mesh bounds 446 * may be generated 447 * 448 * \param[in] ds vtkDataSet containing cells 449 * \param[in] numPoints Number of random seed points to generate 450 */ 451 void Streamlines::setSeedToFilledMesh(vtkDataSet *ds, int numPoints) 354 452 { 355 453 if (_streamTracer != NULL) { … … 359 457 vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New(); 360 458 459 if (ds->GetNumberOfCells() < 1) { 460 ERROR("No cells in mesh"); 461 } 462 361 463 for (int i = 0; i < numPoints; i++) { 362 464 double pt[3]; 363 getRandomCellPt(pt, _dataSet->getVtkDataSet());465 getRandomCellPt(pt, ds); 364 466 TRACE("Seed pt: %g %g %g", pt[0], pt[1], pt[2]); 365 467 pts->InsertNextPoint(pt); … … 1058 1160 _seedColor[1] = color[1]; 1059 1161 _seedColor[2] = color[2]; 1060 if (_seedActor != NULL) 1162 if (_seedActor != NULL) { 1061 1163 _seedActor->GetProperty()->SetColor(_seedColor[0], _seedColor[1], _seedColor[2]); 1164 _seedActor->GetProperty()->SetEdgeColor(_seedColor[0], _seedColor[1], _seedColor[2]); 1165 } 1062 1166 } 1063 1167 -
trunk/packages/vizservers/vtkvis/RpStreamlines.h
r2454 r2506 77 77 virtual void setClippingPlanes(vtkPlaneCollection *planes); 78 78 79 void setSeedToRandomPoints(int numPoints); 79 void setSeedToMeshPoints(); 80 81 void setSeedToFilledMesh(int numPoints); 82 83 void setSeedToMeshPoints(vtkDataSet *ds); 84 85 void setSeedToFilledMesh(vtkDataSet *ds, int numPoints); 80 86 81 87 void setSeedToRake(double start[3], double end[3], int numPoints); -
trunk/packages/vizservers/vtkvis/RpVtkRenderer.cpp
r2492 r2506 6073 6073 6074 6074 /** 6075 * \brief Set the streamlines seed to points of the streamlines DataSet 6076 */ 6077 void Renderer::setStreamlinesSeedToMeshPoints(const DataSetId& id) 6078 { 6079 StreamlinesHashmap::iterator itr; 6080 6081 bool doAll = false; 6082 6083 if (id.compare("all") == 0) { 6084 itr = _streamlines.begin(); 6085 doAll = true; 6086 } else { 6087 itr = _streamlines.find(id); 6088 } 6089 if (itr == _streamlines.end()) { 6090 ERROR("Streamlines not found: %s", id.c_str()); 6091 return; 6092 } 6093 6094 do { 6095 itr->second->setSeedToMeshPoints(); 6096 } while (doAll && ++itr != _streamlines.end()); 6097 6098 _needsRedraw = true; 6099 } 6100 6101 /** 6102 * \brief Set the streamlines seed to points distributed randomly inside 6103 * cells of the streamlines DataSet 6104 */ 6105 void Renderer::setStreamlinesSeedToFilledMesh(const DataSetId& id, int numPoints) 6106 { 6107 StreamlinesHashmap::iterator itr; 6108 6109 bool doAll = false; 6110 6111 if (id.compare("all") == 0) { 6112 itr = _streamlines.begin(); 6113 doAll = true; 6114 } else { 6115 itr = _streamlines.find(id); 6116 } 6117 if (itr == _streamlines.end()) { 6118 ERROR("Streamlines not found: %s", id.c_str()); 6119 return; 6120 } 6121 6122 do { 6123 itr->second->setSeedToFilledMesh(numPoints); 6124 } while (doAll && ++itr != _streamlines.end()); 6125 6126 _needsRedraw = true; 6127 } 6128 6129 /** 6130 * \brief Set the streamlines seed to points of a DataSet 6131 * 6132 * \param[in] id DataSet identifier 6133 * \param[in] data Bytes of VTK DataSet file 6134 * \param[in] nbytes Length of data array 6135 * 6136 * \return boolean indicating success or failure 6137 */ 6138 bool Renderer::setStreamlinesSeedToMeshPoints(const DataSetId& id, 6139 char *data, size_t nbytes) 6140 { 6141 vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New(); 6142 vtkSmartPointer<vtkCharArray> dataSetString = vtkSmartPointer<vtkCharArray>::New(); 6143 6144 dataSetString->SetArray(data, nbytes, 1); 6145 reader->SetInputArray(dataSetString); 6146 reader->ReadFromInputStringOn(); 6147 reader->Update(); 6148 6149 vtkSmartPointer<vtkDataSet> dataSet = reader->GetOutput(); 6150 if (dataSet == NULL) { 6151 return false; 6152 } 6153 dataSet->SetPipelineInformation(NULL); 6154 6155 StreamlinesHashmap::iterator itr; 6156 6157 bool doAll = false; 6158 6159 if (id.compare("all") == 0) { 6160 itr = _streamlines.begin(); 6161 doAll = true; 6162 } else { 6163 itr = _streamlines.find(id); 6164 } 6165 if (itr == _streamlines.end()) { 6166 ERROR("Streamlines not found: %s", id.c_str()); 6167 return false; 6168 } 6169 6170 do { 6171 itr->second->setSeedToMeshPoints(dataSet); 6172 } while (doAll && ++itr != _streamlines.end()); 6173 6174 _needsRedraw = true; 6175 return true; 6176 } 6177 6178 /** 6075 6179 * \brief Set the streamlines seed to points distributed randomly inside 6076 6180 * cells of DataSet 6077 */ 6078 void Renderer::setStreamlinesSeedToRandomPoints(const DataSetId& id, int numPoints) 6079 { 6181 * 6182 * \param[in] id DataSet identifier 6183 * \param[in] data Bytes of VTK DataSet file 6184 * \param[in] nbytes Length of data array 6185 * \param[in] numPoints Number of random seed points to generate 6186 * 6187 * \return boolean indicating success or failure 6188 */ 6189 bool Renderer::setStreamlinesSeedToFilledMesh(const DataSetId& id, 6190 char *data, size_t nbytes, 6191 int numPoints) 6192 { 6193 vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New(); 6194 vtkSmartPointer<vtkCharArray> dataSetString = vtkSmartPointer<vtkCharArray>::New(); 6195 6196 dataSetString->SetArray(data, nbytes, 1); 6197 reader->SetInputArray(dataSetString); 6198 reader->ReadFromInputStringOn(); 6199 reader->Update(); 6200 6201 vtkSmartPointer<vtkDataSet> dataSet = reader->GetOutput(); 6202 if (dataSet == NULL) { 6203 return false; 6204 } 6205 dataSet->SetPipelineInformation(NULL); 6206 6080 6207 StreamlinesHashmap::iterator itr; 6081 6208 … … 6090 6217 if (itr == _streamlines.end()) { 6091 6218 ERROR("Streamlines not found: %s", id.c_str()); 6092 return ;6093 } 6094 6095 do { 6096 itr->second->setSeedTo RandomPoints(numPoints);6219 return false; 6220 } 6221 6222 do { 6223 itr->second->setSeedToFilledMesh(dataSet, numPoints); 6097 6224 } while (doAll && ++itr != _streamlines.end()); 6098 6225 6099 6226 _needsRedraw = true; 6227 return true; 6100 6228 } 6101 6229 -
trunk/packages/vizservers/vtkvis/RpVtkRenderer.h
r2492 r2506 611 611 void setStreamlinesVisibility(const DataSetId& id, bool state); 612 612 613 void setStreamlinesSeedToRandomPoints(const DataSetId& id, int numPoints); 613 void setStreamlinesSeedToMeshPoints(const DataSetId& id); 614 615 void setStreamlinesSeedToFilledMesh(const DataSetId& id, int numPoints); 616 617 bool setStreamlinesSeedToMeshPoints(const DataSetId& id, 618 char *data, size_t nbytes); 619 620 bool setStreamlinesSeedToFilledMesh(const DataSetId& id, 621 char *data, size_t nbytes, 622 int numPoints); 614 623 615 624 void setStreamlinesSeedToRake(const DataSetId& id, -
trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp
r2492 r2506 40 40 } 41 41 return bytesWritten; 42 } 43 44 static size_t 45 SocketRead(void *bytes, size_t len) 46 { 47 #ifdef notdef 48 size_t ofs = 0; 49 ssize_t bytesRead = 0; 50 while ((bytesRead = read(g_fdIn, bytes + ofs, len - ofs)) > 0) { 51 ofs += bytesRead; 52 if (ofs == len) 53 break; 54 } 55 TRACE("bytesRead: %lu", ofs); 56 return ofs; 57 #else 58 size_t bytesRead = fread(bytes, 1, len, g_fIn); 59 TRACE("bytesRead: %lu", bytesRead); 60 return bytesRead; 61 #endif 42 62 } 43 63 … … 1302 1322 } 1303 1323 char *data = (char *)malloc(nbytes); 1304 #ifdef notdef 1305 size_t ofs = 0; 1306 ssize_t bytesRead = 0; 1307 while ((bytesRead = read(g_fdIn, data + ofs, nbytes - ofs)) > 0) { 1308 ofs += bytesRead; 1309 if (ofs == nbytes) 1310 break; 1311 } 1312 TRACE("bytesRead: %d", ofs); 1324 size_t bytesRead = SocketRead(data, nbytes); 1313 1325 if (bytesRead < 0) { 1314 1326 free(data); 1315 1327 return TCL_ERROR; 1316 1328 } 1317 #else1318 size_t bytesRead = fread(data, 1, nbytes, g_fIn);1319 TRACE("bytesRead: %d", bytesRead);1320 if (bytesRead < (size_t)nbytes) {1321 free(data);1322 return TCL_ERROR;1323 }1324 #endif1325 1329 g_renderer->addDataSet(name); 1326 1330 g_renderer->setData(name, data, nbytes); … … 4318 4322 4319 4323 static int 4324 StreamlinesSeedFilledMeshOp(ClientData clientData, Tcl_Interp *interp, 4325 int objc, Tcl_Obj *const *objv) 4326 { 4327 int numPoints = 0; 4328 if (Tcl_GetIntFromObj(interp, objv[3], &numPoints) != TCL_OK || 4329 numPoints < 1) { 4330 return TCL_ERROR; 4331 } 4332 const char *string = Tcl_GetString(objv[4]); 4333 char c = string[0]; 4334 if ((c != 'd') || (strcmp(string, "data") != 0)) { 4335 Tcl_AppendResult(interp, "bad streamlines seed fmesh option \"", 4336 string, "\": should be data", (char*)NULL); 4337 return TCL_ERROR; 4338 } 4339 string = Tcl_GetString(objv[5]); 4340 c = string[0]; 4341 if ((c != 'f') || (strcmp(string, "follows") != 0)) { 4342 Tcl_AppendResult(interp, "bad streamlines seed fmesh option \"", 4343 string, "\": should be follows", (char*)NULL); 4344 return TCL_ERROR; 4345 } 4346 int nbytes = 0; 4347 if (Tcl_GetIntFromObj(interp, objv[6], &nbytes) != TCL_OK || 4348 nbytes < 0) { 4349 return TCL_ERROR; 4350 } 4351 char *data = (char *)malloc(nbytes); 4352 size_t bytesRead = SocketRead(data, nbytes); 4353 if (bytesRead < 0) { 4354 free(data); 4355 return TCL_ERROR; 4356 } 4357 if (objc == 8) { 4358 const char *name = Tcl_GetString(objv[7]); 4359 if (!g_renderer->setStreamlinesSeedToFilledMesh(name, data, nbytes, 4360 numPoints)) { 4361 free(data); 4362 Tcl_AppendResult(interp, "Couldn't read mesh data or streamlines not found", (char*)NULL); 4363 return TCL_ERROR; 4364 } 4365 } else { 4366 if (!g_renderer->setStreamlinesSeedToFilledMesh("all", data, nbytes, 4367 numPoints)) { 4368 free(data); 4369 Tcl_AppendResult(interp, "Couldn't read mesh data or streamlines not found", (char*)NULL); 4370 return TCL_ERROR; 4371 } 4372 } 4373 free(data); 4374 return TCL_OK; 4375 } 4376 4377 static int 4378 StreamlinesSeedMeshPointsOp(ClientData clientData, Tcl_Interp *interp, 4379 int objc, Tcl_Obj *const *objv) 4380 { 4381 const char *string = Tcl_GetString(objv[3]); 4382 char c = string[0]; 4383 if ((c != 'd') || (strcmp(string, "data") != 0)) { 4384 Tcl_AppendResult(interp, "bad streamlines seed fmesh option \"", 4385 string, "\": should be data", (char*)NULL); 4386 return TCL_ERROR; 4387 } 4388 string = Tcl_GetString(objv[4]); 4389 c = string[0]; 4390 if ((c != 'f') || (strcmp(string, "follows") != 0)) { 4391 Tcl_AppendResult(interp, "bad streamlines seed fmesh option \"", 4392 string, "\": should be follows", (char*)NULL); 4393 return TCL_ERROR; 4394 } 4395 int nbytes = 0; 4396 if (Tcl_GetIntFromObj(interp, objv[5], &nbytes) != TCL_OK || 4397 nbytes < 0) { 4398 return TCL_ERROR; 4399 } 4400 char *data = (char *)malloc(nbytes); 4401 size_t bytesRead = SocketRead(data, nbytes); 4402 if (bytesRead < 0) { 4403 free(data); 4404 return TCL_ERROR; 4405 } 4406 if (objc == 7) { 4407 const char *name = Tcl_GetString(objv[6]); 4408 if (!g_renderer->setStreamlinesSeedToMeshPoints(name, data, nbytes)) { 4409 free(data); 4410 Tcl_AppendResult(interp, "Couldn't read mesh data or streamlines not found", (char*)NULL); 4411 return TCL_ERROR; 4412 } 4413 } else { 4414 if (!g_renderer->setStreamlinesSeedToMeshPoints("all", data, nbytes)) { 4415 free(data); 4416 Tcl_AppendResult(interp, "Couldn't read mesh data or streamlines not found", (char*)NULL); 4417 return TCL_ERROR; 4418 } 4419 } 4420 free(data); 4421 return TCL_OK; 4422 } 4423 4424 static int 4425 StreamlinesSeedPointsOp(ClientData clientData, Tcl_Interp *interp, int objc, 4426 Tcl_Obj *const *objv) 4427 { 4428 if (objc == 4) { 4429 const char *name = Tcl_GetString(objv[3]); 4430 g_renderer->setStreamlinesSeedToMeshPoints(name); 4431 } else { 4432 g_renderer->setStreamlinesSeedToMeshPoints("all"); 4433 } 4434 return TCL_OK; 4435 } 4436 4437 static int 4320 4438 StreamlinesSeedPolygonOp(ClientData clientData, Tcl_Interp *interp, int objc, 4321 4439 Tcl_Obj *const *objv) … … 4430 4548 if (objc == 5) { 4431 4549 const char *name = Tcl_GetString(objv[4]); 4432 g_renderer->setStreamlinesSeedTo RandomPoints(name, numPoints);4433 } else { 4434 g_renderer->setStreamlinesSeedTo RandomPoints("all", numPoints);4550 g_renderer->setStreamlinesSeedToFilledMesh(name, numPoints); 4551 } else { 4552 g_renderer->setStreamlinesSeedToFilledMesh("all", numPoints); 4435 4553 } 4436 4554 return TCL_OK; … … 4457 4575 {"color", 1, StreamlinesSeedColorOp, 6, 7, "r g b ?dataSetName?"}, 4458 4576 {"disk", 1, StreamlinesSeedDiskOp, 12, 13, "centerX centerY centerZ normalX normalY normalZ radius innerRadius numPoints ?dataSetName?"}, 4459 {"fpoly", 1, StreamlinesSeedFilledPolygonOp, 13, 14, "centerX centerY centerZ normalX normalY normalZ angle radius numSides numPoints ?dataSetName?"}, 4460 {"polygon", 1, StreamlinesSeedPolygonOp, 12, 13, "centerX centerY centerZ normalX normalY normalZ angle radius numSides ?dataSetName?"}, 4577 {"fmesh", 2, StreamlinesSeedFilledMeshOp, 7, 8, "numPoints data follows nbytes ?dataSetName?"}, 4578 {"fpoly", 2, StreamlinesSeedFilledPolygonOp, 13, 14, "centerX centerY centerZ normalX normalY normalZ angle radius numSides numPoints ?dataSetName?"}, 4579 {"mesh", 1, StreamlinesSeedMeshPointsOp, 6, 7, "data follows nbytes ?dataSetName?"}, 4580 {"points", 3, StreamlinesSeedPointsOp, 3, 4, "?dataSetName?"}, 4581 {"polygon", 3, StreamlinesSeedPolygonOp, 12, 13, "centerX centerY centerZ normalX normalY normalZ angle radius numSides ?dataSetName?"}, 4461 4582 {"rake", 3, StreamlinesSeedRakeOp, 10, 11, "startX startY startZ endX endY endZ numPoints ?dataSetName?"}, 4462 4583 {"random", 3, StreamlinesSeedRandomOp, 4, 5, "numPoints ?dataSetName?"}, … … 4534 4655 {"ribbons", 1, StreamlinesRibbonsOp, 4, 5, "width angle ?dataSetName?"}, 4535 4656 {"scale", 2, StreamlinesScaleOp, 5, 6, "sx sy sz ?dataSetName?"}, 4536 {"seed", 2, StreamlinesSeedOp, 4, 14, "op params... ?dataSetName?"},4657 {"seed", 2, StreamlinesSeedOp, 3, 14, "op params... ?dataSetName?"}, 4537 4658 {"tubes", 1, StreamlinesTubesOp, 4, 5, "numSides radius ?dataSetName?"}, 4538 4659 {"visible", 1, StreamlinesVisibleOp, 3, 4, "bool ?dataSetName?"} -
trunk/packages/vizservers/vtkvis/Trace.cpp
r2100 r2506 3 3 * Copyright (C) 2011, Purdue Research Foundation 4 4 * 5 * Author: ?5 * Author: George A. Howlett <gah@purdue.edu> 6 6 */ 7 7 -
trunk/packages/vizservers/vtkvis/Trace.h
r2100 r2506 3 3 * Copyright (C) 2011, Purdue Research Foundation 4 4 * 5 * Author: ?5 * Author: George A. Howlett <gah@purdue.edu> 6 6 */ 7 7 -
trunk/packages/vizservers/vtkvis/protocol.txt
r2503 r2506 306 306 Create a disk seed area with optional hole, filled with randomly 307 307 placed points 308 streamlines seed fmesh <numPoints> data follows <nbytes> <?datasetName?> 309 Fill a mesh supplied as a VTK data file with randomly placed points 308 310 streamlines seed fpoly <centerX> <centerY> <centerZ> <normalX> <normalY> <normalZ> <angle> <radius> <numSides> <numPoints> <?dataSetName?> 309 311 Create a regular n-sided polygonal seed area filled with randomly 310 312 placed points 313 streamlines seed mesh data follows <nbytes> <?datasetName?> 314 Use points of a mesh supplied as a VTK data file 315 streamlines seed points <?datasetName?> 316 Use points of the streamlines' dataset mesh 311 317 streamlines seed polygon <centerX> <centerY> <centerZ> <normalX> <normalY> <normalZ> <angle> <radius> <numSides> <?dataSetName?> 312 318 Create seed points from vertices of a regular n-sided polygon 313 319 streamlines seed rake <startX> <startY> <startZ> <endX> <endY> <endZ> <numPoints> <?datasetName?> 314 320 streamlines seed random <numPoints> <?datasetName?> 321 Fill the streamlines' dataset mesh with randomly placed points 315 322 streamlines seed visible <bool> <?datasetName?> 316 323 streamlines tubes <numSides> <radius> <?datasetName?>
Note: See TracChangeset
for help on using the changeset viewer.