| 736 | } |
| 737 | |
| 738 | void G4VtkStore::AddNonG4ObjectPolydata(const G4String fileName, const G4VtkVisContext& vc) |
| 739 | { |
| 740 | |
| 741 | vtkSmartPointer<vtkPolyData> pd; |
| 742 | |
| 743 | if (fileName.find("obj") != G4String::npos) { |
| 744 | vtkNew<vtkOBJReader> objReader; |
| 745 | objReader->SetFileName(fileName.c_str()); |
| 746 | objReader->Update(); |
| 747 | pd = objReader->GetOutput(); |
| 748 | } |
| 749 | else if (fileName.find("ply") != G4String::npos) { |
| 750 | vtkNew<vtkPLYReader> plyReader; |
| 751 | plyReader->SetFileName(fileName.c_str()); |
| 752 | plyReader->Update(); |
| 753 | pd = plyReader->GetOutput(); |
| 754 | } |
| 755 | else if (fileName.find("stl") != G4String::npos) { |
| 756 | vtkNew<vtkSTLReader> stlReader; |
| 757 | stlReader->SetFileName(fileName.c_str()); |
| 758 | stlReader->Update(); |
| 759 | pd = stlReader->GetOutput(); |
| 760 | } |
| 761 | else if (fileName.find("vtp") != G4String::npos && fileName.find("vtu") != G4String::npos) { |
| 762 | G4cout << "G4VtkStore::AddNonG4ObjectPolydata> vtp/vtu Warning not yet implemented" << G4endl; |
| 763 | } |
| 764 | |
| 765 | auto pl = std::make_shared<G4VtkPolydataPipeline>(G4String("name"), vc); |
| 766 | |
| 767 | |
| 768 | G4Transform3D fInvObjTrans = vc.fTransform.inverse(); |
| 769 | pl->SetPolydata(pd); |
| 770 | pl->SetActorTransform(vc.fTransform.dx(), vc.fTransform.dy(), vc.fTransform.dz(), |
| 771 | fInvObjTrans.xx(), fInvObjTrans.xy(), fInvObjTrans.xz(), |
| 772 | fInvObjTrans.yx(), fInvObjTrans.yy(), fInvObjTrans.yz(), |
| 773 | fInvObjTrans.zx(), fInvObjTrans.zy(), fInvObjTrans.zz()); |
| 774 | pl->SetActorColour(vc.red, vc.green, vc.blue, vc.alpha); |
| 775 | } |
| 776 | |
| 777 | void G4VtkStore::GetBounds(G4double maxBoundIn[6]) |
| 778 | { |