Major Highlights
GUI
- Social pane
- Code editor pane
- Assets pane
- Room Objects pane
- Properties pane
- Easy/intuitive access to common function (Save and save screenshots, Settings, Bookmarks/Workspaces)
GENERAL
- “AssetRecording” Asset type (supports room-wide recordings)
- “rotation” and “rotation_order” attributes (Eulerian rotation support)
- JML Importer
- New Drag and Drop functionality (from browsers or explorer, portals, …)
- Improvements to Ghost userid/chat
- Private websurface manager (~ [tilde] to add, shift+~ to remove, ESC to hide)
- VR controls simplification
- FPS improvement for “equi” render mode
- New JS Vector functions (copy, scale, add)
- OSVR integration
- Initial Enflux integration
- “party_mode” room attribute
The changes in Release 59 represent a couple months of work (possibly the longest time between releases yet!) The most notable change in 59 is a UI rewrite. In this update, we broadly consider two major use cases: (1) a “user in VR”, potentially a novice, who expects basic functionality for navigation and interaction and (2) a “builder outside VR”, a creative person looking to create immersive web experiences using Janus who expects a user experience similar to traditional graphics software (e.g. Maya/3DSMax/Blender/Unity/Unreal). In this update, we take major steps for addressing these two fundamental use cases.
The documentation that follows outlines the functionality offered by this new user interface.
Webspace > New
Generates a new local workspace, with some default objects inside. The workspace will be located in the Documents/janusvr/workspaces/ directory on the hard drive. It will be automatically provided a subdirectory called workspaceXXX (where XXX is a unique 3-digit number identifying the workspace). Feel free to rename this directory later, as each time Janus is loaded workspace webspaces are auto-detected. We hope this provides a straightforward solution to the first question often asked – “what is the first step to create a new Janus webspace?”
Webspace > Open
Creates a portal to an HTML file stored locally. Useful for accessing any HTML file on your hard drive (i.e. those not located under Documents/janusvr/workspaces/).
Webspace > Save
Saves changes to a local workspace (it will overwrite the file’s contents, but save a time-stamped backup file will be saved under Documents/janusvr/workspaces/out-XXX.html where XXX is a string containing the date and time the file was saved, in case of any accidentally saved changes). If the current webspace is a remote URL, an HTML file with JML will be saved with the path Documents/janusvr/workspaces/out-XXX.html as well. Lastly, when using the code editor (more information later), this will save either the JML/HTML file, or the current script being edited, and reload the webspace with those changes.
Webspace > Save As
Similar behavior as Webspace>Save, however this allows you to specify the path of where to save the HTML file.
Webspace > Import (Local File)
The import feature (new to 59) makes it simple to merge JML code together – to create a union of two or more rooms (this feature will be further extended in future releases to make bringing in “prefabs”, i.e. functional objects that consist of both geometry and scripts, simple to do). Simply select the HTML file containing JML that you want to import into the current room, and press Open.
Webspace > Import (Remote URL)
The same functionality as Webspace>Import (Local File), however this lets you import JML code from any remote URL. Simply type or paste in the URL of the code and press OK.
Bookmarks > Add Bookmark
Add a bookmark that is the URL of the current room (note: this option will be disabled if the room is already bookmarked).
Bookmarks > Remove Bookmark
Remove the current room’s URL from the list of bookmarks (note: this option will be disabled if the room is not already bookmarked).
Bookmarks > Bookmarks and Workspaces List
Below the Add and Remove options in the bookmarks menu are a list of bookmarks and workspaces that have been saved. This list can be scrolled vertically if the list exceeds the vertical dimensions of the screen. A horizontal separator divides the list of bookmarks (above) from the list of workspaces (below). While bookmarks must be saved manually, workspaces are automatically detected and added to the list each time Janus is loaded (searching all subdirectories of Documents/janusvr/workspaces/ for HTML files).
Note that either list can be accessed as a Janus room by typing either “bookmarks” or “workspaces” into the URL bar (shortcut Ctrl+L), as shown in these screenshots (bookmarks on left, workspaces on right):
Panels > Social
This option toggles the visibility of the Social pane (also appears when pressing “T” key to use text chat. You can also press ctrl+t to close the social pane). This pane contains various widgets related to socializing and finding other users. There are 3 components: Global Users, Local Users and Local Chat.
Global Users shows all users of Janus online currently as well as their current URL, if they have the “Party Mode” setting enabled. To navigate to another user, click their userid and a portal will appear taking you directly to the URL they are at.
Local users shows a list of all other users currently in the room you are in.
Local chat shows all text chat messages that take place in the room you are in. Note that the local chat will also create hyperlinks for any URLs sent here. If you click on these hyperlinks, a portal will appear in front of you to take you to that URL:
Panels > Code Editor
This option toggles the visibility of the Code Editor. The Code Editor allows you to both view and interactively edit the code (both JML and any JS scripts) in the current room. The “JML” tab shows the room JML, and zero or more other tabs show the filenames of any other AssetScripts used in the room. Note that edits can be saved to either JML or JS scripts by using File>Save (or the Ctrl+S keyboard shortcut), saving while the code editor pane is open also triggers an update the room. A screenshot showing a JS script in the Code Editor:
The “word wrap” checkbox wraps lines of code that extend beyond the width of the pane onto subsequent lines.
The “Get Room JML” button will force an update of the room’s JML into the code editor. This is useful for updating the code in the editor to show changes that you (or any other user) have made to the room.
The “Set Room JML” button will force changes made in the editor to update the. Note that this button does not also save the changes to the HTML file – if you want to also save changes you need to use File > Save (shortcut Ctrl+S) to do that.
Panels > Assets
Toggles the visibility of the Assets pane. The Assets pane allows for the management of the current room’s Assets – addition, removal, and property assignment. Pressing the “Add Asset” button lets you add an Asset (located locally) to the room. Note that the filetype (e.g. AssetObject, AssetImage, AssetRecording, etc.) is inferred from the filename extension. A screenshot showing the dialog that appears:
Pressing the “Remove Asset” button lets you remove an asset from the room. First select the row containing the asset you want to remove in the lower table, then press the button.
The table below the two buttons shows all the Assets in the room, specifically their id, type and src attribute. These attributes can be modified directly by changing the values in these cells.
Also note that Assets can be added very simply by Dragging and Dropping (local files from e.g. Windows Explorer, or even URLs from other browsers), more on this later.
Panels > Room Objects
Toggles the visibility of the Room Objects pane. This pane allows for the management of all objects in the current room – addition, removal, grouping/parenting, and property assignment.
Pressing the “Add Object” button allows you to add a new object to the room. You will initially see the following:
The row representing the new object will be highlighted in the object table, the object will be selected and you will be in the “edit mode” state for the object – this lets you interactively tab through various common properties for the object (position, scale, and so on). Left clicking will finalize the addition.
Pressing the “Remove Object” button will remove the currently selected object from the object table.
The objects in the current room are organized into a hierarchy (i.e. a tree). To reorganize objects, a parent-child relationship can be established by dragging one object (the child) onto another (the parent) within the object table. The two screenshots below show the result of dragging and dropping an object (js_id “3”) onto its new parent (js_id “Target0”):
Note that the view of children objects can be hidden/shown by pressing the triangle icon that appears next to a given parent object’s js_id.
The object table shows each object’s js_id, type, and id – each of these can be interactively modified by entering a new value and pressing enter. Many other object properties can be viewed and edited via the Properties pane – which is intended to be used alongside the Room Objects pane - which we detail next.
Panels > Properties
Toggles visibility of the Properties pane. For any selected object (selected either through the Hierarchy pane or right clicking an object in the viewer while edit mode is enabled), the properties pane will display and allow interactive editing of many of its properties. The properties shown in this pane are contextual based on the object type, e.g. an Object will show an “Appearance” submenu for geometry-specific properties.
Numeric values (e.g. an object’s X position) have a feature where they can be conveniently changed by just clicking and dragging horizontally.
Child objects can also be added to a given object via the “Add Child” dropdown menu.
Users > Start Recording
Recordings are a new feature in release 59. Recordings capture all activity in the current room, saving it to a local file with path Documents/janusvr/recordings/ghost-XXX.rec where XXX is a string containing the date and time the recording was made. The recording captures the time of each packet (a number representing epoch – a measurement of seconds since January 1, 1970 GMT) and the JSON content for each packet of data (the exact same data that Janus presence server sends). Example content of a recording file:
Recordings (.rec files) can be easily dragged and dropped into Janus in 59 for immediate playback.
A new Asset type “AssetRecording” allows these recordings to also be embedded into rooms. Given a recording file named “test.rec”, the JML to add this recording to the room is as follows:
EXAMPLE:
Users > Stop Recording
Stops the recording and saves the file (extension .rec).
View > Save Thumbnail
A handy way to save a thumbnail image (resolution 256x256) of the current view, useful for example to texture a Link’s portal. A dialog will appear allowing you to specify the name of the saved jpeg file (note that pressing F7 without holding shift will skip the save dialog and instead automatically save the file to Documents/janusvr/screenshots/XXX.jpg where XXX is the MD5 hash of the current room URL). Here is an example of the generated thumbnail:
View > Save Screenshot
Saves a screenshot file of the current view (resolution matches that of the window). A dialog will appear allowing you to specify the name of the saved jpeg file (note that pressing F8 without holding shift will skip the save dialog and instead automatically save the file to Documents/janusvr/screenshots/out-XXX.jpg where XXX is a string containing the date and time the file was saved).
View > Save Equirectangular
Saves an equirectangular-formatted (captures the environment all around you, “360”) image file (resolution 8192x4096) to the path specified by the save file dialog, in TGA format. Here is an example equirectangular image captured in the pocketspace:
View > Fullscreen
Toggles whether the Janus window takes up the entirety of the desktop. Widgets for the most basic browser functionality (back, forward, reload, pocketspace/home toggle, and URL bar) remain visible.
Settings
Brings up the settings window. Settings are divided into two categories or “tabs” - User and Developer:
The “User” tab is divided into subcategories for Interface, Audio, VR, Network and Avatar. The “Developer” tab contains settings relevant to developers only, such as toggling edit mode (and edit mode icons), the JS debugger, and use of local cache for downloads.
Note that release 59 introduces a voice-activated microphone setting – the micrphone broadcasts your voice when it exceeds a threshold - useful for users who are either in VR or do not prefer the push-to-talk default setting.
The userid can be changed at any time from this menu. Simply enter a new userid and press enter. Janus will automatically reconnect to the presence server with this new userid (if the “Multiplayer” setting is enabled).
Exit
Exits JanusVR.