Corus M2 Test Plan
From Rex community wiki
Naali and Taiga 0.1 Test Plan
User Interface
Communications
Load communication module
- Prerequirements
- Communication module is build (make sure it has been enabled at cmake files)
- Instructions
- Desired result
- IM login widget will popup
- Known issues
- haven't been tested on linux yet
Login to jabber server
- Prerequirements
- You have to have jabber account
- gmail account works
- You can make an account eg. at jabber.org
- Instructions
- give your credentials
- for gtalk sccount (name@gmail.com, password, talk.google.com:5222)
- for jabber account (name@host, password, host:5222
- Desired result
- Known issues
- In some cases the login fails and times out after a couple of minutes. You will see an ampty friendslist as indicator of this problem.
- When login times out you can get login to work again with following prodecure: Kill gabble process, Login and logout with same jabber account and different client eg. web browser(gmail.com), start Naali again and login
Add friend
- Prerequirements
- Logged in to jabber server
- Instructions
- Actions >> Add Neew Friend
- Give jabber id of your friend in format name@host and click OK
- Desired result
- Your friend will get friend request with (s)hes client and after accept the request your friend list will update and includes a new contact
- Knows Issues
Show friend list
- Prerequirements
- Logged in to jabber server
- Instructions
- Open IM widget
- Select "Show Friend List"
- Desired result
- Friend list widget will open and show all your jabber contacts and your jabber status
- Known issues
Set jabber status
- Prerequirements
- Logged in to jabber server
- Instructions
- Open IM widget
- Select "Status" >> One of ("Available", "Chatty", "Away", "Extend Away", "Busy", "Hidden")
- Select "Status" >> "Set Status Message" >> write some text and press OK
- Desired result
- Your online friends will get status update with their jabber clients
- The new status text and connectio status icon will appear to right side of the IM widget
- Known issues
Join chat room
- Prerequirements
- Logged in to jabber server
- instructions
- Open IM widget
- Select "Actions" >> "Join Chat Room" >> Give a jabber chat room address and press OK
- Desired result
- Text chat tab will open to IM widget with jabber char room address as title
- If there is jabber users on that channel you can chat with them
- Known Issues
Start text chat
- Prerequirements
- Logged in to jabber server
- You have at least one jabbe contact on your friend líst
- instructions
- Open IM widget
- Select "Show friend list"
- right-click one of your contacts >> select "Start chat"
- Desired result
- A new tab will open to IM widget a id of the participant as title
- you can write text messages and participant will see those with (s)hes client
- you will see any text messages your partner send to you
- You will see jabber status changes of your partner
- Known issues
Start Voice Chat
- Prerequirements
- Logged in to jabber server
- You have at least one jabbe contact on your friend líst (with audio capable client as Naali or gmail.com web application)
- You must have a michrophone and web camera
- instructions
- Open IM widget
- Select "Show friend list"
- right-click one of your contacts >> select "Start video conversation"
- Desired result
- A new tab will open to IM widget a id of the participant as title
- You will see your web cam iput at left and lack rectangle at right waiting for video sream from you partner
- You will see connection status indicators at top of session tab
- You can enable/disable outgoing audio/video stream by clicking status indicators under your web cam preview on the left of session tab
- you can close session by clicking "Close"
- Known issues
- When testing against gmail.com web application the video is not available. Most probably caused by the way google uses video codec. Might work in future when fixed in telepathy libraries or gmail application
- Status indicators does not work correctly
- Video playback for received video does not show
Spatial Voice Chat
- Prerequirements
- Logged in to jabber server
- Logged in world server
- Voice session opened with an jabber contact
- instructions
- Open IM widget
- Select "actions" >> "Manage 3D Voice"
- Select avatar from drop list
- Press "Start tracking" button
- Desired result
- You will hear the partner's voice in 3D as selected avatar as source of the voice
- Known issues
Sign out
- Prerequirements
- Logger in to jabber server
- Instructions
- Open IM widget
- Select "Status" >> "Sign out"
- Desired result
- IM login widget will appear
- All active chat/voice sessions widgets will be closed
- you can now login again to jabber server
- Known issues
Server
Scripting
Content Creation Tools
Environment Module
Initialization
When module is intialized it should send a "[EnvironmentModule] Module EnvironmentModule loaded" log message.
Login
Module should create following entity components when user is login in.
- EC_Terrain
- EC_Water
- EC_OgreSky
- EC_OgreEnvironment
Logout
When logging out module should release all entity components that it has intialized.
Features
EnvironmentEditor
- Handles all environment editing.
- Show environment releated information.
Terrain.
- Generate terrain heightmap geometry (RexNetMsgLayerData network message).
- Update terrain textures and their heights (RegionHandshake network message).
- Change terrain heightmap.
- Change terrain textures.
- Change terrain height values.
Water (Offline).
- Update water height (RegionHandshake).
- Change water height.
- Add/Remove water geometry from scene.
Sky (Offline).
- Change sky type.
- Change sky heights.
- Change sky parameters.
Environment (Offline).
- Change fog.
- Change ambient light color.
- Change Sun light color and direction.
- Update simulation time on caelum.
Change sky type and parameters using samplesky.py script
- Turn off caelum or nothing will happend.
- Need to test with new ModRex and OpenSim.
- Add script using old rex viewer.
Change sun light using testambient.py script
- Turn off caelum or nothing will happend.
- Need to test with new ModRex and OpenSim.
- Add script using old rex viewer.
Environment editor window
Initialization
- Assure that tool bar contains Environment Editor widget, and widget contains tab-pages: "Edit terrain", "Edit terrain texture", "Water", "sky" "Fog", "Ambient Light".
- Connect widgets with Sky, Terrain, Water and Environment objects. @todo make sure that all connections are present after logout and login.
Features
Terrain:
- Using terrain-page user should be able to see terrain spesific information like heightmap, terrain textures and terrain height ranges.
- Terrain heightmap should be possible to change by clicking the heightmap image. User can change paint action and brush size.
- Terrain textures should be possible to change.
- Terrain height values should be possible to change (start_height and height_range).
Sky:
- Using sky-page user can change sky type and its parameters (client side only).
- Can see if caelum is on or off. Note! if caelum is on sky-page wont print any information about sky and user cant change them.
- @todo add possibility to turn of the cealum in runtime.
- Sky type should be possible to change (Sky box, Sky dome and Sky plane).
- Sky texture should be possible to change using asset id.
- @todo add drag and drop support from inventory window.
- Each sky type have it's own sky parameters so page will should be printing different information depending on what sky type is in use. User should be able to change those sky parametes.
- Sky should be possible to remove away.
Water:
- Using water-page user should be possible to manage (offline) world water properties.
- Water height should be possible to change.
- Water should be possible remove away.
- Water should respond a RexWater-message which is send from server. Here responding means that it should change it state correspond to server-message. GUI-state can be in diffrent state (known bug/not tested)?
Fog:
- Fog is divided in two : Ground fog -controls and Water-fog controls.
- Fog color is changeable ( if fog color is overrided ) Because fog is a linear interpolated --> Fog start distance end distance should be quite close each other exampl. 12 (start dist.) 15 (end dist.).
- Fog should respond a RexFog-message which is send from server. Here responding means that it should change it state correspond to server-message. GUI-state can be in diffrent state (known bug/not tested)?
Ambient Light:
- Sun light direction vector should be changable ( changing values should immediately change sun light).
- Sun light color can be changed.
- Ambient light color should be changed.
- All above value should change when server sends a AmbientL-message. Note GUI-state can be diffrent (known bug/not tested).
Object Edit
Test list for Object Edit
Move / Rotate / Scale
There are two ways of manipulating the object's attributes with the Object Editing GUI.
Manipulating with the relevant widget spinbox while there is an object selected.
- Changing the position
- Changing the scale scale
- Changing the scale with keep aspect ratio -box checked (should scale the object to every axis)
- Rotating the object
- Repeat the previous steps without any object selected (note: nothing should happen)
Dragging with the manipulator arrows (press the button in the widget for the manipulator (arrows) to appear) and an object selected.
- Changing the position
- Changing the scale scale
- Changing the scale with keep aspect ratio -box checked (should scale the object to every axis)
- Rotating the object
- Repeat the previous steps without any object selected (note: nothing should happen)
New Object
Delete Object
- An object selected. Should cause the selected object to disappear from the scene and go into your inventory's trash
- When nothing is selected, nothing should happen.
Duplicate Object
- An object selected. Will cause a identical object to be spawned into the scene.
- Repeat the previous if the object didn't have a mesh, i.e. was a prim
- When nothing is selected, nothing should happen.
Undo (server side)
- Clicking undo when something is selected causes the server to undo the previous modification to that object, be it move, scale or any type of modification.
- When nothing is selected, nothing should happen.
Changing the selected object via mouse clicking.
- Select an object without a previous selection. Should create a box around the object.
- Select an object when already having previous selection. The selection box should move to the new selection.
- Select an object when already having a previous selection and manipulator arrows visible. Both the box and arrows should relocate to the new object.
Changing the selected object via Object Edit's list of objects.
- As a pre requirement, the list actually needs something in it.
- Select an object without a previous selection. Should create a box around the object.
- Select an object when already having previous selection. The selection box should move to the new selection.
- Select an object when already having a previous selection and manipulator arrows visible. Both the box and arrows should relocate to the new object.
Clicking on an object in the object Edit's list when the list is empty
- If the list is empty, nothing should happen
- Clicking on an object in the list should select it from the scene
- The object should be highlighted with a selection box.
Quitting with an object selected
- Shouldn't cause any errors
Logging out with an object selected
- Shouldn't cause any errors
Logging back in to any server after logging out and have used Object Edit
- Shouldn't cause any errors and still work as it did before the logout
Changing the mesh of an object (refer to known issues for some info).
- Drag & Dropping the 3D Model from the inventory to the edit line
- Copying the asset reference from the inventory and pasting it on the edit line
- Using the apply/cancel buttons. Editing something on the edit line should activate the buttons and cancel should revert the UUID back to the original. Apply will send the changed over the net to the server
Material / Texture assigning (refer to known issues for some info).
- Drag & Dropping the Texture or Material from the inventory to the edit line (this procedure will set the corresponding Material or Texture to the dragged info)
- Copying the asset reference from the inventory and pasting it on the edit line, then selecting either Material or Texture from the pull down menu and clicking Apply.
- Using the apply/cancel buttons. Editing something on the edit line should activate the buttons and cancel should revert the UUID back to the original. Apply will send the changed over the net to the server
Known issues
- due to Qt 4.6 problems, drag&drop from inventory to edit lines won't work in Windows 7 (works fine in Vista and XP, and Linux (x11)).
- The selection box is the wrong size occasionally. This happens because we use the bounding boxes from Ogre and are not provided with right information about the selected object.
- There is no 3D Widget for rotating at this point, though rotating from the 2D Widget's rollers do work.
Avatar
Avatar functionality
When using legacy rex authentication, avatar appearance is loaded/stored from the legacy avatarstorage, if it exists for the user. Otherwise the default Jack will be shown.
Override appearance is supported: check morphing into a fish & returning to human form in the fishworld.
Features supported for the avatars:
- mesh
- skeleton
- materials/textures, can use shaders too
- mesh and bone morphs
- standard animations
- attachment meshes to the avatar
- hiding vertices from the avatar as specified by the attachments (to avoid cloth clipping issues)
Avatar editor window
The avatar editor window should be openable from the top bar.
There are 3 sections:
- Adjust body parameters with sliders (morph/bones), these are divided into categories similarly as in the old avatar editor
- Change textures, you can pick either a local image or Ogre material file
- Attachments (can remove each individually)
In the bottom there are buttons to choose new avatar or attachment from local files (download Naali-ExtraAvatars.zip for some, as the Naali base download does not contain extras.)
There are also buttons to revert the avatar's appearance, and to save it when satisfied. The save button is currently greyed out (disabled) if not using legacy rex auth/avatarstorage.
Changes to the avatar become visible to other users only after saving.
Known issues
Scripted animations/morphs NOT yet supported, such as the fish puffing in the fishworld.
Avatar appearance can also be loaded from opensim assets, but this cannot be tested currently, as storing as opensim assets is currently disabled, will be replaced by storing into webdav at some point in the future.
Due to Naali's better support for material/texture naming and name collision avoidance, avatars saved with Naali might not display correctly on the legacy realXtend viewer.
Viewer Framework
Sound
Initialization
When starting viewer, see that there is the log message [OpenALAudioModule] Module OpenALAudioModule loaded. If there are no OpenALAudioModule related error messages after that, OpenAL initialization should be fine.
In-world audio
There are currently 2 ways of producing inworld audio (no UI sounds exist yet:)
- script triggered sounds
- reX ambient sounds
Script triggered sounds
Upload a sound with old viewer, needs to be WAV format and mono, and look up its UUID.
Set an LSL script like this to an object, also with old viewer (replace UUID with yours.)
default
{
touch_start(integer num_detected)
{
llPlaySound("3a4aecf4-584c-42d4-b939-cd0a0c339b8c",1.0);
}
}
When you click the object on Naali, the sound should first load from server, then play.
Alternatively, the llTriggerSound command can be used:
default
{
touch_start(integer num_detected)
{
llTriggerSound("3a4aecf4-584c-42d4-b939-cd0a0c339b8c",1.0);
}
}
Unlike llPlaySound, llTriggerSound allows multiple instances of the same sound to play simultaneously.
reX ambient sounds
Ambient sounds always loop. Like above, an uploaded sound is needed.
With old viewer, set sound parameters in the Misc subtab in reX tab (drag sound from inventory to Sound Name or just select it from the dropbox, set volume between 0.0 (silent) and 1.0 (full) and radius like you want.
Observe with Naali that the sound can be heard from the object, and that it attenuates according to the radius.
Sound directionality & attenuation
Sound should be directional (left/right/front/rear/above/below) and attenuate when sound source is further away. This is easiest to check with headphones.
When in avatar 1st or 3rd person mode, sound listener position should be at avatar. In free camera mode, sound listener position is at the camera instead.
If you move the sound source object (either reX ambient sound or a sound played with llPlaySound) while sound is playing, the sound should appear to move.
Sound settings
Master volume, triggered sound & ambient sound volume can be separately adjusted from the Sound Settings UI window.
On exiting the viewer, the volume settings should be saved to the configuration & be recalled on the next run.
Logout
When you logout, all inworld sounds should stop.
Inventory
Inventory Functionality
- Note: at the moment folder descendants are fetched only when double-clicking folder
- Upload
- Console upload
- "upload [asset_type] [name] [description]" (should not really be used but still exists)
- "multiupload"
- Upload button
- Test that file filters work correctly
- D&D upload from (windows) file explorer
- (Both upload and download should work for multiple files/items)
- Multiple selection in inventory
- Ctrl + click, Shiflt + click
- Drag&drop
- for now, only move operations occur when doing internal drag&drop
- texture items can be drag&dropped to material editor. This should be copy operation and the dragged item should stay in the inventory.
- when drag&dropping from world lib to my inventory, item in world lib must stay also at the original location
- Rename (Rename button or F2)
- must not work for My Inventory's default child folders and world lib folders and items
- New Folder
- user can't add folders to world lib
- Delete
- when item is deleted it should go to Trash folder
- when deleting item in Trash folder it should be deleted for good
- My Inventory's default child folders and world lib stuff cannot be deleted
- Opening items
- double-click item to open it (currently only material and particle scripts support opening)
OGRE Script Editor
- One one editor instance per script should appear (test by trying to open the same item many times)
- if name is indentical to the original or empty, save button should be disabled
- Particle scripts
- Material scripts
- Raw text edit for material that don't have properties
- Parameter editing for material that have applicable parameters
- No validating for uuid's at the moment
- Invalid value should be shown with a red background, valid with green background
- If one or more invalid values occur, save button should be disabled
Material Wizard
- Notes
- Currently all combinations have Diffuse Mapping "Diff" (Diffuse: rgb texture) on by default
- "Diffuse: modulate diffuse with vertex color" and "Diffuse: solid" disabled at purpose at the moment
- Possible combinations:
- SSDiff DiffRgbTex
- SSDiffa DiffRgbTex + AlphaChannelFrom
- SSDiffAlphamask DiffRgbTex + AlphaMasking
- SSDiffAnim.material DiffRgbTex + Anim
- SSDiffNormal DiffRgbTex + Normal
- SSDiffNormalLightmap DiffRgbTex + Normal + Light
- SSDiffNormalShadow DiffRgbTex + Normal + Shadow
- SSDiffNormalShadowLightmap DiffRgbTex + Normal + Shadow + Light
- SSDiffReflAlpha DiffRgbTex + Refl + AlphaSolid
- SSDiffShadow DiffRgbTex + Shadow
- SSDiffShadowLightmap DiffRgbTex + Shadow + Light
- SSDiffSpecflatNormalShadowLum DiffRgbTex + SpecSolid + Normal + Shadow + Lum
- SSDiffSpecflatShadow DiffRgbTex + SpecSolid + Shadow
- SSDiffSpecmap DiffRgbTex + SpecRgbTex
- SSDiffSpecmapNormal DiffRgbTex + SpecRgbTex + Normal
- SSDiffSpecmapNormalOpa DiffRgbTex + SpecRgbTex + Normal + Opa (Alpha: separate grayscale texture)
- SSDiffSpecmapNormalShadow DiffRgbTex + SpecRgbTex + Normal + Shadow
- SSDiffSpecmapNormalShadowLum DiffRgbTex + SpecRgbTex + Normal + Shadow + Lum
- SSDiffSpecmapNormalShadowLumOpa DiffRgbTex + SpecRgbTex + Normal + Shadow + Lum + Opa
- SSDiffSpecmapRefl DiffRgbTex + SpecRgbTex + Refl
- SSDiffSpecmapShadow DiffRgbTex + SpecRgbTex + Shadow
- SSDiffSpecmapShadowLum DiffRgbTex + SpecRgbTex + Shadow +Lum
- SSDiffSpecmapShadowLumOpa DiffRgbTex + SpecRgbTex + Shadow +Lum + Opa
- SSDiffSpecmapShadowOpa DiffRgbTex + SpecRgbTex + Shadow + Opa
- SSDiffSpecmapShadowRefl DiffRgbTex + SpecRgbTex + Shadow + Refl
- Create button (i.e. uploading) should be disabled if no applicable template and/or script name is empty
|