- Timestamp:
- Jul 13, 2013, 2:28:43 AM (11 years ago)
- Location:
- trunk/packages/vizservers/vtkvis
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/vtkvis/Molecule.cpp
r3693 r3795 29 29 #include <vtkLabelPlacementMapper.h> 30 30 #include <vtkTextProperty.h> 31 #include <vtkTransformPolyDataFilter.h> 31 32 32 33 #include "Molecule.h" … … 108 109 _atomProp->GetProperty()->SetOpacity(_opacity); 109 110 _atomProp->GetProperty()->SetAmbient(.2); 111 _atomProp->GetProperty()->SetSpecular(.2); 112 _atomProp->GetProperty()->SetSpecularPower(80.0); 110 113 if (!_lighting) 111 114 _atomProp->GetProperty()->LightingOff(); … … 121 124 _bondProp->GetProperty()->SetOpacity(_opacity); 122 125 _bondProp->GetProperty()->SetAmbient(.2); 126 _bondProp->GetProperty()->SetSpecular(.2); 127 _bondProp->GetProperty()->SetSpecularPower(80.0); 123 128 if (!_lighting) 124 129 _bondProp->GetProperty()->LightingOff(); … … 231 236 _labelHierarchy = vtkSmartPointer<vtkPointSetToLabelHierarchy>::New(); 232 237 } 233 #ifdef USE_VTK6 234 _labelHierarchy->SetInputData(pd); 238 if (_labelTransform == NULL) { 239 _labelTransform = vtkSmartPointer<vtkTransform>::New(); 240 } 241 vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New(); 242 #ifdef USE_VTK6 243 transformFilter->SetInputData(pd); 235 244 #else 236 _labelHierarchy->SetInput(pd);245 transformFilter->SetInput(pd); 237 246 #endif 247 transformFilter->SetTransform(_labelTransform); 248 _labelHierarchy->SetInputConnection(transformFilter->GetOutputPort()); 238 249 _labelHierarchy->SetLabelArrayName("_atom_labels"); 239 250 _labelHierarchy->GetTextProperty()->SetColor(0, 0, 0); … … 255 266 _atomMapper->SetInputConnection(pd->GetProducerPort()); 256 267 #endif 257 if (ds->GetPointData() != NULL && 258 ds->GetPointData()->GetVectors() != NULL) { 259 _atomMapper->SetScaleArray(vtkDataSetAttributes::VECTORS); 260 _atomMapper->SetScaleModeToScaleByMagnitude(); 261 _atomMapper->ScalingOn(); 262 } else { 263 _atomMapper->SetScaleModeToNoDataScaling(); 264 _atomMapper->ScalingOff(); 265 } 268 _atomMapper->SetScaleArray("_radii"); 269 _atomMapper->SetScaleModeToScaleByMagnitude(); 270 _atomMapper->ScalingOn(); 266 271 _atomMapper->OrientOff(); 267 272 … … 283 288 if (pd->GetNumberOfLines() > 0) { 284 289 _bondMapper->Update(); 290 } 291 } 292 293 void Molecule::updateLabelTransform() 294 { 295 if (_labelTransform != NULL && getAssembly() != NULL) { 296 _labelTransform->SetMatrix(getAssembly()->GetMatrix()); 285 297 } 286 298 } … … 797 809 if (_atomMapper != NULL) { 798 810 assert(ds->GetPointData() != NULL && 799 ds->GetPointData()->Get Vectors() != NULL);811 ds->GetPointData()->GetArray("_radii") != NULL); 800 812 _atomMapper->SetScaleModeToScaleByMagnitude(); 801 _atomMapper->SetScaleArray( vtkDataSetAttributes::VECTORS);813 _atomMapper->SetScaleArray("_radii"); 802 814 _atomMapper->ScalingOn(); 803 815 } … … 984 996 ; 985 997 } 986 vtkSmartPointer<vtkFloatArray> radii = vtkSmartPointer<vtkFloatArray>::New();987 radii->SetName("_radii");988 radii->SetNumberOfComponents(3);989 998 vtkPolyData *pd = vtkPolyData::SafeDownCast(dataSet); 990 999 if (pd == NULL) { … … 992 1001 return; 993 1002 } 1003 vtkDataArray *array = dataSet->GetPointData()->GetArray("_radii"); 1004 vtkSmartPointer<vtkFloatArray> radii; 1005 if (array == NULL) { 1006 radii = vtkSmartPointer<vtkFloatArray>::New(); 1007 radii->SetName("_radii"); 1008 radii->SetNumberOfComponents(1); 1009 radii->SetNumberOfValues(pd->GetNumberOfPoints()); 1010 } else { 1011 radii = vtkFloatArray::SafeDownCast(array); 1012 assert(radii != NULL); 1013 } 994 1014 for (int i = 0; i < pd->GetNumberOfPoints(); i++) { 995 float tuple[3]; 996 tuple[1] = tuple[2] = 0; 1015 float value; 997 1016 if (elements != NULL && radiusSource != NULL) { 998 1017 int elt = (int)elements->GetComponent(i, 0); 999 tuple[0]= radiusSource[elt] * scaleFactor;1018 value = radiusSource[elt] * scaleFactor; 1000 1019 } else { 1001 tuple[0] = scaleFactor; 1002 } 1003 radii->InsertNextTupleValue(tuple); 1004 } 1005 dataSet->GetPointData()->SetVectors(radii); 1020 value = scaleFactor; 1021 } 1022 radii->SetValue(i, value); 1023 } 1024 radii->Modified(); 1025 if (array == NULL) { 1026 dataSet->GetPointData()->AddArray(radii); 1027 } 1006 1028 } 1007 1029 -
trunk/packages/vizservers/vtkvis/Molecule.h
r3693 r3795 22 22 #include <vtkPointSetToLabelHierarchy.h> 23 23 #include <vtkLabelPlacementMapper.h> 24 #include <vtkTransform.h> 24 25 25 26 #include "ColorMap.h" … … 78 79 } 79 80 81 virtual void setTransform(vtkMatrix4x4 *matrix) 82 { 83 GraphicsObject::setTransform(matrix); 84 updateLabelTransform(); 85 } 86 87 virtual void setOrigin(double origin[3]) 88 { 89 GraphicsObject::setOrigin(origin); 90 updateLabelTransform(); 91 } 92 93 virtual void setOrientation(double quat[4]) 94 { 95 GraphicsObject::setOrientation(quat); 96 updateLabelTransform(); 97 } 98 99 virtual void setOrientation(double angle, double axis[3]) 100 { 101 GraphicsObject::setOrientation(angle, axis); 102 updateLabelTransform(); 103 } 104 105 virtual void setPosition(double pos[3]) 106 { 107 GraphicsObject::setPosition(pos); 108 updateLabelTransform(); 109 } 110 111 virtual void setAspect(double aspect) 112 { 113 GraphicsObject::setAspect(aspect); 114 updateLabelTransform(); 115 } 116 117 virtual void setScale(double scale[3]) 118 { 119 GraphicsObject::setScale(scale); 120 updateLabelTransform(); 121 } 122 80 123 virtual void setDataSet(DataSet *dataSet, 81 124 Renderer *renderer); … … 140 183 141 184 void setupBondPolyData(); 185 186 void updateLabelTransform(); 142 187 143 188 static void addLabelArray(vtkDataSet *dataSet); … … 171 216 vtkSmartPointer<vtkPointSetToLabelHierarchy> _labelHierarchy; 172 217 vtkSmartPointer<vtkLabelPlacementMapper> _labelMapper; 218 vtkSmartPointer<vtkTransform> _labelTransform; 173 219 }; 174 220
Note: See TracChangeset
for help on using the changeset viewer.