    ----- How to visualize Geant4 simulation -----
    ----- with VRML-network drivers  and  g4vrmlview  -----

                November 04, 1999

		Satoshi Tanaka  and  Yasuhide Sawada
		Fukui University, Japan
		tanaka@i1nws1.fuis.fukui-u.ac.jp

------------------------
Section 1: Introduction
------------------------

This is a document to explain how to perform Geant4 
"remote" visualization with VRML.  You can visualize Geant4 
simulation on your WWW browser. 
You have to prepare the following softwares beforehand:

  (1) Geant4 
  (2) g4vrmlview, a small java software included in the Geant4 package  

       geant4/source/visualization/VRML/g4vrmlview/

      Or you can also obtain it from our ftp site: 

       ftp://i1nws2.fuis.fukui-u.ac.jp/pub/graphics
              /fukui_graphics_system/g4vrmlview_VERSION.tar.gz


  (3) VRML browser, e.g., vrweb, VRMLview, etc


-----------------------------------------------
Section 2: What is the Geant4 VRML-network drivers?
-----------------------------------------------

  Geant4 VRML-network drivers are included in visualization category of 
  the Geant4 package:

    geant4/source/visualization/VRML/

  The VRML-network drivers work as follows:

  (1) Convert 3D data of Geant4 simulation into VRML 1.0/2.0 codes.
  (2) Send the generated VRML codes to another process of "g4vrmlview",
      running at either local or remote host.

  (Note: For local visualization, use the VRML-file drivers, 
         which can be invoked with the following commands:

         .....

           Idle> /vis/sceneHandler/create VRML1FILE

         for VRML 1.0 and 

           Idle> /vis/sceneHandler/create VRML2FILE
 
         for VRML 2.0.


------------------------------------------------------------------------
Section 3: Environmental variables to customize the VRML-network drivers
------------------------------------------------------------------------

  You can customize the VRML-network drivers by setting environmental 
  variables at Geant4 host, i.e., the host where Geant4 runs:

    Geant4_host % setenv   G4VRML_PORT        port_number  
    Geant4_host % setenv   G4VRML_HOST_NAME   host_name 

  The default port number is 40801, and the default host name 
  is "localhost".  You need not define the environmental 
  variables if you use the default values.


---------------------------------
Section 4: What is g4vrmlview?
---------------------------------

g4vrmlview is a software written in java. 
It works as follows:

 (1) Receive VRML codes from a VRML-network driver of Geant4 
     via local or wide-area network.
 (2) Save the received VRML codes to a local file named "g4.wrl" etc. 
 (3) Invoke a VRML viewer, which is specified at the command line, 
     automatically. 

--------------------------------------
Section 5: How to install g4vrmlview
--------------------------------------

  You need JDK1.1 to install g4vrmlview.
  The installation can be done by doing the following steps:

  (1) % cd g4vrmlview
  (2) Edit Makefile and set a proper directory name to variable 
      "INSTALL_DIR".  The default setting is:

       INSTALL_DIR = "/usr/local/javaclass" 
 
       Later, java classes (g4vrmlview.class etc) are installed 
       to the directory specified by the variable INSTALL_DIR.

  (3) Set the environmental variable "CLASSPATH" in .cshrc etc.
      (This step can be skipped in some platforms.)
      For example, if JDK1.1.1 is installed in the directory
      "/usr/local/dev/jdk1.1.1"  and you want to install g4vrmlview 
      into  "/usr/local/javaclass",  then the variable CLASSPATH 
      should be defined as:

        # java in Unix (.cshrc)
        setenv CLASSPATH .:/usr/local/dev/jdk1.1.1/lib/classes.zip:\
        /usr/local/javaclass

      Similarly, in Windows NT/95, if JDK.1.1 is installed in 
      the directory  "C:\jdk1.1.1" and you want to install g4vrmlview
      into C:\dev\javaclass, you should add the following lines to 
      AUTOEXEC.BAT:

       # java in Windows NT/95 (autoexec.bat)
       SET CLASSPATH = .;C:\jdk1.1.1\lib\classes.zip;C:\dev\javaclass

  (4) % make clean
  (5) % make 

  (6) Test created java classes using g4mini.
      You can do it using two separate windows, 
      instead of using two separate hosts.
      Here we assume that we use windows named "window_1" 
      and "window_2", and use the VRML browser "vrweb".

        window_1 % java g4vrmlview vrweb
        Waiting for requests at port  40801 ...

        window_2 % java g4vrmlview vrweb
        % java g4mini
        Usage: java g4mini  src_file  server_hostname

        window_2 % java g4mini sample.wrl localhost

      The test is successful if you see pictures on the VRML browser.

  Now you can use g4vrmlview if the class path of java is, 
  explicitly or implicitly set to the current directory.
  Go on to the next step if you want to install g4vrmlview into
  a public place.

  Here you have to become root if you do not have permission 
  to INSTALL_DIR.  If the directory INSTALL_DIR does not exist, 
  it will be created automatically. 
    
   (5) % make install 


--------------------------------------
Section 6: How to use g4vrmlview
--------------------------------------

  (1) Invoke g4vrmlview at the host where g4vrmlview runs,
      say, "VRML_host". For example, 

        VRML_host% java g4vrmlview  VRML_browser_name

      where the last argument is a name of your favorite VRML browser. 

  (2) Invoke Geant4 at the host, where Geant4 runs, say, Geant4_host.
      For example,

       Geant4_host% exampleN03

       .....

         Idel> /vis/sceneHandler/create VRML1

       for VRML 1.0 and  

         Idel> /vis/sceneHandler/create VRML2

       for VRML 2.0.


---------------------------------------
Section 7: More notes on g4vrmlview
---------------------------------------

  (1) Format of invoking g4vrmlview:

      % java  g4vrmlview  VRML_browser_name  [port_number]

        VRML_browser_name: 
             "netscape", "vrweb", etc, 
             or "NONE" to suppress invoking VRML browser

        port_number: 
             The default port number is 40801.
             If you have set the environmental variable 
             "G4VRML_PORT" at Geant4 host, 
             you have to give the same port number. 
             For example, 

             Geant4_host % setenv G4VRML_PORT         40802 
             VRML_host   % java g4vrmlview  netscape  40802

  (2) Auto increment of port number:
        If the port number 40801 is already in use, it is 
        automatically incremented one by one up to 40810.

  (3) Multiple thread:
        g4vrmlview is a multi-thread software.
        It can accept data from plural Geant4 at the same time.

  (4) Saving VRML codes to files:
      VRML codes sent from Geant4 is saved to a file named 
      "g4.wrl".  If g4.wrl already exists, the file name is 
      incremented to  g4_2.wrl.  Similarly the file name is 
      incremented to g4_3.wrl, g4_4.wrl, etc.
      The files are created in the directory where you invoked g4vrmlview. 


===== End of document =====
