ModRex

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(updated a bit)
(update linux part, recent fixes)
Line 35: Line 35:
 
===Linux===
 
===Linux===
 
  mkdir /opt/opensim opt/opensim/simulator /opt/opensim/authentication /opt/opensim/avatarstorage /opt/opensim/builds
 
  mkdir /opt/opensim opt/opensim/simulator /opt/opensim/authentication /opt/opensim/avatarstorage /opt/opensim/builds
  cd /opt/opensim/builds/8218
+
  cd /opt/opensim/builds/8800
 
  svn co http://opensimulator.org/svn/opensim/trunk .  
 
  svn co http://opensimulator.org/svn/opensim/trunk .  
 
  sh runprebuild.sh
 
  sh runprebuild.sh
 
  nant
 
  nant
  mkdir modrex modrex/build
+
  mkdir modrex
cp -R bin/*.dll modrex/build
+
 
  cd modrex
 
  cd modrex
 
  svn checkout http://forge.opensimulator.org/svn/modrex/trunk .
 
  svn checkout http://forge.opensimulator.org/svn/modrex/trunk .
cd ModularRex
+
  mono ../../bin/Prebuild.exe /target nant
vi prebuild.xml
+
  nant
* Change each ../../../bin to ../../build, and each ../../bin to ../build, save and exit
+
  mono ../../bin/Prebuild.exe /target monodev
+
* Open /opt/opensim/builds/8218/OpenSim.sln with MonoDevelop
+
* Add existing project > modrex/ModularRex/RexFramework/ModularRex.RexFramework.mdp
+
* Add existing project > modrex/ModularRex/NHibernate/ModularRex.NHibernate.mdp
+
* Add existing project > modrex/ModularRex/RexOdePlugin/ModularRex.RexOdePlugin.mdp
+
* Add existing project > modrex/ModularRex/ModularRex.mdp
+
* Add existing project > modrex/RexDotMeshLoader/RexDotMeshLoader.sln
+
* Change the runtime version for these projects to mono 3.5
+
* Replace all broken references
+
* Build the modularRex projects. If no errors occured, The dll's are stored in /opt/opensim/builds/8218/modrex/build
+
  cp /opt/opensim/builds/8218/modrex/build/ModularRex.* /opt/opensim/builds/8218/bin
+
 
* Copy python-engine dependencies  
 
* Copy python-engine dependencies  
   cp -R /opt/opensim/builds/8218/modrex/ModularRex/RexParts/RexPython/Resources/* /opt/opensim/builds/8218/bin/ScriptEngines
+
   cp -R /opt/opensim/builds/8800/modrex/ModularRex/RexParts/RexPython/Resources/* /opt/opensim/builds/8800/bin/ScriptEngines
  cd /opt/opensim/builds/8218/bin
+
  cd /opt/opensim/builds/8800/bin
 
  cp OpenSim.ini.example OpenSim.ini
 
  cp OpenSim.ini.example OpenSim.ini
 
* edit OpenSim.ini, and add this:
 
* edit OpenSim.ini, and add this:
 
  ;This goes under [startup]
 
  ;This goes under [startup]
 
  rex_python = true
 
  rex_python = true
 +
;disable the default eventqueue
 +
EventQueue = false
 
  ;This goes where the physics are setup
 
  ;This goes where the physics are setup
 
  physics=RexOpenDynamicsEngine
 
  physics=RexOpenDynamicsEngine
 
  [realXtend]
 
  [realXtend]
 +
RexEventQueue = true
 
  enabled = true
 
  enabled = true
 
  db_connectionstring = "MySQLDialect;MySqlDataDriver;Data Source=localhost;Database=opensim;User ID=root;Password=mypw;"
 
  db_connectionstring = "MySQLDialect;MySqlDataDriver;Data Source=localhost;Database=opensim;User ID=root;Password=mypw;"
 
* Copy the modrex enabled OpenSimulator to the production dir
 
* Copy the modrex enabled OpenSimulator to the production dir
  cp -R /opt/opensim/builds/8218/* /opt/opensim/simulator
+
  cp -R /opt/opensim/builds/8800/bin/* /opt/opensim/simulator
 
* Add the [[rex mysql]] tables to the opensim database
 
* Add the [[rex mysql]] tables to the opensim database
 
* Download and build the authentication service
 
* Download and build the authentication service
Line 155: Line 145:
  
 
==Known Issues==
 
==Known Issues==
* Important: only one region is currently supported. If your opensim has more than one region, you will not be able to visit regions other than home
 
 
* Some parts of the LLViewer interface do not yet exist in the RealXtend viewer. This is related to ModRex not allowing the viewer to set or retrieve certain data.
 
* Some parts of the LLViewer interface do not yet exist in the RealXtend viewer. This is related to ModRex not allowing the viewer to set or retrieve certain data.
 
* Avatar is stored, but appearance changes only after viewer restart
 
* Avatar is stored, but appearance changes only after viewer restart
Line 161: Line 150:
  
 
==Recent Fixes==
 
==Recent Fixes==
 +
* Multiregion Support
 
* NHibernate-db supports mysql, sqlite and mssql2005. Meshes are persistent
 
* NHibernate-db supports mysql, sqlite and mssql2005. Meshes are persistent
 
* Mesh collisions with primitives work
 
* Mesh collisions with primitives work

Revision as of 02:31, 20 March 2009

This software is still pre-alpha. Don't use it, unless you don't mind compiling/debugging it yourself

Contents

Overview

ModRex with mesh support, running on Linux

ModRex is a joint effort between RealXtend and OpenSim developers to make it possible to join the RealXtend viewer to the OpenSim codebase. The RealXtend viewer employs the open source OGRE game engine and differs from the Linden Lab viewer (LLviewer) in several ways. The most distinct difference is in the new rendering potential offered by OGRE. When using RealXtend as a viewer for OpenSim, one obtains real-time shadows, improved lighting simulation, and more importantly, the OGRE mesh. The mesh is hierarchical (multiple meshes and sub-meshes) and can include a skeleton for defining avatar motion and dynamics.

ModRex is important to the OpenSim community mainly because, like the base opensim code base itself, the RealXtend viewer is open source and breaks away from some of the key contraints imposed by the LLviewer, such as inability to create meshes, shadows, realistic avatars, and advanced lighting effects. ModRex while not part of the viewer, is the glue that connects the viewer to the opensim trunk code.

and a to illustrate some of the mesh and lighting effects in the viewer:

To use ModRex, you need the following:

Links

Setup

Linux

mkdir /opt/opensim opt/opensim/simulator /opt/opensim/authentication /opt/opensim/avatarstorage /opt/opensim/builds
cd /opt/opensim/builds/8800
svn co http://opensimulator.org/svn/opensim/trunk . 
sh runprebuild.sh
nant
mkdir modrex
cd modrex
svn checkout http://forge.opensimulator.org/svn/modrex/trunk .
mono ../../bin/Prebuild.exe /target nant
nant
  • Copy python-engine dependencies
 cp -R /opt/opensim/builds/8800/modrex/ModularRex/RexParts/RexPython/Resources/* /opt/opensim/builds/8800/bin/ScriptEngines
cd /opt/opensim/builds/8800/bin
cp OpenSim.ini.example OpenSim.ini
  • edit OpenSim.ini, and add this:
;This goes under [startup]
rex_python = true
;disable the default eventqueue
EventQueue = false
;This goes where the physics are setup
physics=RexOpenDynamicsEngine
[realXtend]
RexEventQueue = true
enabled = true
db_connectionstring = "MySQLDialect;MySqlDataDriver;Data Source=localhost;Database=opensim;User ID=root;Password=mypw;"
  • Copy the modrex enabled OpenSimulator to the production dir
cp -R /opt/opensim/builds/8800/bin/* /opt/opensim/simulator
  • Add the rex mysql tables to the opensim database
  • Download and build the authentication service
svn co https://realxtendserver.svn.sourceforge.net/svnroot/realxtendserver/authentication/tags/0.4 /opt/opensim/authentication
cd /opt/opensim/authentication
mono bin/Prebuild.exe /target nant
nant
  • Create a mysql database "authentication"
cd bin
mono Authentication.exe 
  • Setup authentication
MySql_SqlHandler.dll (or SQLite_SqlHandler.dll. MySql_SqlHandler.dll gives not implemented messages but seems to work ok)
<enter>(AuthenticationEngine=AuthenticationEngine.dll)
<enter>(logging enabled=False)
<enter>(def. region x 1000)
<enter>(def. region y 1000)
<enter>(avatarstorageurl 172.16.1.65:10000)
<enter>(default gridurl 172.16.1.65:9000)
<enter>(default dns)
<enter>(dbserver 127.0.0.1)
<enter>(dbname authentication)
<enter>(dbuser root)
*******(dbpw for root)
172.16.1.65 (httpsettings LAN-IP)

The authentication daemon should run by now

  • Create a user in the authentication screenconsole
create user
  • Download and build the avatarstorage service
svn co https://realxtendserver.svn.sourceforge.net/svnroot/realxtendserver/avatarstorage/tags/0.4 /opt/opensim/avatarstorage
cd /opt/opensim/avatarstorage
bin/Prebuild.exe /target nant
nant
  • Create a database "avatarstorage"
cd bin
mono AvatarStorage.exe
  • Setup avatarstorage
MySql_SqlHandler.dll
<enter>(AuthenticationEngine.dll)
<enter>(Inventory True)
<enter>(PersonalInventoryService.dll)
PersonalInventory.SQLITE.dll
<enter>(logging_enabled False)
<enter>(dbserver 127.0.0.1)
avatarstorage (dbname)
<enter>(dbuser root)
********(dbpw root)
172.16.1.65 (httpsettings LAN-IP)
<enter>(http port 10000)
<enter>(ssl False)

The avatarstorage daemon should run by now

  • You can use this rex serverscript to manage and start the services(uses screen)

Most important screen-commands are:

screen -list (shows screen sessions)
screen -r screenname (attaches to the screensession)
ctrl-a + d (detaches from the screensession)

the 'Account' part is the first part in your rex-username(account@myauthenticationdaemonuri)

  • Check in the Simulator console if everything started the way it's supposed to

Once the three services are running, an initial user was made, fire up the realXtend client from wine and login with your credentials.

Windows

The following procedure is used to set up modrex:

  • Modrex uses the latest subversion (latest build) of OpenSim. Download opensim using svn checkout of the trunk code. This procedure used Microsoft Visual C# 2008. To differentiate the checkout from other opensim builds that you may have, call it opensim_modrex, for example. Then, you will remember that this build requires the RealXtend viewer. We'll assume you have your opensim implementation stored in C:\opensim_modrex.
  • Prebuild (i.e., running Prebuild2008) and compile as you would do normally just to make sure that this build of opensim is executing. Start up opensim and make sure that you can view the region using the LLviewer.
  • Create a new folder such as C:\modrex, and then get the latest version of modrex into this folder. Modrex is obtained using a version of svn, such as TortoiseSVN. The checkout URL is http://forge.opensimulator.org/svn/modrex. You will need to enter "anonymous" when asked to check out modrex. Make note of the revision of modrex after all files have been downloaded, just for reference in case you encounter difficulties and need to report a concern or bug.
  • Copy the folders located in C:\modrex\trunk to C:\opensim_modrex\opensim
  • Run the prebuild (if using VC # 2005) or prebuild2008 (if using VC# 2008) that is now located under C:\opensim_modrex\opensim\ModularRex.
  • Go to your c:\opensim_modrex, launch VC# on the OpenSim solution, and enter 3 projects to the existing OpenSim solution (right-mouse click on the solution name, Add->Existing Project): ModularRex (found in C:\opensim_modrex\opensim\ModularRex), ModularRex.Nhibernate (found in C:\opensim_modrex\opensim\ModularRex\Nhibernate), and ModularRex.RexFramework (found in C:\opensim_modrex\opensim\ModularRex\RexFramework).
  • Re-build the opensim solution. There should not be any errors. This, in turn, will add new region modules especially for the RealXtend viewer/OpenSim connection inside of C:\opensim_modrex\bin.
  • Make sure to copy OpenSim.ini.example to OpenSim.ini. Inside of this new ini file (c:\opensim_modrex\bin\OpenSim.ini), add the following section:
[realXtend]
db_connectionstring = "SQLiteDialect;SQLite20Driver;Data Source=RexObjects.db;Version=3"
  • We are almost ready to run the viewer, except that the current incarnation of modrex requires authentication and avatar storage to be run separately in addition to opensim. Therefore, the way to run modrex, is to (1) Start the Authentication server, (2) Start the Avatar Storage server, and finally to (3) run opensim. The server is located in the general web page as the client viewer here. This procedure was based on the latest binary server available. The authentication server and avatar storage servers are .exe files located in the primary server download. Do not run the server, only Authentication and Avatar Storage. Use the Authentication window to add new users as required.
  • Launch opensim.exe. This will now run opensim, access the new Modrex region modules inside of C:\opensim_modrex\bin, and start up your opensim server.
  • Launch the RealXtend viewer and enter your username, password, and connection. Your username, in contrast to Opensim user names, will be one string such as "testuser". If the domain of your server is myserver.com, then you log in as "testuser@myserver.com" entered in the "User Name" field. Enter the password. For "Connect To:", enter your server: myserver.com. Then, press "Connect" in the viewer.
  • You should be inside of your opensim world but using the RealXtend viewer. Caveats and Bugs are located below.
  • The RealXtend viewer can run python scripts. To enable python, first add the following line in the [startup] section of OpenSim.ini: rex_python=true. Then, you must copy the following two directories: C:\opensim_modrex\opensim\ModularRex\RexParts\RexPython\Resources\Lib and PythonScript to C:\opensim_modrex\bin\ScriptEngines. Here is an example using a python script that postprocesses the main window rendering with OGRE-based effects.
  • If you ever wish to use the LLviewer on the region you have created, temporarily move the RealXtend region modules under C:\opensim_modrex\bin out of there, and launch LLviewer. These modules are all prefixed with "ModularRex.". Move the region modules back to continue with the RealXtend viewer. Note that RealXtend-specific artifacts (mesh, shadows) will not appear in LLviewer.

Known Issues

  • Some parts of the LLViewer interface do not yet exist in the RealXtend viewer. This is related to ModRex not allowing the viewer to set or retrieve certain data.
  • Avatar is stored, but appearance changes only after viewer restart
  • Inter-mesh collisions not yet implemented, although avatar w/ primitive collisions work

Recent Fixes

  • Multiregion Support
  • NHibernate-db supports mysql, sqlite and mssql2005. Meshes are persistent
  • Mesh collisions with primitives work
  • Python scripting works for the most part (some functions are not working yet)
  • Shift-copy keeps mesh as primdata
  • OpenSim library useable now
Personal tools
General
About This Wiki