Open Source Platform
for interconnected virtual worlds

Getting Started with Naali

From Rex community wiki

Contents

What is Naali?

Naali is the realXtend's new open source cross-platform virtual world viewer.
The main frameworks are Qt, Boost and OGRE.

Viewer features

  • OpenSim, realXtend and OpenID Authentication and Login
  • Inventory (OpenSim and WebDAV)
  • In-world Chat
  • World Editing and Building
  • Internal Web Browser
  • Avatar Editing
  • Entity-component Editing and Synchronization to Server
  • Jabber IM
  • Mumble In-world Voice (requires the Mumble client)

Naali 0.3.0 Inworld windows

Naali running on windows

Naali 0.3.0 Inworld ubuntu

Naali running on Ubuntu 10.x aka lucid

Naali running on the MeeGo platform

Naali running on a MeeGo mobile device

Naali running on the Maemo5 platform

Naali running on the Maemo5 platform on the Nokia N900 mobile device

Naali 0.3.3 running on MeeGo notebook 1.1 platform with OpenGL Naali 0.3.3 running on MeeGo notebook 1.1 platform with OpenGL. The device is Lenovo IdeaPad S10-t3.

Technical limitations

  • Due to the Naali project being in early development stage there is no multiregion support. That is, you can log-in to an Opensim grid like osgrid, but you will only see the initial region where you logged on to. You can, however, teleport to adjacent regions.

System requirements

  • GPU with Shader Model 3.0 support

Frequently Asked Questions About Naali

'Q: Why is there no FAQ about Naali?'
'A:' What kind of a stupid question is that, of course there is!

Controls

Default bindings

Here are the the default bindings of current naali, we try to update this list on every release. Currently the support for binding keys has gone away with our input system refactoring. We will hopefully get it back soon. You can still change movement keys by typing 'bindings' to console.

NOTE: The controls tab in setting does not currently apply to anything.

