source: trunk/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc

Last change on this file was 1347, checked in by garnier, 15 years ago

geant4 tag 9.4

File size: 19.5 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id: G4VRML2SceneHandlerFunc.icc,v 1.21 2010/11/11 00:14:50 akimura Exp $
28// GEANT4 tag $Name: geant4-09-04-ref-00 $
29//
30// G4VRML2SceneHandlerFunc.icc
31// Satoshi Tanaka & Yasuhide Sawada
32
33//#define DEBUG_SCENE_FUNC
34
35#include "G4VisManager.hh"
36
37void G4VRML2SCENEHANDLER::AddSolid(const G4Trd& trd)
38{
39#if defined DEBUG_SCENE_FUNC
40 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
41 G4cout << "***** AddSolid trd" << "\n" ;
42#endif
43 VRMLBeginModeling () ;
44 G4VSceneHandler::AddSolid(trd);
45}
46
47void G4VRML2SCENEHANDLER::AddSolid(const G4Trap& trap)
48{
49#if defined DEBUG_SCENE_FUNC
50 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
51 G4cout << "***** AddSolid trap" << "\n" ;
52#endif
53 VRMLBeginModeling () ;
54 G4VSceneHandler::AddSolid(trap);
55}
56
57void G4VRML2SCENEHANDLER::AddSolid(const G4Para& para)
58{
59#if defined DEBUG_SCENE_FUNC
60 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
61 G4cout << "***** AddSolid para" << "\n" ;
62#endif
63 VRMLBeginModeling () ;
64 G4VSceneHandler::AddSolid(para);
65}
66
67void G4VRML2SCENEHANDLER::AddSolid(const G4Torus& torus )
68{
69#if defined DEBUG_SCENE_FUNC
70 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
71 G4cout << "***** AddSolid torus" << "\n" ;
72#endif
73 VRMLBeginModeling () ;
74 G4VSceneHandler::AddSolid(torus);
75}
76
77
78void G4VRML2SCENEHANDLER::AddSolid(const G4VSolid& vsolid)
79{
80#if defined DEBUG_SCENE_FUNC
81 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
82 G4cout << "***** AddSolid vsolid" << "\n" ;
83#endif
84 VRMLBeginModeling () ;
85 G4VSceneHandler::AddSolid(vsolid);
86}
87
88void G4VRML2SCENEHANDLER::AddSolid(const G4Tubs& tubs)
89{
90#if defined DEBUG_SCENE_FUNC
91 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
92 G4cout << "***** AddSolid tubs" << "\n" ;
93#endif
94 VRMLBeginModeling () ;
95 G4VSceneHandler::AddSolid(tubs) ;
96
97}
98
99
100void G4VRML2SCENEHANDLER::AddSolid(const G4Cons& cons)
101{
102#if defined DEBUG_SCENE_FUNC
103 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
104 G4cout << "***** AddSolid cons" << "\n" ;
105#endif
106 VRMLBeginModeling () ;
107 G4VSceneHandler::AddSolid(cons) ;
108}
109
110void G4VRML2SCENEHANDLER::AddSolid(const G4Box& box)
111{
112#if defined DEBUG_SCENE_FUNC
113 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
114 G4cout << "***** AddSolid box" << "\n" ;
115#endif
116 VRMLBeginModeling () ;
117 G4VSceneHandler::AddSolid(box) ;
118}
119
120
121void G4VRML2SCENEHANDLER::AddSolid(const G4Sphere& sphere)
122{
123#if defined DEBUG_SCENE_FUNC
124 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
125 G4cout << "***** AddSolid sphere" << "\n" ;
126#endif
127 VRMLBeginModeling () ;
128 G4VSceneHandler::AddSolid(sphere) ;
129}
130
131void G4VRML2SCENEHANDLER::AddPrimitive(const G4Polyline& polyline)
132{
133#if defined DEBUG_SCENE_FUNC
134 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
135 G4cout << "***** AddPrimitive polyline" << "\n" ;
136#endif
137
138 VRMLBeginModeling () ;
139
140 // VRML codes are generated below
141
142 fDest << "#---------- POLYLINE" << "\n";
143 fDest << "Shape {" << "\n";
144
145 SendLineColor ( polyline.GetVisAttributes() );
146
147 fDest << "\t" << "geometry IndexedLineSet {" << "\n";
148
149 fDest << "\t\t" << "coord Coordinate {" << "\n";
150 fDest << "\t\t\t" << "point [" << "\n";
151 G4int e, i;
152 for (i = 0, e = polyline.size(); e; i++, e--) {
153
154 G4Point3D point = polyline[i];
155 point.transform( *fpObjectTransformation );
156
157 fDest << "\t\t\t\t";
158 fDest << point.x() << " ";
159 fDest << point.y() << " ";
160 fDest << point.z() << "," << "\n";
161
162 } // for
163
164 fDest << "\t\t\t" << "]" << "\n"; // point
165 fDest << "\t\t" << "}" << "\n"; // coord
166
167 fDest << "\t\t" << "coordIndex [";
168 for (i = 0, e = polyline.size(); e; i++, e--) {
169 if (i % 10 == 0)
170 fDest << "\n" << "\t\t\t";
171 fDest << i << ", ";
172 }
173 fDest << "-1" << "\n";
174 fDest << "\t\t" << "]" << "\n"; // coordIndex
175 fDest << "\t" << "}" << "\n"; // geometry IndexedLineSet
176
177 fDest << "}" << "\n"; // Shape
178}
179
180
181void G4VRML2SCENEHANDLER::AddPrimitive(const G4Polyhedron& polyhedron)
182{
183#if defined DEBUG_SCENE_FUNC
184 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
185 G4cout << "***** AddPrimitive(G4Polyhedron)" << "\n";
186#endif
187
188 if (polyhedron.GetNoFacets() == 0) return;
189
190 VRMLBeginModeling () ;
191
192 // Transparency checking: If completely transparent, skip drawing
193 if ( GetPVTransparency() > 0.99 ) { return ; }
194
195 // Current Model
196 const G4VModel* pv_model = GetModel();
197 G4String pv_name = "No model";
198 if (pv_model) pv_name = pv_model->GetCurrentTag() ;
199
200 // VRML codes are generated below
201
202 fDest << "#---------- SOLID: " << pv_name << "\n";
203
204 if ( IsPVPickable() ) {
205
206 fDest << "Anchor {" << "\n";
207 fDest << " description " << "\"" << pv_name << "\"" << "\n";
208 fDest << " url \"\" " << "\n";
209 fDest << " children [" << "\n";
210 }
211
212 fDest << "\t"; fDest << "Shape {" << "\n";
213
214 SendMaterialNode();
215
216 fDest << "\t\t" << "geometry IndexedFaceSet {" << "\n";
217
218 fDest << "\t\t\t" << "coord Coordinate {" << "\n";
219 fDest << "\t\t\t\t" << "point [" << "\n";
220 G4int i, j;
221 for (i = 1, j = polyhedron.GetNoVertices(); j; j--, i++) {
222 G4Point3D point = polyhedron.GetVertex(i);
223
224 point.transform( *fpObjectTransformation );
225
226 fDest << "\t\t\t\t\t";
227 fDest << point.x() << " ";
228 fDest << point.y() << " ";
229 fDest << point.z() << "," << "\n";
230 }
231 fDest << "\t\t\t\t" << "]" << "\n"; // point
232 fDest << "\t\t\t" << "}" << "\n"; // coord
233
234 fDest << "\t\t\t" << "coordIndex [" << "\n";
235
236 // facet loop
237 G4int f;
238 for (f = polyhedron.GetNoFacets(); f; f--) {
239
240 // edge loop
241 G4bool notLastEdge;
242 G4int index = -1, edgeFlag = 1;
243 fDest << "\t\t\t\t";
244 do {
245 notLastEdge = polyhedron.GetNextVertexIndex(index, edgeFlag);
246 fDest << index - 1 << ", ";
247 } while (notLastEdge);
248 fDest << "-1," << "\n";
249 }
250 fDest << "\t\t\t" << "]" << "\n"; // coordIndex
251
252 fDest << "\t\t\t" << "solid FALSE" << "\n"; // draw backfaces
253
254 fDest << "\t\t" << "}" << "\n"; // IndexFaceSet
255 fDest << "\t" << "}" << "\n"; // Shape
256
257 if ( IsPVPickable() ) {
258 fDest << " ]" << "\n"; // children
259 fDest << "}" << "\n"; // Anchor
260 }
261
262}
263
264
265void G4VRML2SCENEHANDLER::AddPrimitive(const G4NURBS&)
266{
267#if defined DEBUG_SCENE_FUNC
268 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
269 G4cout << "***** AddPrimitive nurbs" << "\n" ;
270#endif
271 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
272 G4cout << "G4VRML2File::AddPrimitive(G4NURBS&): not implemented. " << "\n" ;
273
274 VRMLBeginModeling () ;
275}
276
277void G4VRML2SCENEHANDLER::AddPrimitive( const G4Text& )
278{
279#if defined DEBUG_SCENE_FUNC
280 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
281 G4cout << "***** AddPrimitive text" << "\n" ;
282#endif
283 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
284 G4cout <<
285 "***** void G4VRML2SCENEHANDLER::AddPrimitive( const G4Text& text )"
286 " not implemented yet."
287 << "\n";
288
289 VRMLBeginModeling () ;
290
291}
292
293void G4VRML2SCENEHANDLER::AddPrimitive( const G4Circle& circle )
294{
295#if defined DEBUG_SCENE_FUNC
296 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
297 G4cout << "***** AddPrimitive circle" << "\n" ;
298#endif
299 VRMLBeginModeling () ;
300
301 // Information
302// const char* info = NULL ;
303 const char* info = circle.GetInfo() ;
304
305 // Position and half size of circle
306 G4double X, Y, Z ; GetMarkerWorldPosition( circle, &X, &Y, &Z ) ;
307 G4double radius = GetMarkerHalfSize ( circle );
308
309 // VRML codes are generated below
310 fDest << "#---------- 3D MARKER (Circle)" << "\n";
311 fDest << "Anchor {" << "\n";
312
313 if( circle.GetInfo().isNull() ) {
314 fDest << " description " << "\"(" << X << " " ;
315 fDest << Y << " " ;
316 fDest << Z << ")\"" << "\n";
317 } else {
318 fDest << " description " << "\"" << info << "\"" << "\n";
319 }
320
321
322 fDest << " url \"\" " << "\n";
323
324 fDest << " children [" << "\n";
325
326 fDest << " Transform {" << "\n";
327
328 fDest << " translation ";
329 fDest << X << " " << Y << " " << Z << "\n";
330
331 fDest << " children [" << "\n";
332
333 fDest << "\t" << "Shape {" << "\n";
334
335 SendMarkerColor( circle );
336
337 // send shape with size
338 fDest << "\t\t" << "geometry Sphere {" << "\n";
339 fDest << "\t\t\t" << "radius " << radius << "\n";
340 fDest << "\t\t" << "}" << "\n";
341
342 fDest << "\t" << "}" << "\n"; // Shape
343
344 fDest << " ]" << "\n"; // children
345 fDest << " }" << "\n"; // Transform
346
347 fDest << " ]" << "\n"; // children
348 fDest << "}" << "\n"; // Anchor
349
350}
351
352void G4VRML2SCENEHANDLER::AddPrimitive(const G4Square& square)
353{
354#if defined DEBUG_SCENE_FUNC
355 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
356 G4cout << "***** AddPrimitive square" << "\n" ;
357#endif
358
359 VRMLBeginModeling () ;
360
361 // Information
362// const char* info = NULL ;
363 const char* info = square.GetInfo() ;
364
365 // Position and size of square
366 G4double X, Y, Z ; GetMarkerWorldPosition ( square, &X, &Y, &Z ) ;
367 G4double radius = GetMarkerHalfSize ( square );
368 G4double diameter = 2.0 * radius ;
369
370 // VRML codes are generated below
371 fDest << "#---------- 3D MARKER (Square)" << "\n";
372 fDest << "Anchor {" << "\n";
373
374 if( square.GetInfo().isNull() ) {
375 fDest << " description " << "\"(" << X << " " ;
376 fDest << Y << " " ;
377 fDest << Z << ")\"" << "\n";
378 } else {
379 fDest << " description " << "\"" << info << "\"" << "\n";
380 }
381
382 fDest << " url \"\" " << "\n";
383
384 fDest << " children [" << "\n";
385
386 fDest << " Transform {" << "\n";
387
388 fDest << " translation ";
389 fDest << X << " " << Y << " " << Z << "\n";
390
391 fDest << " children [" << "\n";
392
393 fDest << "\t" << "Shape {" << "\n";
394
395 SendMarkerColor( square );
396
397 // send shape with size
398 fDest << "\t\t" << "geometry Box {" << "\n";
399 fDest << "\t\t\t" << "size " << diameter << " " ;
400 fDest << diameter << " " ;
401 fDest << diameter << "\n" ;
402 fDest << "\t\t" << "}" << "\n";
403
404 fDest << "\t" << "}" << "\n"; // Shape
405
406 fDest << " ]" << "\n"; // children
407 fDest << " }" << "\n"; // Transform
408
409 fDest << " ]" << "\n"; // children
410 fDest << "}" << "\n"; // Anchor
411
412}
413
414void G4VRML2SCENEHANDLER::BeginModeling()
415{
416#if defined DEBUG_SCENE_FUNC
417 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
418 G4cout << "***** BeginModeling" << "\n" ;
419#endif
420 G4VSceneHandler::BeginModeling();
421
422}
423
424void G4VRML2SCENEHANDLER::EndModeling()
425{
426#if defined DEBUG_SCENE_FUNC
427 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
428 G4cout << "***** EndModeling " << "\n" ;
429#endif
430 G4VSceneHandler::EndModeling();
431}
432
433void G4VRML2SCENEHANDLER::BeginPrimitives(const G4Transform3D& objectTransformation)
434{
435 G4VSceneHandler::BeginPrimitives (objectTransformation);
436 fpObjectTransformation = &objectTransformation;
437#if defined DEBUG_SCENE_FUNC
438 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
439 G4cout << "***** BeginPrimitives " << "\n" ;
440#endif
441 VRMLBeginModeling();
442}
443
444void G4VRML2SCENEHANDLER::EndPrimitives()
445{
446#if defined DEBUG_SCENE_FUNC
447 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
448 G4cout << "***** EndPrimitives " << "\n" ;
449#endif
450 G4VSceneHandler::EndPrimitives();
451}
452
453void G4VRML2SCENEHANDLER::SendMaterialNode( const G4VisAttributes* pVA )
454{
455 // Initialization of drawing parameters
456 G4bool flagWF = false ;
457 G4double TRANSPARENCY = GetPVTransparency() ;
458
459 // Wireframe or not
460 const G4ViewParameters& cur_view_param = fpViewer -> GetViewParameters ();
461 if (pVA->IsForceDrawingStyle() &&
462 (pVA->GetForcedDrawingStyle() == G4VisAttributes::wireframe))
463 {
464 // wireframe style is assigned to this object
465 flagWF = true ;
466
467 } else if ( cur_view_param.GetDrawingStyle() == G4ViewParameters::wireframe )
468 {
469 // current viewing style is wireframe
470 flagWF = true ;
471 }
472
473 // VRML codes are generated below
474 if (!pVA) {
475
476 // Error recovery: Use default values of VRML browser
477 fDest << "\t\t" ;
478 fDest << "appearance Appearance { material Material {} }";
479 fDest << "\n";
480
481 } else {
482
483 const G4Color& color = pVA->GetColor();
484
485 fDest << "\t\t" << "appearance Appearance {" << "\n";
486 fDest << "\t\t\t" << "material Material {" << "\n";
487
488 // diffuse color
489 fDest << "\t\t\t\t" << "diffuseColor ";
490 fDest << color.GetRed() << " " ;
491 fDest << color.GetGreen() << " " ;
492 fDest << color.GetBlue() << "\n";
493
494 // emmisive color
495 // fDest << "\t\t\t\t" << "emissiveColor ";
496 // fDest << color.GetRed() << " " ;
497 // fDest << color.GetGreen() << " " ;
498 //fDest << color.GetBlue() << "\n";
499 //
500
501 // wireframe is expressed as transparency
502 if ( flagWF )
503 {
504 fDest << "\t\t\t\t" << "transparency " << TRANSPARENCY << "\n";
505 }
506
507 fDest << "\t\t\t" << "}" << "\n"; // material
508 fDest << "\t\t" << "}" << "\n"; // appearance
509 }
510
511}
512
513
514void G4VRML2SCENEHANDLER::SendMaterialNode()
515{
516 SendMaterialNode
517 ( fpViewer->GetApplicableVisAttributes (fpVisAttribs) );
518}
519
520
521void G4VRML2SCENEHANDLER::VRMLBeginModeling()
522{
523 if (!IS_CONNECTED ) {
524#if defined DEBUG_SCENE_FUNC
525 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
526 G4cout << "***** VRMLBeginModeling (started)" << "\n" ;
527#endif
528 this->connectPort();
529 fDest << "#VRML V2.0 utf8" << "\n";
530 fDest << "# Generated by VRML 2.0 driver of GEANT4\n" << "\n";
531 }
532}
533
534void G4VRML2SCENEHANDLER::VRMLEndModeling()
535{
536 if ( IS_CONNECTED ) {
537#if defined DEBUG_SCENE_FUNC
538 if (G4VisManager::GetVerbosity() >= G4VisManager::errors)
539 G4cout << "***** VRMLEndModeling (started)" << "\n" ;
540#endif
541 fDest << "#End of file." << "\n";
542 this->closePort();
543 }
544}
545
546void G4VRML2SCENEHANDLER::SendMarkerColor ( const G4VMarker& mark )
547{
548 const G4Color& color = GetColor( mark );
549
550 fDest << "\t\t" << "appearance Appearance {" << "\n";
551 fDest << "\t\t\t" << "material Material {" << "\n";
552 fDest << "\t\t\t\t" << "diffuseColor ";
553 fDest << color.GetRed() << " " ;
554 fDest << color.GetGreen() << " " ;
555 fDest << color.GetBlue() << "\n";
556 fDest << "\t\t\t\t" << "emissiveColor ";
557 fDest << color.GetRed() << " " ;
558 fDest << color.GetGreen() << " " ;
559 fDest << color.GetBlue() << "\n";
560 fDest << "\t\t\t" << "}" << "\n"; // material
561 fDest << "\t\t" << "}" << "\n"; // appearance
562
563}
564
565void
566G4VRML2SCENEHANDLER::SendMarkerWorldPosition ( const G4VMarker& mark )
567{
568 G4Point3D point = mark.GetPosition();
569
570 point.transform( *fpObjectTransformation );
571
572 fDest << " translation ";
573 fDest << point.x() << " " << point.y() << " " << point.z() << "\n";
574
575}
576
577void G4VRML2SCENEHANDLER::GetMarkerWorldPosition ( const G4VMarker& mark ,
578 double* pX ,
579 double* pY ,
580 double* pZ )
581{
582 G4Point3D point = mark.GetPosition();
583
584 point.transform( *fpObjectTransformation );
585
586 *pX = point.x() ;
587 *pY = point.y() ;
588 *pZ = point.z() ;
589}
590
591G4double G4VRML2SCENEHANDLER::GetMarkerHalfSize ( const G4VMarker& mark )
592{
593 //----- return value ( marker radius in 3d units)
594 G4double size = 1.0 ; // initialization
595
596 //----- parameters to calculate 3d size from 2d size
597 const double HALF_SCREEN_SIZE_2D = 300.0 ; // pixels
598 double zoom_factor = fpViewer->GetViewParameters().GetZoomFactor() ;
599 if ( zoom_factor <= 0.0 ) { zoom_factor = 1.0 ; }
600 double extent_radius_3d = GetScene()->GetExtent().GetExtentRadius() ;
601 if ( extent_radius_3d <= 0.0 ) { extent_radius_3d = 1.0 ; }
602
603 //----- get marker radius in 3D units
604 if ( mark.GetWorldSize() > 0.0 ) {
605
606 // get mark radius in 3D units
607 size = 0.5 * mark.GetWorldSize() ;
608
609 } else if ( mark.GetScreenSize() > 0.0 ) {
610
611 // local
612 double mark_radius_2d = 0.5 * mark.GetScreenSize() ;
613
614 // get mark radius in 3D units
615 size \
616 = extent_radius_3d * ( mark_radius_2d / HALF_SCREEN_SIZE_2D );
617 size *= zoom_factor ;
618
619 } else {
620 // local
621 double mark_radius_2d \
622 = fpViewer->GetViewParameters().GetDefaultMarker().GetScreenSize();
623 mark_radius_2d *= 0.1 ; // Magic number?
624
625 // get mark radius in 3D units
626 size \
627 = extent_radius_3d * ( mark_radius_2d / HALF_SCREEN_SIZE_2D );
628 size *= zoom_factor ;
629 }
630
631 //----- global rescaling
632 size *= fpViewer->GetViewParameters().GetGlobalMarkerScale();
633
634 //----- return size
635 return size ;
636
637}
638
639void G4VRML2SCENEHANDLER::SendLineColor ( const G4VisAttributes* pVA )
640{
641 const G4Color& color = pVA->GetColor();
642
643
644 fDest << "\t" << "appearance Appearance {" << "\n";
645 fDest << "\t\t" << "material Material {" << "\n";
646 fDest << "\t\t\t" << "diffuseColor ";
647 fDest << color.GetRed() << " " ;
648 fDest << color.GetGreen() << " " ;
649 fDest << color.GetBlue() << "\n";
650 fDest << "\t\t\t" << "emissiveColor ";
651 fDest << color.GetRed() << " " ;
652 fDest << color.GetGreen() << " " ;
653 fDest << color.GetBlue() << "\n";
654 fDest << "\t\t" << "}" << "\n"; // material
655 fDest << "\t" << "}" << "\n"; // appearance
656}
657
658G4double G4VRML2SCENEHANDLER::SetPVTransparency ()
659{
660
661 G4double TRANSPARENCY = 0.7 ; // initialization
662
663 if( getenv( "G4VRML_TRANSPARENCY" ) != NULL ) {
664
665 // get a value from the env value
666 sscanf( getenv("G4VRML_TRANSPARENCY"), "%lg", &TRANSPARENCY ) ;
667
668 // truncation
669 TRANSPARENCY = std::fabs ( TRANSPARENCY ) ;
670 if ( TRANSPARENCY > 1.0 ) { TRANSPARENCY = 1.0 ; }
671 }
672
673 fPVTransparency = TRANSPARENCY ;
674
675 return fPVTransparency ;
676}
677
678
679void G4VRML2SCENEHANDLER::ClearTransientStore()
680{
681 G4VSceneHandler::ClearTransientStore ();
682 // This is typically called after an update and before drawing hits
683 // of the next event. To simulate the clearing of "transients"
684 // (hits, etc.) the detector is redrawn...
685 if (fpViewer) {
686 fpViewer -> SetView ();
687 fpViewer -> ClearView ();
688 fpViewer -> DrawView ();
689 }
690}
691
692
693// End of file.
Note: See TracBrowser for help on using the repository browser.