Covise-installation

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

COVISE Installation Tips

These tips apply only to collaborators of IVL who intend to use the educational license of COVISE for non-profit purposes. Also, only the Linux version of COVISE is covered. There is a Windows version but when you decide to use it we can't give any support due to a lack of experience with it.

Installation of base system

  • Create an account for the COVISE installation, e.g., "covise".
  • In /etc/passwd set the default shell for this account to /bin/tcsh.
  • Download COVISE for your Linux distribution from the HLRS download page.
  • Follow the installation instructions on that web site.
  • Once installed, run "opencover" to see if it was successful. You should see a black window with the COVER menu.
  • If opencover won't run but complain about missing libraries, add the respective paths to the LD_LIBRARY_PATH. Example:
setenv LD_LIBRARY_PATH /home/covise/covise/extern_libs/rhel5/OpenSceneGraph/lib64:/home/covise/covise/extern_libs/rhel5/x
erces/lib:/home/covise/covise/extern_libs/rhel5/qt4/lib:/home/covise/covise/extern_libs/rhel5/libwww/lib

Adding support to compile plugins

At this point you can only use COVISE's built-in plugins. In the following steps we're going to add the ability to compile custom plug-ins.

  • Copy your plugin source code to the machine COVISE is installed on.
  • Make sure the environment variable QT_HOME points to your Qt installation, with qmake under the bin directory. Example:
    setenv QT_HOME /home/covise/covise/extern_libs/qt4
  • Make sure the QMAKESPEC environment variable (defined in .cshrc) points to the correct qmake.conf file:
    setenv QMAKESPEC /home/covise/covise/mkspecs/rhel5
  • The COFRAMEWORKDIR variable needs to point to the .pri files (like config-first.pri):
    setenv COFRAMEWORKDIR /home/covise/covise
  • Problem: make errors out with "No generator specified in config file". Solution: add the following line to your qmake make file (.pro file):
    MAKEFILE_GENERATOR = UNIX
  • Problem: qmake won't create Makefile.$ARCHSUFFIX. Solution: add to .cshrc:
    setenv COINTREE 1

Display and plugin configuration

At this point when you run opencover it comes up in a fixed size window on the node you run it on. In order to change the screen configuration and enable your plugins we are going to edit COVISE's configuration file. The configuration file is located at ~covise/covise/config.

  • Come up with a name for the configuration file. For instance, if your machine or tiled display wall has a name then use that. Let's assume the name is starcave.
  • Add a line to the .cshrc file in covise's home directory:
    setenv $COCONFIG starcave.xml
    .
  • Copy the default configuration file config.xml to starcave.xml
    cp config.xml starcave.xml
    .
  • To enable a custom plugin like MyPlugin add a line to the <Plugins> section:
    <MyPlugin value="on" />

Troubleshooting

Symptom: When running opencover, the following error message is displayed: COVISE_HOST not set, using gethostname():

ASSERT failure in QList<T>::at: "index out of range", file /mnt/raid/data/extern_libs/maunaloa/Qt-4.4.0/include/QtCore/qlist.h, line 371

Resolution: add setenv COVISE_HOST 127.0.0.1 to .cshrc <p>

Sample Display Configuration File

This file was created for a 2x2 panel wall, consisting of four 24" panels with 1920x1200 pixels resolution each. The size of each monitor (outside edges of physical screen) is 560mm x 365mm, the pixel area is 520mm x 325mm. The rendering nodes are each connected to two displays, the two outputs are configured as side-by-side Twinview in the xorg.conf file. Node tdwnode1 drives the upper two displays, node tdwnode2 drives the lower two displays. Node tdwnode0 is the name of the head node, which is where opencover is run on, and where the mouse is connected to in order to control the interaction with the tiled display wall. The origin of the wall coordinate system is in the center between the four displays. The coordinate system is: x to the right, y into the screen, z up.


<?xml version="1.0"?>

