Problem 1360

Summary: Dim lines inside volumes makes visual analysis difficult (Geant4 9.6 b01)
Product: Geant4 Reporter: Alexey <alexey.radkov>
Component: visualization/OpenGLAssignee: John.Allison
Status: RESOLVED FIXED    
Severity: trivial CC: perl
Priority: P5    
Version: other   
Hardware: All   
OS: All   
Attachments: How it looks

Description Alexey 2012-09-25 10:14:33 CEST
1. From the 9.6 b01 Changelog:

        Implemented proper treatment of transparency in OpenGL stored mode
        in the case trajectories pass through or behind transparent persistent
        objects (detector components). Required proper ordering of display list
        execution.

Now trajectories look realistic and it's great! But... It makes difficult to analyze them visually as far as they look too dim inside detector volumes. Probably it makes sense to provide a visualisation option to choose between realistic view and simple plain-color lines. Currently i just back-ported G4OpenGLStoredViewer::DrawDisplayLists() from Geant4 9.5 release in my build and lines look plain again.

2. Very minor. I use G4Scene::GetRunDurationModel() in my application. It returns const std::vector<Model>& (in current stable release the type differs) and i have to provide my own typedef for that. Probably it makes sense to define it inside class G4Scene like

  typedef std::vector<Model> ModelList;

Regards, Alexey.
Comment 1 John.Allison 2012-09-25 14:47:48 CEST
Hi Alexey

Cc: Joseph Perl for views and comments.

First point: You get full strength trajectories with "/vis/viewer/set/hiddenMarker false".  I guess you've tried this.  Get back to us on this.

Second: This is a personal thing, but I avoid setting typedef's in header files because it's one more thing a user has to unpack to understand some code.  I have done it in the past but I now avoid it.  I like to see exactly what I'm dealing with in my own user code (where I very often use typedef's).  So, I'm going to resist this one.

Regards

John
Comment 2 Alexey 2012-09-25 16:21:26 CEST
Created attachment 190 [details]
How it looks
Comment 3 Alexey 2012-09-25 16:21:59 CEST
Hi John.

2. This is OK.

1. I am not sure if "/vis/viewer/set/hiddenMarker false" regards this. I actually use this setting in my vis script. But when i did "/vis/viewer/set/hiddenMarker true" i got really different case. Please see attached image to find what i mean: there are 3 images:

1. Geant 4.9.6, hiddenMarker false
2. Geant 4.9.6, hiddenMarker true
3. Geant 4.9.6 (with G4OpenGLStoredViewer::DrawDisplayLists() ported from Geant4 9.5), hiddenMarker false

Originally i wanted to compare image 1 and image 2: you see that trajectories at image 1 are almost not visible whereas on image 2 they are plain-colored. I am not sure about image 2: it looks like a median between 1 and 2, some lines are dim and some not.

Regards, Alexey.
Comment 4 Alexey 2012-09-25 16:24:56 CEST
> Originally i wanted to compare image 1 and image 2: you see that trajectories
> at image 1 are almost not visible whereas on image 2 they are plain-colored. I
> am not sure about image 2: it looks like a median between 1 and 2, some lines
> are dim and some not.

Sorry, should be:

Originally i wanted to compare image 1 and image 3: you see that trajectories
at image 1 are almost not visible whereas on image 3 they are plain-colored. I
am not sure about image 2: it looks like a median between 1 and 3, some lines
are dim and some not.
Comment 5 John.Allison 2012-10-01 15:58:16 CEST
It did indeed turn out there was a serious bug in dealing with non-hidden markers (non-hidden is the default).   This is fixed in the tag below.  The fix has been tested by the bug reporter and it works for him.  The fix will be part of the next release, 9.6.

27th September 2012  John Allison (opengl-V09-05-37)
- G4OpenGLSceneHandler, G4OpenGLImmediateSceneHandler, G4OpenGLStoredSceneHandler,
  G4OpenGLStoredViewer:
  o Major re-design of scene and transient processing:
    . Three categories foreseen:
      ~ Opaque
      ~ To be treated as transparent
      ~ To be treated as non-hidden.  This applies to markers and polylines if
        hidden markers is _not_ requested, which is the default so that
        trajectories are always visible even if drawing in surface style.
        To change this - /vis/viewer/set/hiddenMarker true.
    . Thus G4OpenGLSceneHandler::ProcessScene() is three-pass-capable.
    . Also G4OpenGLStoredViewer::DrawDisplayLists makes three passes.
    . Appropriate information is stored in the PO or TO.