Control Action
W, A, S, D Movement controls (A and D do strafe). Navigating Ether cards.
Arrows Movement controls (left and right do rotate).
F Toggle the fly mode
F1 Toggle console (inworld)
ESC Toggle ether login space (always)
SPACE Jump / fly upwards in fly mode
C Crouch (doesn't work in ModRex server) / fly downwards in the fly mode
MOUSE WHEEL Move the camera closer / further off the avatar
ALT + Left Mouse Focuses camera to object
CTRL + TAB Toggle the free-look mode
CTRL + B Toggle build mode
CTRL + F Toggle full screen mode
CTRL + A Toggle avatar mode
LEFT MOUSE Touch object
RIGHT MOUSE Look around in mouse-look mode (see below)
Focus Chat Return (Enter)
Python Several keys, check the settings python section for bindings
Naali Commands Several keys, check the settings general section for bindings

Mouse

You can enter the mouse-look mode by zooming "into" the avatar with mouse wheel. In mouse-look and free-look modes, hold down the right mouse button to look around and, if you are moving simultaneously, to steer the avatar.

Camera controls

For more about camera controls see Camera Controls

Console commands

Default toggle console key is F1, console toggle will only work if you are inworld. Type help to the console to get the summary of the available console commands.

Python

It is possible to run arbitary Python code within the viewer. A way is to put the code to bin/pymodules/usr/command.py and then press alt and the period key (alt+.) in the viewer window. World needs to have focus for python to execute the run command, click anywhere in the world to ensure this.

See bin/pymodules/readme.txt for info about how to make own modules, bind arbitary keys etc. The object editing tool is implemented as such a plugin, and Naali also comes with a Naali webserver plugin that can serve live screenshots over http (is disabled by default). When developing a Naali Python module, you can press F11 to reload all the code so that you don't have to restart the viewer to have the new version running -- this works e.g. when modifying the object editing tool.

Getting and running Naali

Windows

  1. Download the installer http://code.google.com/p/realxtend-naali/downloads/list
  2. Install Run the executable and install to your preferred location.
    Follow the instructions given by the installer.
  3. Run Naali from your start menu or browse to your installation folder and execute viewer.exe
  • Note: You should install to a fresh new folder. Installing on top
    of existing earlier Naali version might cause you some startup troubles.


Linux

Deb Packages

At the release time of 0.3.0 and forward we are providing debian packages for i386 and amd64 architectures. Although these .deb files will open on any debian based linux system they were made specifically for Ubuntu feisty aka 10.x. This is due our quite extensive need for dependencies and how we list then to the deb control file. The names and versions that are listed inside the file can be found from lucid repositories, other repos might have the packages named differently or the needed version might not be available. Hopefully you can upgrade if you are running < Ubuntu 10.

GUI approarch
  1. Download the appropriate debian package
  2. Install you can simply open the deb file. This should start 'GDebi Package Installer' where you simply click 'Install Package' to install Naali.
  3. Run You can now find our menu item from Applications -> Internet -> realXtend Naali
Terminal approach
# for 32bit Ubuntu lucid
$ wget http://realxtend-naali.googlecode.com/files/realXtend-naali_0.3.3-ubuntu-lucid-i386.deb
# for 64bit Ubuntu lucid
$ wget http://realxtend-naali.googlecode.com/files/realXtend-naali_0.3.2-ubuntu-lucid-amd64.deb
$ chmod +x realXtend-naali_0.3.0-ubuntu-lucid-<arch>.deb
# If you get errors on dpkg install about dependecies try running "sudo apt-get install -f" to fix them 
$ sudo dpkg --install realXtend-naali_x.x.x-ubuntu-lucid-<arch>.deb
# You can run the start script from where ever in the system with (or use the menu item described above)
$ /opt/naali/run-linux.sh
Unistalling
# Open a terminal and run
$ sudo dpkg --remove realXtend-naali
Details About Installation
  1. /opt/naali
    • Naali start script run-linux.sh and viewer executable
    • Shared libraries that can't be found from lucid repos: libPropertyEditor.so, libQtSolutions_PropertyBrowser-2.5.so, libPythonQt.so and libPythonQt_QtAll.so
    • Naali modules ./modules/core
  2. /usr/share/applications/naali.desktop
    • Desktop file for the application menu
    • You can go and modify this with root privileges and change terminal=true so youll get all Naali console prints when running naali from the shortcut item
  3. /usr/share/pixmaps/naali.png
    • Icon for the application menu
  4. Depends
    • libogremain-1.6.4, libqt4-core (>=4.6.0), libqt4-gui (>=4.6.0), libqt4-network (>=4.6.0), libqt4-script (>=4.6.0), libqt4-webkit (>=4.6.0), libqt4-phonon (>=4.6.0), libqt4-xml (>=4.6.0), libqt4-xmlpatterns (>=4.6.0), python (>=2.6), libpocofoundation9, libpoconet9, libpocoutil9, libpocoxml9, libboost-thread1.40.0, libboost-filesystem1.40.0, libboost-program-options1.40.0, libboost-date-time1.40.0, libboost-system1.40.0, libboost-test1.40.0, libcurl3, libcurl3-gnutls, libxmlrpc-epi0, libopenjpeg2

Comparing to windows installers linux is missing: MumbleModule.

Wine

Naali Windows version will run on Linux through Wine-HQ. To get it working, please take the following steps:

  • Make sure you have a recent wine version
  • Download and execute the installer from http://code.google.com/p/realxtend-naali/downloads/list
  • Install in c:/Naali. Just click on ok for the OpenAL installer, and cancel for DirectX installer
  • Open a console, cd to ~/.wine/drive_c/Naali and copy the ogre dll to the root-dir:
cp modules/core/OgreRenderingModule.dll .
  • Edit plugins.cfg, comment out the DirectX renderer and save:
#Plugin=RenderSystem_Direct3D9
  • Start Naali
wine viewer.exe

Mac

We currently don't have a mac installer, but there are builds of both of the develop branch (from the time of Naali 0.3.4.1 release, which is a pretty good release in general) and from the Tundra 1.0 preview from December 2010. There are some issues with these still -- especially the 0.3.4.1 zip is HUGE (contains unnecessary development files). We'll improve, and any help from mac folks would be much appreciated!

These require setting an environment variable for finding the libraries (like Qt and Ogre), there is a starter script called naali-mac that runs viewer with the right config (and tundra-mac respectively in the tundra build which has the server executable as well).

A screenshot for proof is at Naali Mac

Building Naali from sources

In a nutshell:

Acquire projecect dependecies as described in http://wiki.realxtend.org/index.php/Building_Naali_from_source_trunk#Acquiring_the_dependencies

git clone git://github.com/realXtend/naali.git

Login to worlds using Ether

This new Ether login view is the default in Naali. You can always switch back to the classic login ui from the top right corner in ether. If you shutdown naali with classic view enabled, Naali will remember that next time you start. At this point ether might be too heavy to run fluently with older PCs, as its very animation heavy and this will drop FPS compared to a static ui.

Naali Ether

General Ether Info

Default Cards If this is your first start of Naali that has ether space, you will see one avatar and two preset demoworlds. Mr. Anonymous is the default, then you should see fishworld and audi world just as our previous releases classic login view did. Neither of the default servers require authentication. This means you can enter the worlds with any unique Firstname Lastname combination. Therefore it's suggested that you edit Mr. Anonymous to your preferred name to avoid name conflicts. If someone is in that server with "Mr. Anonymous" the server wont let anyone else with the same name in.

Storing Cards Ether will store your cards to a config file under your operating systems user account folder. So that you don't have to be typing server addresses and credentials all the time, this enables quick switching of worlds and identities. Once you make a card to ether Naali will remember it until you remove it.

Naali The Arctic Fox
Storing Screenshots Ether will take screenshots of your avatar and world once you logout from a world. When you create new avatars that has not visited any worlds yet you will see a naali (artic fox) as your default avatar cards and a planet for you world cards.

Controls You can use Ether with mouse and keyboard. You can select cards anywhere to be selected and moved to center with left clicking them. Navigating with keyboard happens with either WASD or arrows. Once you have your desired combination. Hit Enter or click Enter World button to login.

Modifying Avatars and Worlds

Avatars: Click "Edit Avatar" button from the top of the card. This will bring up a UI to edit you avatar settings. Worlds: Click "Edit button on the lower corner of the card. This will bring up a UI to modify your server url:port.

Note: On the world cards, Info and Register buttons doesn't do anything yet. The aim is to open a webview inside Naali to show you either grid information or go to the grids register account page.

Adding New Avatars

New Avatar
Click the floating "New Avatar" button. First you need to select if you want to create OS or realXtend avatar. Next step is to fill the required fields. You can go back without saving at any time by hitting Return button or save the new card with Save button.

Adding New Worlds

New World
Click the floating "New World" button. Insert your server address with port. http:// to front will be automatically added if you omit that. Once the server url is set you can click Get Grid Info button to fetch the grid data from the server. This is optional, but its a nice way to check if the server url and port are correct and that the server is up.

Removing cards

Remove Card
Once you have selected (the card is in the center) the card you want to remove. Hit the "X" button floating next to the card. Avatars and world have their own delete button. This will remove the card from config and remove the screenshot file.

Connecting to a server

Enter World
Once you have selected an avatar and a world, hit Enter World button or Return key on your keyboard. This will start the login. Ether will automatically change to the inworld view once login is completed.

Communications

Using IM communication

Naali viewer supports jabber protocol for IM communication. You can use any jabber provider or event Google Talk accounts since they use jabber for IM protocol. You can find public jabber services here: Public Jabber servers


IM
Access You can toggle the visibility of the IM widget with the IM button located in the bottom left corner.


Jabber login
Login Now do a login with you jabber credentials. We have provided presets for gmail and facebook, you can select them from the drop down menu.

Friends List Once you are logged in, you can toggle the friends list and access the basic functionalities from the top menu.

Adding friends You can send friend requests from the menu "Actions -> Add Friend". After your friend has accepted your request he will appear on the friend list.


Changing Status Click "Status" and you'll get a menu to edit you status message and state. State can also be controlled from bottom of the friends list.

Text Chat You can start text chat session by clicking on a friend's name in the friends list and choosing "Start chat".

Voice Chat To start a voice/video chat click a friend's name in the friends list "Start Video Conversation".

Logout Simply select "Status -> Sign out" from the top menus.


Logged in

Here's a nice video tutorial on the Naali IM features, check it out http://www.youtube.com/watch?v=4iiE66hY-RU

Using Inworld Chat

Chat widget You will find the chat widget from bottom left corner of Naali when you are inworld. In the normal view chat messages are stacked and shown floating in the air for some time. To view chat log click the History button.

Chatting To send a message simply input text and hit Return (Enter)
Resizing You can resize the history view by clicking and dragging the top/right widget border
Focus Chat When you want to chat and you have focus in the world
eg. you are moving your avatar hit Return (Enter) to set focus to chat


Normal Chat View

Normal Chat View

History Chat View
History Chat View

In-world Voice

Voice communication tab is automatically shown if a world has a voice service available. Default sending audio mode is 'always off'.

In-world voice is 3D so you can notice attenuation and direction of an audio source. Just be sure that your avatar is close enough of the an another avatar you are speaking with.

Actions

  • Toggle in-world voice mode: click mode button
  • Open in-world voice participant list widget: click participant list button
  • Mute a participant: Click mute check box in participant list widget

Voice control tab

Voice control tab

In-world voice participant list

Using the Avatar Editor

To bring up the avatar editor, press the green button on bottom right corner. It has a avatar symbol so should be easy to find and is above the inventory button.

Avatar Editor

From top to bottom, there are controls for adjusting appearance (morph and skeletal modifiers), changing textures, and editing attachments.

In the bottom row there are buttons for loading a new avatar, loading a new attachment, reverting to last saved avatar, and saving the new appearance.

Avatars and attachments are loaded to the editor from local hard disk. You can download and extract the ExtraAvatars-package http://dev.realxtend.org/gf/download/frsrelease/117/58/Naali-ExtraAvatars.zip for some of the avatars and attachments from the old realXtend viewer.

You can export your avatar when logged in with a realXtend account. Webdav avatars are supported for opensim accounts if the server is Taiga (>0.1.2). Normal opensim+modrex servers do not provide storing avatars to server, only Taiga has this for OS accounts.

Using the Environment Editor

The Environment Editor can be launched from the viewer toolbar under 'World Tools'. The editor contains functions for editing multiple aspects of the virtual environment.

  • Terrain
  • Terrain texture
  • Water
  • Sky
  • Fog
  • Ambient light

Environment Editor

Content Creation Tools

In the current Naali version the content creation tools are still under construction. Here's a short overview of what features are already functional.

World Building Mode

World Building mode aims to provide a separate user interface for building and editing the world. As there are many editing tools we need all the space we can get on screen to efficiently work with them. The underlying functionality is almost always in python and the below explained Object Editor code, so build mode is just trying to make the UI experience for building better and also to add functionality later on.

There are currently more features working in the Object Edit window that this build mode, but we are actively porting features into the new UI. The aim is to get rid of the python UI all together when this work is done.

World building offers

  • Quick toggling between normal and build mode without the need for menus/buttons
  • Rich tools for building/editing
  • View port to selected object that you can rotate and zoom

Ways to access world building

  • Ctrl + B toggles normal/build mode
  • When in build mode ESC will get you back to normal mode
  • 'Build' button on the top right toolbar switches to build mode

World Building mode


Object Editor Window

The Object Editor can be launched from the viewer toolbar. It supports selecting objects from the 3D scene with the mouse, and moving, rotating and scaling them either by using a 3d widget or manipulating the values in the 2D dialog. Some other basics like adding a new object, duplicating an existing object, and calling the Opensim server side undo for an object work too. And of course assigning a mesh to be used for the object, by dragging a mesh reference from the inventory to the mesh field.

Object editor

The same window has also a materials tab, where you can assign textures or materials also by dragging or copying the references from the inventory.

The move (translate) manipulator

Currently you need to press Move/Rotate/Scale buttons to enable a 3d manipulator widget. When no manipulator is active, dragging the object moves it freely based on the view direction. This part of the UI is not really designed yet, the workflow is to be improved.

Limitations

Having pulldowns which directly show the available assets like meshes and materials to use is not implemented yet.

Assigning textures or materials to objects works currently (till 0.2.1) only for meshes, not for prims.

About the other properties shown, only ServerScriptClass is experimentally synchronized to server in 0.1 and till 0.2.1, the other params like prim geometry is just shown and modifying them does nothing.

Uploading Scenes

In the current Naali version the upload scene tool is still under construction. Here's a short overview of what features are already (somewhat) functional.

Opening Upload Scene

Ogre Scene Tool is found in the Naali menu under Scene, where it is named as Ogre Scene Tool in version 0.4.0 Upload Scene tool can be started by selecting first Server Tools and then Upload Scene from viewer toolbar (marked by yellow arrows below).
Server Tools

Loading Local Scene

In the opening Local Scene window, there's a button Load (that can be also triggered wit alt + l), that opens up file browsing window. When Ogre scene file is selected it is loaded locally to Naali, so that you can see it, but it's not loaded to server yet.
Server Tools
When you set Highlight on checkbox (or alternatively press alt + h), the scene that you just uploaded is highlighed (by yellow lines, see picture below).
Server Tools
You can change the coordinates and size of local scene by changing offset and scale numbox values. Lock scale checkbox connects x, y and z scale, so that when you change one they all change. Flip z-y flips y and z axes of local scene. Unload button unloads the local scene and Save button saves the current coordinates and scale of the current scene.
Rotation controlls rotating whole scene around x, y or z axis. You can speed up or slow down rotations and offset scrolling by setting stepsize at upper left corner. By default rotations are done around center point of scene, but you can also check the use rotation checkbox and set the rotation point that acts as center point for rotation.

Uploading Local Scene

For uploading your local scene you need to enter the region name where you want to upload you scene, you can find out the name where you're currently located by clicking the map button on upper left corner in the Naali viewer see yellow arrows in the image below.
File:Naali-LocalSceneGetRegion.png
In the Upload Scene window enter region name and name for the scene you are uploading to server, see image below (you will be able to unload your scene in the server later on) and then click the Publish button.
File:Naali-LocalSceneSetPublishFields.png
Now the progress bar should start progressing, upload speed depends on various things: how big is your scene, speed of connection, cpu and gpu (poor gpu results graphic prosessing to be executed on cpu, and that causes zipping and sending to be slower because cpu needs to do graphic prosessing), but in general its currently pretty slow. You can go on doing other things, you will be notified by message box when upload is done.

Server Scenes

(note: currently Server Scenes features are broken) In Local Scene window, when you select the Server tab you are taken into server tab where you can see scenes, that are already loaded to server, that is by default you wont see anythin untill you push the refresh button below and scene data is loaded from server (ui is nor ready or user friendly at this point). In the image below the server tab and refresh button are shown with yellow circles.
File:Naali-LocalSceneServer.png

The upper table shows uploaded scenes and to how many regions they are uploaded, if you click some uploaded scenes you'll see list of regions where it's uploaded in the lower listbox. You can load the uploaded scene to other regions by entering region name to text box in upper right corner of the tab window and clicking Load button. And for unloading scene from region you can just click region name where the scene is uploaded and click the unload button. Currently you can not change the coordinates after you have uploaded scene to server.

Importing Blender Scene to naali-taiga, exported with ogreDotScene addon

This section deals using Ogre Scene Tool with blender2ogre tool found in:

Ogre scenes exported from blender can be imported Ogre Scene Tool, when following conditions are met:

  • python 2.6 is installed to command line path (newer probably works too)
  • ogre command line tools are installed to command line path
  • name of the scene file must end with ".blend.scene"

When scene file is named like *.blend.scene, scene tool does the conversions needed to make scene work with naali taiga combination. Command line tools can be found at:

And Python at:

In windows set the those tools to path, from controll panel find environment variables. Then find path variable and append installation paths to path variable separated by semicolon ";".
Test by typing python + enter in command line and OgreXmlConverter + enter for ogre commnad line tools, you should see info print if installation went well. Ogre Scene Tool cleans up empty face lists (that cause naali to crash), and does some vertex calculations, and creates new meshes from xml

Changelog and History

Version 0.4 (Under construction)

Features
  • Menu items are reorganized
  • External widgets with docking capability
  • TTS(Text-to-speech) notifications and text chat
  • Box selection: screencast
  • Render to texture support
  • EC_3DCanvasSource (aka inworld webview ec) 2D view now has proper browser controls (back, forward, home, stop/refresh, load progress bar). New attributes width and height that affect the inworld texture size, so you can adjust the size according to the web source page so it shows optimally in the texture, is readable etc. Also added a bool Sync 2D browsing that is defaulted to false, this says if you want the 2D widget browsing to be synced to other clients or not. Note that if you do sync this: if two people 2D browse at the same time you will start to constantly fight over who actually sets the current page to the component.
  • Login via realxtend://. Installing Naali registers new URL prefix realxtend:// to Windows registry. You can use it to do anonymous logins from e.g. web page with an avatar url. Here is an example url: realxtend://mydomain:9000?avatarurl?firtstname?lastname;. All parameters must be given but if you want to use login without avatar url just give a dummy parameter for that. Avatar url must contain certain structure for Naali to handle it properly. It has to have avatar folder and the name of the xml file has to be Avatar.xml. E.g. http://mydomain.com/avatar/my/Avatar.xml. Using other kind of avatar url causes changes to current Naali avatar url parsing logic.
Internals
  • OpenSimSceneService: doing the selected entity and whole scene xml forming smarter. Dropping out non network synced components as it should be.
  • Removed unnecessary dynamic component name print from python to console/log when ever a dynamic component was found inworld. Spammed the console.
  • Added EC_Selected. This component can be used to tag entities for selection, like objectedit does. Interested parties can listen for the scene ComponentAdded signal, and check component type name for 'EC_Selected', and do whatever is necessary to handle selection.
  • Possibility to choose menu type from default round menu and classic file menu
  • Mumble voice uses avatar name as a mumble user name instead of avatar entity uuid
Bug Fixes
  • WebDav inventory authentication failed to generate proper base64 hash in the 3rd party webdav library when username + password combination was too long. Used base64.encodestring(s) that inserted \n stupidly (assuming for pretty print usage) after certain number of chars in the hash. Swtiched to base64.b64encode(s) that wont do this.
  • Voice channel selection ui is more visible

Version 0.3.4 (19.11.2010)

Features
  • Scene/application backup tool: You can access this widget from world tools menu. This enables you to backup a scene if you have the appropriate access rights on the server. You will have to provide a location from your hard drive and give an asset base url for http publishing of the files. Please read more instructions from the widget itself in side naali.
  • Webbrowser plugins enabled to WebViews in Naali: if you have e.g. the Flash plugin installed to Firefox on your computer, the web page textures on 3d objects in Naali should show the flash content now as well
  • EC editor tree widget's state is kept in memory and is uniform in all editor instances.
  • EC_3DGizmo introduced. This EC allows you to register attributes for modification, ie. through manipulators.
  • LocalScene has now rotation feature, it's possible to rotate scenes loaded locally and publish them to world with new rotations. Also there's step size input that controls the stepsize of spinboxes in localscene, that agains makes moving and rotating scenes more flexible.
  • Build mode manipulators now have proper group rotation. Rotates the whole group in relation to their center point, not every object separately.
  • Naali Python webmodule loader
    • An EC in the scene can refer to a python module (i.e. a .py file) on a webserver by name. When logging in to that scene, Naali downloads the code and executes it so the module can register itself the the client GUI etc. Is made secure by using a hardcoded baseurl for the downloads (by default localhost:82) -- when shipping a client that you wish to be able to modify afterwards, you can change that URL to point to your (and the customers..) trusted server.
    • Only do this when you know what you are doing, as this is cpython code which can do anything with the system. We will probably never make this point to any webserver in official Naali releases, but the feature is there to be configured for projects to use. The loader code is here and an example module that can be loaded from the web and which registers to the plugin system and the gui is here.
    • Otherwise the idea is to have a secure Javascript sandbox in Naali where code from the services can implement new functionality without system nor too much Naali internal access. Also this works already experimentally but the security is to be analysed.
Internals
  • TreeWidgetItemExpandMemory: keeps tree widget's state (expanded/collapsed items in memory and saves/loads to/from config file when Naali is closed/started. Used only with EC editor currently.
  • Translate and scale manipulations use EC_3DGizmo.
  • Improvements for EC_3DCanvas for painting and other internals
  • Improvements for 3DCanvasSource aka 3DWebview for how to update the underlying 3DCanvas component on attribute changes.
  • OpenSimSceneService improvements for the scene backup tool to use.
Bug Fixes
  • Terrain texture blend weight painting should now handle scenes with multiple terrains correctly.
  • Uploaded scenes have collisions now
  • Alt camera code will not activate now when in build mode and trying to Ctrl+Alt to do scaling.

Version 0.3.3 (2.11.2010)

Features
  • LibraryModule functionality
    • Module supports urls that end with .scene, .material, .mesh, .png, or .jpg/.jpeg. Also .xml of Naali scenes via OpenSimSceneService.
    • You can drag and drop urls from library widgets browser (or e.g. Firefox/Chrome) to the Naali 3D scene. If you drop to a world object, the content will be instantiated there, otherwise in front of the avatar.
    • If you want to drop a mesh with materials/textures the link url should contain all materials separately splitted with ";" in url. For example http://test.com/mesh.mesh;http://test.com/material1.material;http://test.com/material2.material or http://test.com/mesh.mesh;http://test.com/pic1.jpg;http://test.com/pic2.png you can add as many materials/textures as there are submeshes.
    • If you have textures in material file make sure that the texture ref is a url alsol. Naali will automatically parse the texture ref and fetch the texture to be displayed. UUIDs or "flower.jpg" will not work.
    • You can drop a single material or texture url on a mesh and the submesh of that ray cast position gets updated with the dropped material or texture.
    • When dragging .scene url scene is parsed and added via LocalScene python module.
    • The library widgets browser will default to http://www.realxtend.org/rexlib/ but you can browse to any site you like where you can drag&drop the supported file types into the 3D scene. Or as said use your preferred web browser to drop links to the Naali window.
  • OpenSim Scene Tool
    • You can export Naali scene xml with rex primdata included for a set of objects. You can do a visual selection of the object set from the widget that is under World Tools menu. This set can be then exported to the local hard drive to a xml file.
    • Export will include all Naali components like EC_Light and EC_3DCanvasSource. On import they will be instantiated in the state that they were when the xml was created.
    • You can import these xml scenes via Naali to the OpenSim server you are logged in. Server must be running NaaliSceneImporter region module that is shipped with modreX taiga branch and with Taiga >=0.2.0. Import can be done in front of the avatar or the the original export time locations.
    • Drag and drop support via LibraryModule for .xml web links. Instantiates the xml scene to the raycast position, or if raycast did not hit instantiates in front of the avatar.
Internals
  • New LibraryModule for importing drag and drop web content, see above for details.
  • New OpenSimSceneService that is implemented in WorldBuildingModule. This service can export a list of entities into a file and import a xml file or url to a xml file to the server.
  • JavascriptModule runs scripts at startup from the directory bin/jsmodules/startup, if the directory exists.
  • EC_VoiceChannel can be used to create more mumble voice channels to world.
Bug Fixes
  • Sending ObjectDeselected packet to OpenSim. This caused collisions never to recalculate for meshes/prims after once selecting a object in build mode.
  • EC_OpenSimPrimitive ScaleToPrim bool defaults now to false in the components constructor. Caused unwanted behavior when setting mesh ref to a prim.
  • Translate ruler doesn't jitter while transforming anymore.
  • Fixed ECEditor null pointer crash when entity was removed by other client or script.

Version 0.3.2 (8.10.2010)

Features
  • Avatar
    • Avatar editing is now done in its own ui scene, similar to work building.
    • Refreshed the old user interface. Implemented notification for what is happening and on errors.
    • You can access avatar mode from avatar button in the lower right corner when inworld. You can toggle mode to show/hide with Ctrl+A and exit the mode with ESC.
  • Camera
    • Camera rotation and zoom made smoother.
    • Switching camera states and focusing objects now have transition animations.
    • Avatar mode will animate camera to have nice view of the avatar from the front. You can rotate the view with pressing left mouse and moving mouse and you can move with avatar as normal the camera will track the avatar.
  • Manipulator Rulers
    • Rotation manipulator shows amount of rotation while dragging the manipulator.
    • Translation manipulator shows the world units as small cross anchors. The two cross anchors closest to object center get connected. Known issue: anchor visual location jitters when translating object.
  • Entity-components
    • EC_Light, EC_Sound, EC_SoundListener, EC_Mesh and EC_ParticleSystem attributes are now exposed to Javascript/Python (Using Q_PROPERTY macro).
    • EC_OgreMesh functionality merged to EC_Mesh.
Internals
  • Avatar related code moved to own module called AvatarModule. Handles all the old code for appearance and avatar creation and contains avatar related entity components.
  • ObjectFocus camera code moved in separate class with its own camera entity. Cleaned CameraControllable to not have ObjectFocus code.
  • Python API was changed to use the internal Scene::Entity class directly. Almost all of the tools have been ported to this new naali API, so the ancient rexviewer module and PyEntity wrapper class are close to being removed.
  • Testing: buildbot now runs an automated test sequence after each commit: user Test Bot logs in to world.realxtend.org:9000, creates an object, sees that it appeared on the server, deletes it, and logs out. On linux in a virtual machine with mesa software opengl. This should ensure current Naali always works, also with poor graphics cards and drivers etc.
  • Refactoring and cleanup of entity-component change signals.
Bug Fixes
  • Notifications wont leave hanging if you switch a scene while they are visible.
  • You can now focus on object in free/fly mode
  • Naali used to crash if someone/something over the network removed the object that you had selected for editing. This is now fixed and the whole new entity access mechanism from Python should not crash ever anymore.

Version 0.3.1 (18.09.2010)

Features
  • Renderer service now has screenshot services. RenderImage() and RenderAvatar(), will take screenshot of the current rendering window and return you a QPixmap that you can manipulate and/or save.
  • Alt-Camera controls: Rotate camera up/down with mouse, zoom in/out a selected object with mouse scroll and zoom in with double click.
  • World Building
    • Environment light controls
    • Toolbar for widgets like env editor and light controls
    • Mesh, sound and textures can now be set in build mode
    • Object viewport automatically updates with 20fps so you'll always have the latest real time view
    • Manipulators change mouse cursor on hover/pressed
    • Animation control: blog post
    • Inventory and entity component editor integrated to world building UI
    • Position and scale got spinbox widgets so you can set values by hand
    • Building side panels can be hidden to sides. To toggle hit the arrow at the bottom.
    • For mesh/sound/animation setting you can browse to your hard drive, select a file, it will be uploaded to inventory and set as the mesh/sound/animation for that object automatically. Done by clicking blue folder icon next to the line edit, works for both webdav and OS inventory.
    • Object Edit removed from root menu. Functionality still accessed through world building tools (as it has been for a while already).
  • Entity Actions developer memo
  • Entity-components
    • EC_SoundListener: allows (in theory) multiple switchable/toggleable sound listeners when using e.g. multiple avatars and cameras
    • EC_Movable : allows moving entities with placeable component in the scene with Entity Actions
    • EC_InputMapper : allows mapping of key and mouse events to Entity Actions
    • EC_Script : allows attaching Python, Javascript and possible other scripts to entities. Currently supports only local script files.
  • Voice user interface improvements
    • Push-to-Talk mode: User can enable audio transmission by keep pressing middle mouse button
    • Toggle mode: User can toggle the audio transmission on/off state by pressing middle mouse button
    • Average bandwidth is shown.
    • User can mute all voice participants
  • Voice settings tab
    • User can define audio layback buffer size
    • User can define audio encoding quality
    • User can set microphone level
    • User can test audio microphone level using local test mode
Internals
  • Moved to Ogre 1.7.1 on windows builds and dependencies we provide for win32. Naali will also build against Ogre 1.6.x.
  • Removed YAPE library from Naali as it's functionality is replaced now fully with QtPropertyBrowser
  • OIS removed from Naali dependencies repository as it's been long gone from Naali itself.
  • EC_SoundRuler and EC_Ruler don't cast shadows anymore.
  • New and cleaned up manipulators: blog post
  • Reimplement rotation code for manipulator and simplify manipulator code overall
  • World Building object viewport now remembers its orientation and relative position
  • Ether card screenshots are not taken via renderer service with a proper camera ec so you wont see desktop artifacts in the photos anymore.
  • Removed more internal dependency on RexLogicModule from PythonScriptModule
Bug Fixes
  • Animation Sync wouldn't sync with server on first usage.
  • CAVE now works also with OpenGL
  • Added libopenjpeg2 as dependency to linux .deb files. Not having this caused many users not able to launch Naali after the .deb installation.
  • Manipulators react better to mouse travel. "Stickiness" improved.

Version 0.3.0 (27.08.2010)

Features
  • Added a new attribute type "QVariantArray" that can contain x number of QVariants. Also added ui elements for ECEditor so user should be able to edit this new attribute by using the ECEditor window.
  • Attribute interface can now contain metadata such as min and max value. This information is mostly used by the ECEditor.
  • Hovering prims/meshes that have media urls will show the "link" mouse cursor.
  • Shadow quality setting (off/low/high)
  • Texture quality setting (low/normal)
  • Attach sound to entities with object edit (EC_AttachedSound)
  • EC_SoundRuler: A visualisation for EC_AttachedSound. See Blog post
  • EC_Mesh: A component that is responsible to request mesh/material assets and displaying them on the scene.
  • Enable hotkeys for object edit: alt-s for scale, alt-r for rotation, alt-m for translate (move), ctrl-z for undo, delete for delete, alt-l for linking objects, ctrl-shift-l for unlinking objects
  • Constant size transform widgets (there's some small fluctuation in size, but mostly stays constant).
  • Fullscreen mode. Can be enabled from settings-> rendering or with hotkey Ctrl + F.
  • First Implementation of CAVE-system. Can be configured from settings->CAVE. At the moment only works correctly on DirectX, on openGL there is backprojection of the scene in CAVE-views. This will be fixed for the next release. Also when you disable CAVE, all the views are destroyed.
Internals
  • EC_Touchable: can now set hover cursor, has hover in/out signals, can disable material highlight.
  • Legacy MediaUrl: Now uses touchable entity component to show a 2D preview of the webpage. Touchable will give us clicks for the entities that will in turn invoke python loadurlhandler web browser to show the url.
  • UiServiceModule: optional light-weight UI module for creating alternative UI's.
    • UiModule can be disabled now quite feasibly.
  • LoginServiceInterface: Developers can can create their own login (screen) modules for OpenSim/realXtend/WebLogin which utilize the existing protocol modules.
  • Move Console UI from UiModule to SupportModules in order to make console usable with possible alternative UI implementations.
  • Qt::WA_DeleteOnClose window flag can be now used for QWidgets that are embedded to the view. When proxy widget is closed, the QWidget is now deleted as it should.
  • Simple LoginScreenModule for demonstrating the use of UiServiceModule and LoginServiceInterface.
  • Expose EC_OgreCamera and it's parent entity to scripting.
Bug Fixes
  • Implemented button width checks in our QStyle, long text buttons were clipping.
  • MediaUrlHandler: Improved performance with only loading webviews in memory that really exist in the scene. Better deletion code, hopefully cuts down the crash bugs.
  • Mumble voice stability and quality improvement
  • Hide IM button from the view if no IM module available.
  • IM login widget not responding to mouse. IM widget crashing on context changes.
  • If login process fails, the error message is shown on both Ether and classic login screens.
  • InputContext can now be properly used from Python
  • ScenePtr null check to WorldBuilding when creating camera to the obj viewport
  • Correctly initializing our QApplication subclass. Affected certain linux machines to crash on loading.

Version 0.2.5 (05.08.2010)

Features
  • A map view that shows the map tile from the server and the avatars on the region as icons.
  • Video support for media urls. If mime type of mediaurl is video and supported by Phonon backend Naali will play the video in endless loop using refresh ratio defined with media url texture.
  • World Building new UI: new object, clone object and delete object. Selected object viewport on the right side can now be rotated with mouse and zoomed with mouse wheel. New shortuts for manipulating selected object, Ctrl = move, Ctrl+Alt = Scale, Ctrl+Shift = Rotate.
  • Couple of new stats for network profiling + dumping network traffic to file
  • Use dummy "Loading..." items in each inventory folder when using OpenSim inventory for increased responsiveness: the expansion arrow is visible even though the folder has no children retrieved yet.
  • Scene complexity tab in the Profiler window. Shows information about objects, materials and textures, including total triangle count, to assist world builders in keeping within their chosen complexity & performance budgets.
  • Web UI / screenshot server can now give a picture as a response to a HTTP query with camera position and orientation. A new web ui (html+js) is included that shows a minimap and a 3d view and features moving the view with arrowkeys and rotating with mouseclicks. Demo server being upgrade now, link put to there soon.
Internals
  • New QtInputModule that replaces the WorldInputModule. Fixes input bugs in focus handling and allows easy use of all kinds of e.g. modifierkey+mouseclick handlers in other modules.
  • Refactored ECEditor's property browser (ECBrowser).
  • Module and service getter API improvements
  • Javascript API experimental additions: MouseHover and MouseClick qt signals for 3d scene entities
Bug Fixes
  • Shadows now fixed. On DirectX we use multiple shadowmaps for better shadow quality. On openGL we are forced to use only 1 shadowmap which degrades shadow quality.
  • Notification message boxes now blend in with the background. Bug introduced when we changed the Naali QStyle.
  • Better handling of webdav exceptions when connecting to inventory.
  • Chat bubble and name tag appearance fixes.

Postponed for next release (is in develop branch)

  • Include new version of EC_DynamicComponent.

Version 0.2.4 (11.6.2010)

Features
  • Texture Caching
    • Textures get now stored on disk after decoding is complete. This will fix the issue that textures were always decoded when it was found from asset cache as encoded image. Impact of this is most notable on slower machines as j2p decoding is quite heavy. Modern PCs should also see login speed improvements.
  • Texture and asset cache configuration
    • Naali settings now has a new tab called 'Cache'. Here you can set the max disk usage for both caches, reset both caches and set if only j2p textures are stored to texture cache.
    • If you enable caching everything, it means also jpg, png, bmp etc. formats will be cached after decoding. For normal PCs this should not be necessary but again for slower machines this might give you some speed ups in loading worlds.
    • Assets cache default max size: 300 mb (min size 10mb). Texture cache default max size: 500mb (min size 20mb). Be prepared to increase these if you visit alot of heavy content worlds. Max size for both is 9000 mb.
    • If caches get full oldest date modified files will start to be removed from cache.
Bug Fixes
  • EC_3DCanvasSource crash fix in some worlds that have mediaurls.
  • Ether now suppresses key input to animation and login action controls when classical view is shown. This fixed the bug that when pressing enter in classical login views web browser would start a login in the background.
  • Shadow fixes so all worlds should have the new nicer shadows. There is still a bug with openGL and the shadows might not show. To be fixed.

Version 0.2.3 (9.6.2010)

Features
  • Changelog now lists versions starting with the latest one
  • URL based textures: Supports asset ref url from webdav inv or just a url to any image on the web. Supported types are JPG, PNG, GIF, BMP, TIFF and a few other exotic ones. NOTE: jpeg2000 is not supported yet with http textures. This can be made to work if needed. UDP path decodes j2p textures as before.
  • Object Shape is updated to the server when modified from object edits property editor. This essentially means prim shape manipulation is possible in Naali. (ObjectShape packet)
  • Objects name and desctription is updated to server. (ObjectName and ObjectDescription packets)
  • ECEditor supports now multiediting. You can open ECEditor by typing "eceditor" to console window and you can pick your entities simply by clicking them on the scene. Note! if EntityComponent's attributes don't appear on the property browser, you can try to edit them by using xml editor (right click editor's selected entities list and choose "edit xml ..." option from the dropmenu).
  • Debugging: Requesting god-mode from server
  • Debugging: Ability to kick out users from server + modal info dialog when user is kicked from server
  • Links (must begin with "http://" or "https://") in chat log are clickable and opened using OS's default web browser
  • Now using Parallel-Split Shadow Maps for better shadow quality
  • Python API: upgrade to PythonQt 2.0.1 which exposes all of Qt 4.6 and supports operator overloading
  • EC_DynamicComponent started: support for defining custom component data and handlers in Python and Javascript (untrusted js api still just a minimal test and off by default, with trusted py code all of the normal Naali and standard py api can be used). A small animation time position sync slider is included in release, shows in tools menu when logged onto a server which has an entity with a component that has that data (a demo place will be set up soon)
Bug Fixes
  • Crashed when assigned url as texture/material field.
  • Media url textures on prim: If set to whole prim (not with multiple dropping) it will apply to all sides.
  • Webdav inventory performance enhancements, no more unwanted web fetches. Also smarter fetches so that asset ref urls are available right after upload for the new items.
  • Webdav inventory widget paint errors fixes when manipulating the treeview (add folder/remove/upload/rename).
  • Material count is now read correctly from mesh when its ready. This enables you to set different texture to all submeshes via object edit. Also pushing the correct material count to modrex in rexprimdata.
  • Object Edit widget now sends the edited properties to server with RexPrimData GM. Some fields worked earlier (was broken untill now) but now it syncs everything. Note that everything you see in the prim property editor is not sent via the RexPrimData packet like for instance MediaUrl, but most of the fields are sent. (RexPrimData generic message packet)
  • Random crashes when mumble in-world voice was used.
  • Fixed avatar bone adjustment controls no longer working after choosing a new avatar with the file selector.

Version 0.2.2 (19.5.2010)

Features
  • Included first test version of EC attribute editing (You need to enable the ECEditorModule to try it out). Note! If you want to get your own attributes to display on a ECEditor you need to use AttributeInterface class for every attribute values that your entity component uses.
  • Initial implementation of WorldLogicInterface service to get rid of dependencies to RexLogicModule
  • Mouse hover ray casting to scene
  • EC_Touchable (serializable): visual effect triggered by mouse hover ray casting indicating that the entity has some kind of functionality when clicked i.e. it's touchable.
  • Moved EC_OpenSimPrim out from RexLogicModule to its own static lib.
    • Note: in this move the network sync code was removed from ServerScriptClass property, which was the only prop so far for which editing in obedit/props tab worked previously. Is to be brought back for next release, hopefully syncing all the other props too (requires finishing ObjectUpdate sending)
  • Fetching the GetTexture capability url from simulator. Using this to download inworld textures and meshes via HTTP. Works against both Taiga >=0.1.1 and normal OpenSim >0.6.9-postfixes (i believe, quite a new feature in OS).
  • Webdav inventory back in business with OS agents against Taiga 0.1.2.
  • Webdav avatar export/download/broadcasting for OS agents against Taiga 0.1.2.
  • Capped the UI overlay update to 40 fps. This increases the Naali mainloop speed when there is animations or otherwise constant movement in the UI scene.
  • Login teleport support for classic login and ether. Write region name to start location -input field.
  • Framed widgets now handle window resizing. They keep their position in relation the the window borders and keep themselves in the view. Made by Pavlovski.
  • Prim and mesh texture media url support with refresh rate.
  • 2D MediaURL browser pops up when clicking a object that has a media url set as texture. Manipulating this web view wont affect the rendered texture on the object at this point. Purely for browsing purposes.
  • Handling of ll Text Box dialogs
  • Teleport widget. Shows nearby regions as list and allows manually enter region name that is not listed. Does currently logout-login when arriving to new region.
  • Python API upgrade & cleanup (details in http://groups.google.com/group/realxtend-dev/browse_thread/thread/14448ccd22b01808#)
    • upgrade to circuits 1.3 dev, use circuits return values for naali py event handlers. Event handlers can now just return normally, the previous callback passing hack was removed.
    • autoload.py cleanup: now just need to add the own module name, and reloading and error reporting at load etc. all work
    • a threaded worker test/example in apitests/ , works
  • In-world voice User interface. Visible when logged in to world with mumblevoicemodule. Mumble client installation is not needed anymore for in-world voice.
Bug Fixes
  • Object editing: Fixes to mesh and material/texture assignment py side gui code, is now again tested and should work fully (note: must check if mat/tex assignment is still for meshes only, not yet for prims too)
  • Replace the hack used to prevent duplicate avatar joined notifications with a better implementation
  • Fixed avatar textures resetting when loading a new avatar, editing textures, and then adding/removing attachments to the avatar
  • Bottom left corner chat/video widget now wont steal inworld clicks if there is hidden or transparent widget. This essentially means you get inworld clicks to objects/avatars trough the big proxy that is the comms widget. Unless its history view as its not transparent or hidden when its selected.

Version 0.2.1 (27.4.2010)

Features
  • First version of the integrated Mumble voice functionality (lacks proper UI) requires '--usemumblelibrary' command line argument. Does work only with mumble servers with default mumble port.
  • Working http downloads
    • New Qt-based implementation for http downloads (todo: Coming up: support for getting the base assets url from server CAPS)
  • Localization support
  • Preview for sounds and textures
  • First version of LoadURL packet handler
  • Hovering buttons
  • Chat logging into a file (disabled by default, you can enable it from the InWorldChatModule config file)
  • Experimental entity-component editing and replication through XML serialized format in prims' RexFreeData field
Bug Fixes
  • With dual monitors the windows position got stored wrong into the xml, naali would not start after this was because it was trying to open the main window out of screen.
  • QSettings was reading the bindings file under /data with write+read access even if we were only reading from the file.
  • Added handling of 44-byte ImprovedTerseObjectUpdate packet.
  • Fixed object edit position z-axis spinbox maximum value to 10000 instead of 99.99.
  • Client side .scene loading rotation bug fixed (ui coming for 0.2.2)

Version 0.2.0 (1.4.2010)

Features
  • First version of the new user interface design (including the Ether world and avatar selection tool
  • Mumble voice chat test using a separate Mumble client installation

Version 0.1

  • The first Naali release with basic functions in place.