source: trunk/documents/UserDoc/DocBookUsersGuides/ForApplicationDeveloper/xml/Visualization/introduction.xml@ 1345

Last change on this file since 1345 was 1222, checked in by garnier, 16 years ago

CVS update

File size: 17.5 KB
Line 
1<!-- ******************************************************** -->
2<!-- -->
3<!-- [History] -->
4<!-- Changed by: Katsuya Amako, 15-Jul-2000 -->
5<!-- Changed by: Dennis Wright, 27-Nov-2001 -->
6<!-- Proof read by: Joe Chuma, 5-Jul-1999 -->
7<!-- Converted to DocBook: Katsuya Amako, Aug-2006 -->
8<!-- Added Qt Info: Laurent Garnier, Dec-2008 -->
9<!-- Updates for Qt and HepRApp: Joseph Perl, Dec-2008 -->
10<!-- Typo correction : Laurent Garnier, Dec-2009 -->
11<!-- -->
12<!-- ******************************************************** -->
13
14
15<!-- ******************* Section (Level#1) ****************** -->
16<sect1 id="sect.VisIntro">
17<title>
18Introduction to Visualization
19</title>
20
21<para>
22The Geant4 visualization system was developed in response to a
23diverse set of requirements:
24
25<orderedlist spacing="compact">
26 <listitem><para>
27 Quick response to study geometries, trajectories and hits
28 </para></listitem>
29 <listitem><para>
30 High-quality output for publications
31 </para></listitem>
32 <listitem><para>
33 Flexible camera control to debug complex geometries
34 </para></listitem>
35 <listitem><para>
36 Tools to show volume overlap errors in detector geometries
37 </para></listitem>
38 <listitem><para>
39 Interactive picking to get more information on visualized objects
40 </para></listitem>
41</orderedlist>
42</para>
43
44<para>
45No one graphics system is ideal for all of these requirements,
46and many of the large software frameworks into which Geant4 has
47been incorporated already have their own visualization systems, so
48Geant4 visualization was designed around an abstract interface that
49supports a diverse family of graphics systems. Some of these
50graphics systems use a graphics library compiled with Geant4, such
51as OpenGL, Qt, while others involve a separate application, such as
52HepRApp or DAWN.
53</para>
54
55<!-- ******************* Section (Level#2) ****************** -->
56<sect2 id="sect.VisIntro.What">
57<title>
58What Can be Visualized
59</title>
60
61<para>
62Simulation data can be visualized:
63
64<itemizedlist spacing="compact">
65 <listitem><para>
66 Detector components
67 <itemizedlist spacing="compact">
68 <listitem><para>
69 A hierarchical structure of physical volumes
70 </para></listitem>
71 <listitem><para>
72 A piece of physical volume, logical volume, and solid
73 </para></listitem>
74 </itemizedlist>
75 </para></listitem>
76 <listitem><para>
77 Particle trajectories and tracking steps
78 </para></listitem>
79 <listitem><para>
80 Hits of particles in detector components
81 </para></listitem>
82</itemizedlist>
83</para>
84
85<para>
86Other user defined objects can be visualized:
87
88<itemizedlist spacing="compact">
89 <listitem><para>
90 Polylines, such as coordinate axes
91 </para></listitem>
92 <listitem><para>
93 3D Markers, such as eye guides
94 </para></listitem>
95 <listitem><para>
96 Text, descriptive character strings, comments or titles
97 </para></listitem>
98 <listitem><para>
99 Scales
100 </para></listitem>
101 <listitem><para>
102 Logos
103 </para></listitem>
104</itemizedlist>
105</para>
106
107</sect2>
108
109
110<!-- ******************* Section (Level#2) ****************** -->
111<sect2 id="sect.VisIntro.Choice">
112<title>
113You have a Choice of Visualization Drivers
114</title>
115
116<para>
117The many graphics systems that Geant4 supports are complementary to
118each other.
119
120<itemizedlist spacing="compact">
121 <listitem><para>
122 OpenGL
123 <itemizedlist spacing="compact">
124 <listitem><para>
125 View directly from Geant4
126 </para></listitem>
127 <listitem><para>
128 Requires addition of GL libraries that are freely avialable for all operating systems (and pre-installed on many)
129 </para></listitem>
130 <listitem><para>
131 Rendered, photorealistic image with some interactive features
132 </para></listitem>
133 <listitem><para>
134 zoom, rotate, translate
135 </para></listitem>
136 <listitem><para>
137 Fast response (can usually exploit full potential of graphics
138 hardware)
139 </para></listitem>
140 <listitem><para>
141 Print to EPS (vector and pixel graphics)
142 </para></listitem>
143 </itemizedlist>
144 </para></listitem>
145 <listitem><para>
146 Qt
147 <itemizedlist spacing="compact">
148 <listitem><para>
149 View directly from Geant4
150 </para></listitem>
151 <listitem><para>
152 Requires addition of Qt and GL libraries that are freely available on most operating
153 systems
154 </para></listitem>
155 <listitem><para>
156 Rendered, photorealistic image
157 </para></listitem>
158 <listitem><para>
159 Many interactive features
160 </para></listitem>
161 <listitem><para>
162 zoom, rotate, translate
163 </para></listitem>
164 <listitem><para>
165 Fast response (can usually exploit full potential of graphics
166 hardware)
167 </para></listitem>
168 <listitem><para>
169 Expanded printing ability (vector and pixel graphics)
170 </para></listitem>
171 <listitem><para>
172 Easy interface to make movies
173 </para></listitem>
174 </itemizedlist>
175 </para></listitem>
176 <listitem><para>
177 OpenInventor
178 <itemizedlist spacing="compact">
179 <listitem><para>
180 View directly from Geant4
181 </para></listitem>
182 <listitem><para>
183 Requires addition of OpenInventor libraries (freely available
184 for most Linux systems).
185 </para></listitem>
186 <listitem><para>
187 Rendered, photorealistic image
188 </para></listitem>
189 <listitem><para>
190 Many interactive features
191 </para></listitem>
192 <listitem><para>
193 zoom, rotate, translate
194 </para></listitem>
195 <listitem><para>
196 click to "see inside" opaque
197 volumes
198 </para></listitem>
199 <listitem><para>
200 Fast response (can usually exploit full potential of graphics
201 hardware)
202 </para></listitem>
203 <listitem><para>
204 Expanded printing ability (vector and pixel graphics)
205 </para></listitem>
206 </itemizedlist>
207 </para></listitem>
208 <listitem><para>
209 HepRep
210 <itemizedlist spacing="compact">
211 <listitem><para>
212 Create a file to view in a HepRep browser such as HepRApp,
213 FRED or WIRED4
214 </para></listitem>
215 <listitem><para>
216 Requires a HepRep browser (above options work on any operating system)
217 </para></listitem>
218 <listitem><para>
219 Wireframe or simple area fills (not photorealistic)
220 </para></listitem>
221 <listitem><para>
222 Many interactive features
223 </para></listitem>
224 <listitem><para>
225 zoom, rotate, translate
226 </para></listitem>
227 <listitem><para>
228 click to show attributes (momentum, etc.)
229 </para></listitem>
230 <listitem><para>
231 special projections (FishEye, etc.)
232 </para></listitem>
233 <listitem><para>
234 control visibility from hierarchical (tree) view of data
235 </para></listitem>
236 <listitem><para>
237 Hierarchical view of the geometry
238 </para></listitem>
239 <listitem><para>
240 Export to many vector graphic formats (PostScript, PDF, etc.)
241 </para></listitem>
242 </itemizedlist>
243 </para></listitem>
244 <listitem><para>
245 DAWN
246 <itemizedlist spacing="compact">
247 <listitem><para>
248 Create a file to view in the DAWN Renderer
249 </para></listitem>
250 <listitem><para>
251 Requires DAWN, available for all Linux and Windows systems.
252 </para></listitem>
253 <listitem><para>
254 Rendered, photorealistic image
255 </para></listitem>
256 <listitem><para>
257 No interactive features
258 </para></listitem>
259 <listitem><para>
260 Highest quality technical rendering - output to vector PostScript
261 </para></listitem>
262 </itemizedlist>
263 </para></listitem>
264 <listitem><para>
265 VRML
266 <itemizedlist spacing="compact">
267 <listitem><para>
268 Create a file to view in any VRML browser (some as web browser
269 plug-ins).
270 </para></listitem>
271 <listitem><para>
272 Requires VRML browser (many different choices for different
273 operating systems).
274 </para></listitem>
275 <listitem><para>
276 Rendered, photorealistic image with some interactive features
277 </para></listitem>
278 <listitem><para>
279 zoom, rotate, translate
280 </para></listitem>
281 <listitem><para>
282 Limited printing ability (pixel graphics, not vector graphics)
283 </para></listitem>
284 </itemizedlist>
285 </para></listitem>
286 <listitem><para>
287 RayTracer
288 <itemizedlist spacing="compact">
289 <listitem><para>
290 Create a jpeg file
291 </para></listitem>
292 <listitem><para>
293 Forms image by using Geant4's own tracking
294 to follow photons through the detector
295 </para></listitem>
296 <listitem><para>
297 Can show geometry but not trajectories
298 </para></listitem>
299 <listitem><para>
300 Can render any geometry that Geant4 can handle (such as Boolean
301 solids)
302 </para></listitem>
303 <listitem><para>
304 Supports shadows, transparency and mirrored surfaces
305 </para></listitem>
306 </itemizedlist>
307 </para></listitem>
308 <listitem><para>
309 ASCIITree
310 <itemizedlist spacing="compact">
311 <listitem><para>
312 Text dump of the geometry hierarchy
313 </para></listitem>
314 <listitem><para>
315 Not graphical
316 </para></listitem>
317 <listitem><para>
318 Control over level of detail to be dumped
319 </para></listitem>
320 <listitem><para>
321 Can calculate mass and volume of any hierarchy of volumes
322 </para></listitem>
323 </itemizedlist>
324 </para></listitem>
325</itemizedlist>
326</para>
327
328</sect2>
329
330
331<!-- ******************* Section (Level#2) ****************** -->
332<sect2 id="sect.VisIntro.ChoDrv">
333<title>
334Choose the Driver that Meets Your Needs
335</title>
336
337<para>
338<itemizedlist spacing="compact">
339 <listitem><para>
340 If you want very responsive photorealistic graphics (and have
341 the OpenGL libraries installed)
342 <itemizedlist spacing="compact">
343 <listitem><para>
344 OpenGL is a good solution (if you have the Motif extensions,
345 this also gives GUI control)
346 </para></listitem>
347 </itemizedlist>
348 </para></listitem>
349 <listitem><para>
350 If you want very responsive photorealistic graphics plus more
351 interactivity (and have the OpenInventor or Qt libraries installed)
352 <itemizedlist spacing="compact">
353 <listitem><para>
354 OpenInventor or Qt are good solutions
355 </para></listitem>
356 </itemizedlist>
357 </para></listitem>
358 <listitem><para>
359 If you want GUI control, very responsive photorealistic graphics plus more
360 interactivity (and have the Qt libraries installed).
361 <itemizedlist spacing="compact">
362 <listitem><para>
363 Qt is a good solution
364 </para></listitem>
365 </itemizedlist>
366 </para></listitem>
367 <listitem><para>
368 If you want GUI control, want to be able to pick on items to
369 inquire about them (identity, momentum, etc.), perhaps want to
370 render to vector formats, and a wireframe look will do
371 <itemizedlist spacing="compact">
372 <listitem><para>
373 HepRep will meet your needs
374 </para></listitem>
375 </itemizedlist>
376 </para></listitem>
377 <listitem><para>
378 If you want to render highest quality photorealistic images for
379 use in a poster or a technical design report, and you can live
380 without quick rotate and zoom
381 <itemizedlist spacing="compact">
382 <listitem><para>
383 DAWN is the way to go
384 </para></listitem>
385 </itemizedlist>
386 </para></listitem>
387 <listitem><para>
388 If you want to render to a 3D format that others can view in a
389 variety of commodity browsers (including some web browser plug-ins)
390 <itemizedlist spacing="compact">
391 <listitem><para>
392 VRML is the way to go
393 </para></listitem>
394 </itemizedlist>
395 </para></listitem>
396</itemizedlist>
397
398<?soft-pagebreak ?>
399<itemizedlist spacing="compact">
400 <listitem><para>
401 If you want to visualize a geometry that the other
402 visualization drivers can't handle, or you need
403 transparency or mirrors, and you don't need to
404 visualize trajectories
405 <itemizedlist spacing="compact">
406 <listitem><para>
407 RayTracer will do it
408 </para></listitem>
409 </itemizedlist>
410 </para></listitem>
411 <listitem><para>
412 If you just want to quickly check the geometry hierarchy, or if
413 you want to calculate the volume or mass of any geometry hierarchy
414 <itemizedlist spacing="compact">
415 <listitem><para>
416 ASCIITree will meet your needs
417 </para></listitem>
418 </itemizedlist>
419 </para></listitem>
420 <listitem><para>
421 You can also add your own visualization driver.
422 <itemizedlist spacing="compact">
423 <listitem><para>
424 Geant4's visualization system is modular. By
425 creating just three new classes, you can direct Geant4 information
426 to your own visualization system.
427 </para></listitem>
428 </itemizedlist>
429 </para></listitem>
430</itemizedlist>
431</para>
432
433</sect2>
434
435<!-- ******************* Section (Level#2) ****************** -->
436<sect2 id="sect.VisIntro.CntVis">
437<title>
438Controlling Visualization
439</title>
440
441<para>
442Your Geant4 code stays basically the same no matter which driver
443you use.
444</para>
445
446<para>
447Visualization is performed either with commands or from C++ code.
448
449<itemizedlist spacing="compact">
450 <listitem><para>
451 Some visualization drivers work directly from Geant4
452 <itemizedlist spacing="compact">
453 <listitem><para>
454 OpenGL
455 </para></listitem>
456 <listitem><para>
457 Qt
458 </para></listitem>
459 <listitem><para>
460 OpenInventor
461 </para></listitem>
462 <listitem><para>
463 RayTracer
464 </para></listitem>
465 <listitem><para>
466 ASCIITree
467 </para></listitem>
468 </itemizedlist>
469 </para></listitem>
470 <listitem><para>
471 For other visualization drivers, you first have Geant4 produce
472 a file, and then you have that file rendered by another application
473 (which may have GUI control)
474 <itemizedlist spacing="compact">
475 <listitem><para>
476 HepRep
477 </para></listitem>
478 <listitem><para>
479 DAWN
480 </para></listitem>
481 <listitem><para>
482 VRML
483 </para></listitem>
484 </itemizedlist>
485 </para></listitem>
486</itemizedlist>
487</para>
488
489</sect2>
490
491
492<!-- ******************* Section (Level#2) ****************** -->
493<sect2 id="sect.VisIntro.Details">
494<title>
495Visualization Details
496</title>
497
498<para>
499The following sections of this guide cover the details of Geant4
500visualization:
501
502<itemizedlist spacing="compact">
503 <listitem><para>
504 <xref linkend="sect.VisAddExe" />
505 Adding Visualization to Your Executable
506 </para></listitem>
507 <listitem><para>
508 <xref linkend="sect.VisDrv" />
509 The Visualization Drivers
510 </para></listitem>
511 <listitem><para>
512 <xref linkend="sect.VisCntCmmd" />
513 Controlling Visualization from Commands
514 </para></listitem>
515 <listitem><para>
516 <xref linkend="sect.VisCntCmpl" />
517 Controlling Visualization from Compiled Code
518 </para></listitem>
519 <listitem><para>
520 <xref linkend="sect.VisAtt" />
521 Visualization Attributes
522 </para></listitem>
523 <listitem><para>
524 <xref linkend="sect.VisEnhTrj" />
525 Enhanced Trajectory Drawing
526 </para></listitem>
527 <listitem><para>
528 <xref linkend="sect.VisPlylMrkTxt" />
529 Polylines, Markers and Text
530 </para></listitem>
531 <listitem><para>
532 <xref linkend="sect.MkMovie" />
533 Making a Movie
534 </para></listitem>
535</itemizedlist>
536</para>
537
538<para>
539Other useful references for Geant4 visualization outside of this
540user guide:
541
542<itemizedlist spacing="compact">
543 <listitem><para>
544 Introduction to Geant4 Visualization (
545 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisIntroduction.pdf">
546 pdf</ulink>,
547 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisIntroduction.ppt">
548 ppt</ulink> )
549 </para></listitem>
550 <listitem><para>
551 Geant4 Visualization Commands (
552 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisCommands.pdf">
553 pdf</ulink>,
554 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisCommands.ppt">
555 ppt</ulink> )
556 </para></listitem>
557 <listitem><para>
558 Geant4 Advanced Visualization (
559 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisAdvanced.pdf">
560 pdf</ulink>,
561 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4VisAdvanced.ppt">
562 ppt</ulink> )
563 </para></listitem>
564 <listitem><para>
565 How to Make a Movie (
566 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/HowToMakeAMovie.pdf">
567 pdf</ulink>,
568 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/HowToMakeAMovie.ppt">
569 ppt</ulink> )
570 </para></listitem>
571 <listitem><para>
572 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4HepRAppTutorial/G4HepRAppTutorial.html">
573 Geant4 Visualization Tutorial using the HepRApp HepRep Browser</ulink>
574 </para></listitem>
575 <listitem><para>
576 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4OpenGLTutorial/G4OpenGLTutorial.html">
577 Geant4 Visualization Tutorial using the OpenGL Event Display</ulink>
578 </para></listitem>
579 <listitem><para>
580 <ulink url="http://geant4.slac.stanford.edu/Presentations/vis/G4DAWNTutorial/G4DAWNTutorial.html">
581 Geant4 Visualization Tutorial using the DAWN Event Display</ulink>
582 </para></listitem>
583 <listitem><para>
584 Macro files distributed in Geant4 source in
585 <literal>examples/novice/N03/visTutor/</literal>.
586 </para></listitem>
587</itemizedlist>
588</para>
589
590
591</sect2>
592</sect1>
Note: See TracBrowser for help on using the repository browser.