<COCONFIG version="1" >

  <GLOBAL>
    <COVER>
      <PipeConfig>
        <Pipe display=":0.0" name="0" screen="0" pipe="0" />
      </PipeConfig>

      <WindowConfig>
        <Window width="3840" comment="MAIN" window="0" pipeIndex="0" height="1200" left="0" bottom="0" name="0" decoration="false" />
      </WindowConfig>
 
      <ChannelConfig>
       <Channel windowIndex="0" stereoMode="LEFT" channel="0" left="0"    width="1920" bottom="0" height="1200" comment="C_A" name="0" />
       <Channel windowIndex="0" stereoMode="LEFT" channel="1" left="1920" width="1920" bottom="0" height="1200" comment="C_B" name="1" />
      </ChannelConfig>

     </COVER>

    <System>
      <CRB>
        <ModuleAlias name="Renderer/Renderer" value="Renderer/IvRenderer" arch="x11"/>
        <ModuleAlias name="Renderer/Renderer" value="Renderer/QtRenderer" arch="windows"/>
        <ModuleAlias name="Renderer/Renderer" value="Renderer/QtRenderer" arch="mac"/>
        <ModuleAlias value="Renderer/OpenCOVER" name="Renderer/VRRenderer" />
      </CRB>
    </System>


    <System> 
      <HostConfig>
        <Host timeout="60" memory="shm" method="ssh" name="coutsound" hostname="coutsound" />
      </HostConfig>
    </System>  

    <CUI>
      <ResourcesDirectory value="/home/covise/trunk/covise/src/renderer/OpenCOVER/osgcaveui/resources" />
    </CUI>

   <COVER>

     <WelcomeMessage value="Welcome to OpenCOVER" />
     <MultiThreaded value="false" />
     <SyncToVBlank value="ON" device="DFP-1" />
     <SyncToVBlank value="ON" device="DFP-0" />
     <LODScale value="0.1" />

     <Plugin>
        <Vrml97 value="on" />
      </Plugin>

      <ScaleAll value="OFF" />

     <TabletPC>
      <Server value="localhost" />
     </TabletPC>

    </COVER>

   <COVER>

    <MultiPC>
      <SyncMode value="TCP" />
      <MasterInterface value="tdwnode0" />
      <NumSlaves value="2" />
      <Startup arch="x11" value="ssh ${USER}@tdwnode1 if \( \{ test -d `pwd` \} \) cd `pwd` \;opencover \>\& /tmp/errors.log" name="0" />
      <Startup arch="x11" value="ssh ${USER}@tdwnode2 if \( \{ test -d `pwd` \} \) cd `pwd` \;opencover \>\& /tmp/errors.log" name="1" />
    </MultiPC>
 
    <Stereo enable="OFF" value="OFF" />
    <StereoMode value="LEFT" />

    <Input>
     <ButtonSystem value="MOUSE" />
     <MouseNav value="ON" />
     <TrackingSystem value="MOUSE" />
    </Input>
 
    <Menu>
      <Orientation h="0" p="0" r="0" />
      <Position x="0" y="0" z="0" />
      <Size value="0.8" />
    </Menu>

    <SceneSize value="1120" />
    <ViewerPosition x="0" y="-1000" z="0" />
    <CoordAxis value="off" />
    <Freeze value="on" />
    <ViewAll value="off" />
    <NumPipes value="1" />
    <NumScreens value="2" />
    <NumWindows value="1" />
 
    <Plugin>
      <Vrml97>
       <Audio value="none" >
       </Audio>
      </Vrml97>
    </Plugin>

    <DebugLevel value="1" />
    <FPS value="true" />

   </COVER>

  <Messages>
    <WindowSize value="10" />
  </Messages>

 </GLOBAL>

  <LOCAL host="tdwnode0" >
   <COVER>
    <ScreenConfig>
     <Screen width="1120" h="0.0" height="730" p="0.0" originX="0" comment="S_A" originY="0"  r="0.0" name="0" originZ="0" screen="0" />
     <Screen width="1120" h="0.0" height="730" p="0.0" originX="0" comment="S_B" originY="0"  r="0.0" name="1" originZ="0" screen="1" />
    </ScreenConfig>
   </COVER>
  </LOCAL>

  <LOCAL host="tdwnode1" >
   <COVER>
    <ScreenConfig>
     <Screen width="520" h="0.0" height="325" p="0.0" originX="-280" comment="S_A" originY="0"  r="0.0" name="0" originZ="183" screen="0" />
     <Screen width="520" h="0.0" height="325" p="0.0" originX="280"  comment="S_B" originY="0"  r="0.0" name="1" originZ="183" screen="1" />
    </ScreenConfig>
   </COVER>
  </LOCAL>

  <LOCAL host="tdwnode2" >
   <COVER>
    <ScreenConfig>
     <Screen width="520" h="0.0" height="325" p="0.0" originX="-280" comment="S_A" originY="0.0"  r="0.0" name="0" originZ="-183" screen="0" />
     <Screen width="520" h="0.0" height="325" p="0.0" originX="280"  comment="S_B" originY="0.0"  r="0.0" name="1" originZ="-183" screen="1" />
    </ScreenConfig>
   </COVER>
  </LOCAL>

</COCONFIG>