48 fSceneHandler (sceneHandler),
51 fNeedKernelVisit (true)
54 std::ostringstream ost;
125 (
const std::vector<G4PhysicalVolumeModel::G4PhysicalVolumeNodeID>& fullPath)
128 std::ostringstream oss;
129 for (
const auto& pvNodeId: fullPath) {
131 <<
' ' << pvNodeId.GetPhysicalVolume()->GetName()
132 <<
' ' << pvNodeId.GetCopyNo();
138 (
const std::vector<G4PhysicalVolumeModel::G4PhysicalVolumeNodeID>& fullPath,
143 std::ostringstream oss;
144 oss <<
"/vis/touchable/set/visibility ";
145 if (visibiity) oss <<
"true";
else oss <<
"false";
156 fVP.AddVisAttributesModifier
172 (
const std::vector<G4PhysicalVolumeModel::G4PhysicalVolumeNodeID>& fullPath,
177 std::ostringstream oss;
178 oss <<
"/vis/touchable/set/colour "
191 fVP.AddVisAttributesModifier
216 int stepPoints = 500;
229 std::vector <G4ThreeVector> viewVect;
236 for (
int i = 0; i < stepPoints; i++) {
237 float t = (float)i / (
float)stepPoints;
243 G4cout <<
"FLY CR("<< i <<
"):" << cameraPosition <<
G4endl;
244 viewVect.push_back(
G4ThreeVector (cameraPosition.
x(), cameraPosition.
y(), cameraPosition.
z()));
356 #ifdef G4MULTITHREADED
358 void G4VViewer::DoneWithMasterThread () {
362 void G4VViewer::MovingToMasterThread () {
366 void G4VViewer::SwitchToVisSubThread () {
370 void G4VViewer::DoneWithVisSubThread () {
374 void G4VViewer::MovingToVisSubThread () {
378 void G4VViewer::SwitchToMasterThread () {
385 os <<
"View " << v.
fName <<
":\n";
408 float b1 = .5 * ( -t3 + 2*t2 - t);
409 float b2 = .5 * ( 3*t3 - 5*t2 + 2);
410 float b3 = .5 * (-3*t3 + 4*t2 + t);
411 float b4 = .5 * ( t3 - t2 );
413 return (p1*b1 + p2*b2 + p3*b3 + p4*b4);
419 delta_t = (float)1 / (
float)vp.size();
436 int p = (
int)(t / delta_t);
438 #define BOUNDS(pp) { if (pp < 0) pp = 0; else if (pp >= (int)vp.size()-1) pp = vp.size() - 1; }
439 int p0 = p - 1;
BOUNDS(p0);
441 int p2 = p + 1;
BOUNDS(p2);
442 int p3 = p + 2;
BOUNDS(p3);
444 float lt = (t - delta_t*(float)p) / delta_t;
446 return CatmullRom_Eq(lt, vp[p0], vp[p1], vp[p2], vp[p3]);
void SetName(const G4String &)
virtual void ClearStore()
void SetColour(const G4Colour &)
G4double GetAlpha() const
G4String strip(G4int strip_Type=trailing, char c=' ')
void RemoveViewerFromList(G4VViewer *pView)
const G4String & GetName() const
void SetViewParameters(const G4ViewParameters &vp)
HepGeom::Vector3D< G4double > G4Vector3D
void TouchableSetVisibility(const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, G4bool visibility)
G4ViewParameters fDefaultVP
G4VViewer(G4VSceneHandler &, G4int id, const G4String &name="")
static G4UImanager * GetUIpointer()
void TouchableSetColour(const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, const G4Colour &)
const G4ViewParameters & GetDefaultViewParameters() const
G4GLOB_DLL std::ostream G4cout
void SetVisibility(G4bool=true)
G4double GetGreen() const
static G4VisManager * GetInstance()
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
void SetTouchable(const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath)
G4Vector3D GetInterpolatedSplinePoint(float t)
virtual void ProcessScene()
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
G4Vector3D CatmullRom_Eq(float t, const G4Vector3D &p1, const G4Vector3D &p2, const G4Vector3D &p3, const G4Vector3D &p4)
std::vector< G4ThreeVector > ComputeFlyThrough(G4Vector3D *)
G4VSceneHandler & fSceneHandler
G4int ApplyCommand(const char *aCommand)
void AddSplinePoint(const G4Vector3D &v)
virtual void FinishView()