Changeset 3142 for trunk/packages
- Timestamp:
- Aug 17, 2012 1:10:39 AM (12 years ago)
- Location:
- trunk/packages/vizservers/vtkvis
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/vtkvis/RpMolecule.cpp
r3141 r3142 40 40 VtkGraphicsObject(), 41 41 _radiusScale(0.3), 42 _atomScaling( VAN_DER_WAALS_RADIUS),42 _atomScaling(COVALENT_RADIUS), 43 43 _labelsOn(false), 44 44 _colorMap(NULL) … … 216 216 _cylinderSource->SetResolution(12); 217 217 _cylinderSource->CappingOff(); 218 _cylinderTrans = vtkSmartPointer<vtkTransformPolyDataFilter>::New(); 219 _cylinderTrans->SetInputConnection(_cylinderSource->GetOutputPort()); 220 vtkSmartPointer<vtkTransform> trans = vtkSmartPointer<vtkTransform>::New(); 221 trans->RotateZ(-90.0); 222 _cylinderTrans->SetTransform(trans); 218 223 } 219 vtkSmartPointer<vtkTransformPolyDataFilter> transPD = vtkSmartPointer<vtkTransformPolyDataFilter>::New();220 transPD->SetInputConnection(_cylinderSource->GetOutputPort());221 vtkSmartPointer<vtkTransform> trans = vtkSmartPointer<vtkTransform>::New();222 trans->RotateZ(-90.0);223 transPD->SetTransform(trans);224 225 _bondMapper->SetSourceConnection( transPD->GetOutputPort());224 if (_lineSource == NULL) { 225 _lineSource = vtkSmartPointer<vtkLineSource>::New(); 226 _lineSource->SetPoint1(-0.5, 0, 0); 227 _lineSource->SetPoint2(0.5, 0, 0); 228 } 229 230 _bondMapper->SetSourceConnection(_cylinderTrans->GetOutputPort()); 226 231 _bondMapper->SetInputConnection(_bondPD->GetProducerPort()); 227 _bondMapper->SetOrientationArray( vtkDataSetAttributes::VECTORS);232 _bondMapper->SetOrientationArray("bond_orientations"); 228 233 _bondMapper->SetOrientationModeToDirection(); 229 234 _bondMapper->OrientOn(); 230 _bondMapper->SetScaleArray( vtkDataSetAttributes::VECTORS);231 _bondMapper->SetScaleModeToScaleBy Magnitude();235 _bondMapper->SetScaleArray("bond_scales"); 236 _bondMapper->SetScaleModeToScaleByVectorComponents(); 232 237 _bondMapper->ScalingOn(); 233 238 _bondMapper->ClampingOff(); … … 614 619 } 615 620 621 void Molecule::setBondStyle(BondStyle style) 622 { 623 #ifdef MOLECULE_USE_GLYPH3D_MAPPER 624 switch (style) { 625 case BOND_STYLE_CYLINDER: 626 if (_bondProp != NULL) { 627 _bondProp->GetProperty()->SetLineWidth(_edgeWidth); 628 _bondProp->GetProperty()->SetLighting(_lighting ? 1 : 0); 629 } 630 if (_bondMapper != NULL && _cylinderTrans != NULL) { 631 _cylinderTrans->Modified(); 632 _bondMapper->SetSourceConnection(_cylinderTrans->GetOutputPort()); 633 _bondMapper->Modified(); 634 } 635 break; 636 case BOND_STYLE_LINE: 637 if (_bondProp != NULL) { 638 _bondProp->GetProperty()->LightingOff(); 639 } 640 if (_bondMapper != NULL && _lineSource != NULL) { 641 _lineSource->Modified(); 642 _bondMapper->SetSourceConnection(_lineSource->GetOutputPort()); 643 _bondMapper->Modified(); 644 } 645 break; 646 default: 647 WARN("Unknown bond style"); 648 } 649 #endif 650 } 651 616 652 /** 617 653 * \brief Set constant bond color … … 680 716 if (_atomMapper != NULL) { 681 717 assert(ds->GetPointData() != NULL && 682 ds->GetPointData()->GetVectors() != NULL);718 ds->GetPointData()->GetVectors() != NULL); 683 719 _atomMapper->SetScaleModeToScaleByMagnitude(); 684 720 _atomMapper->SetScaleArray(vtkDataSetAttributes::VECTORS); … … 708 744 { 709 745 #ifndef MOLECULE_USE_GLYPH3D_MAPPER 710 if (_tuber != NULL) 746 if (_tuber != NULL) { 711 747 _tuber->SetRadius(scale); 748 } 712 749 #else 713 if (_cylinderSource != NULL) 750 if (_cylinderSource != NULL) { 714 751 _cylinderSource->SetRadius(scale); 752 // Workaround bug with source modification not causing 753 // mapper to be updated 754 if (_bondMapper != NULL) { 755 _bondMapper->Modified(); 756 } 757 } 715 758 #endif 716 759 } … … 735 778 vtkSmartPointer<vtkIntArray> bondElements = vtkSmartPointer<vtkIntArray>::New(); 736 779 vtkSmartPointer<vtkDoubleArray> bondVectors = vtkSmartPointer<vtkDoubleArray>::New(); 780 vtkSmartPointer<vtkDoubleArray> bondScales = vtkSmartPointer<vtkDoubleArray>::New(); 737 781 bondElements->SetName("element"); 738 bondVectors->SetName("bond s");782 bondVectors->SetName("bond_orientations"); 739 783 bondVectors->SetNumberOfComponents(3); 784 bondScales->SetName("bond_scales"); 785 bondScales->SetNumberOfComponents(3); 740 786 vtkDataArray *elements = NULL; 741 787 if (pd->GetPointData() != NULL && … … 777 823 TRACE("Bond %d, vec: %g,%g,%g", i, vec[0], vec[1], vec[2]); 778 824 825 double scale[3]; 826 scale[0] = sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]); 827 scale[1] = 1.0; 828 scale[2] = 1.0; 829 830 bondScales->InsertNextTupleValue(scale); 831 bondScales->InsertNextTupleValue(scale); 832 779 833 if (elements != NULL) { 780 834 int element = (int)elements->GetComponent(pts[0], 0); … … 787 841 } 788 842 _bondPD->SetPoints(bondPoints); 789 _bondPD->GetPointData()->SetScalars(bondElements); 790 _bondPD->GetPointData()->SetVectors(bondVectors); 843 if (elements != NULL) 844 _bondPD->GetPointData()->SetScalars(bondElements); 845 _bondPD->GetPointData()->AddArray(bondVectors); 846 _bondPD->GetPointData()->AddArray(bondScales); 791 847 } 792 848 #endif -
trunk/packages/vizservers/vtkvis/RpMolecule.h
r3141 r3142 18 18 #define MOLECULE_USE_GLYPH3D_MAPPER 19 19 #include <vtkGlyph3DMapper.h> 20 #include <vtkTransformPolyDataFilter.h> 20 21 #include <vtkCylinderSource.h> 22 #include <vtkLineSource.h> 21 23 #else 22 24 #include <vtkGlyph3D.h> … … 49 51 COVALENT_RADIUS, 50 52 ATOMIC_RADIUS 53 }; 54 enum BondStyle { 55 BOND_STYLE_CYLINDER, 56 BOND_STYLE_LINE 51 57 }; 52 58 enum ColorMode { … … 120 126 void setBondVisibility(bool state); 121 127 128 void setBondStyle(BondStyle style); 129 122 130 void setBondColor(float color[3]); 123 131 … … 163 171 vtkSmartPointer<vtkPolyData> _bondPD; 164 172 vtkSmartPointer<vtkCylinderSource> _cylinderSource; 173 vtkSmartPointer<vtkTransformPolyDataFilter>_cylinderTrans; 174 vtkSmartPointer<vtkLineSource> _lineSource; 165 175 vtkSmartPointer<vtkGlyph3DMapper> _atomMapper; 166 176 vtkSmartPointer<vtkGlyph3DMapper> _bondMapper;
Note: See TracChangeset
for help on using the changeset viewer.