Sinespace (previously called Sine Space) is a virtual world platform using Unity3D as the creator/build environment and allowing (via an add-in Unity package) upload to become a space within the Sinespace multi-user virtual world. Spaces are created in Unity and then uploaded to the “Curator” (http://curator.sine.space) where they can be tested prior to being sent for review to become “live” on the main service. One free space of up to 128MB download size can be create by any user and paid plans allow for more simultaneous spaces and larger builds. This blog post brings together some links and resources used in building Sinespace regions in Unity3D.
- Sinespace Web Site
- Sinespace Downloads
- Sinespace Discord Channel
- Sinespace Forums
- Sinespace Wiki
- Sinespace Blog – e.g. for release imformation & new features
- Sinespace Tutorials – YouTube, including Art Masterclasses
- Sinespace Editor Pack for Unity3D
- Report an Issue
- Sinespace Developer Web Site
- Sinespace Road Map – Trello
- Delphi Talks [Blog Post]
- OpenSim OAR Converter
- Teleport between one space and another is enabled by using this script in a suitable object – TeleportWorld.
- Teleport between locations within one space are possibke using this script in a suitable object and linking to an arrival object – TeleportLocal.
- Clothing can be created and uploaded to the Sinespace Marketplace. E.g., this is a NASA Astronaut EVA suit available in male and female variants in the Sinespace store. Once “bought” (free in this case) it is available in the user’s inventory and can be equipped onto the avatar and saved as an outfit.
- A vendor for a single item can be added using these instructions from the Sinespace Wiki – InventoryVendor.
- Create an active seat using these instructions from the Sinespace Wiki – SeatImproved. Video instructions here.
Skybox and Day/Night Cycle
To change the Skybox used in a Unity3D scene use the Windows -> Lighting -> Settings panel, and set the Skybox there. A suggested Skybox for use in sinespace is available in “Assets/Sample Art/Adam_CloudSkybox/Sample Cloud Skybox”. For more information see https://wiki.sine.space/index.php?title=Custom_skybox_shader.
Some advice on adding Day/Night cycles is given in https://wiki.sine.space/index.php?title=Day/night_cycles.
Post Processing Visual Effects/FX
A range of visual effects can be used via a Unity ‘Post-Processing Profile’ capability. These can be adjusted to cater for higher and lower capability machines using the Sinespace viewer settings panel. For details, see https://wiki.sine.space/index.php?title=Post_Processing.
Media and Browser Screens
You can set up an inworld screen to show a video or web content. More details and instructions at https://wiki.sine.space/index.php?title=Browser_Surfaces. A more recently added component named “Embedded Video” may also be useful.
OpenSimulator OAR Converted Content in Unity to Sinespace – Reducing the Number of Textures Used
Adam Frisby, a Sinespace developer, provided an unsupported C# script utility to seek to remove duplicated textures which make an OARConv import to Unity larger than necessary… due to the fact that texture/material properties of an object or face are encoded into multiple repeated texture file names by OARConv.
Originally this was an add-on script, but as from August 2017 you should find the utility available as standard in the Unity Editor under Space -> Tools -> OAR Material Cleanup after the sinespace unitypackage has been added. Don’t re-add the utility script again or you will get a warning that the menu item is already there.
These are Adam Frisby’s original notes on the utility…
This comes 100% unsupported, but I wrote a tool to clean the materials that the OAR Converter tool produces. It de-duplicates textures, which I’m hearing produces good results on cutting the filesizes of those regions. It just MD5Sums the files, if they match, it merges them.
Drop that into a folder named ‘Editor’ in your project (any folder as long as the name is ‘Editor’). Then you should get a Space/Tools/OAR Material Cleanup menu item.
This is used AFTER the OAR converted contents have been loaded and the materials created. It just standardises the materials that use copies of the same texture so they all use one single texture, thus reducing the file size of a Sine.space build.
When you run it (again, 100% unsupported, take backups! although I hear it works) – will remove all the duplicates in your region.
A copy of the utility is stored at http://www.aiai.ed.ac.uk/~ai/unity/oarconv/FixTextureDuplicates
Unity Layers and Culling Mask for Light Sources
When combining several Unity projects into larger builds it is possible that a limit on the number of Unity “layers” that can be used to exclude objects from lighting culling calculations is exceeded (the limit may be 4). If a message saying you are including too many layers appears, check each light source (such as Directional Light, Sun source and items such as fire light) and ensure that the Culling Mask is set to “Everything” rather than a set of specific layers. [Advice from Adam Frisby of SineWave]
Audio can be added to a scene by adding an “Audio Source” component to any object. Ensure that an “Output” type is selected such as “Music” or “Ambient” or the sound may not be heard or be very quiet in sinespace. Tick the “Loop” and “Play on Entry” boxes. The sound clip will play uniformly throughout the scene if the (default) “2D” spatial setting is used. Slide that to “3D” to have the sound respect the 3D falloff and max distance settings.
BVH animations, such as used in Second Life and OpenSimulator may be converted to FBX format for use in Unity3D and sinespace. A guide, for example, is available at https://alastaira.wordpress.com/2013/07/24/using-free-mocap-data-for-game-character-animation-in-unity/.
The WebGL browser-based viewer culls objects more than about 100m from the avatar position. This can make large objects that give the basics of a region drop out if their ORIGIN is far away from some areas. To make objects appear in WebGL views they can be changed from the “Default” layer to the “VeryImportantInScene” layer. In WebGL unless specific settings are changed in the Unity Editor, the culling distances are: 75m by default, Important is 300m by default, Very Important is 900m by default.
Mesh Import Issues
On a suggestion from Michael Emory Cerquoni (Nebadon)… if model parts do not fit together well when viewed in Sinespace, it could be a result of how Unity is processing normals in the imported model. Select the fbx or collada, whatever it is in your project folder, and in the inspector panel look for the “Model” tab. There is a “Normals & Tangents” section. Try changing from “Import” to “Calculate” and alter the default 60 to 90. Tangents can be set to “Calculate Tangent Space”.
Make a Mirror of a 3D Mesh in Unity3D Editor
If mesh parts do not render correctly or have poorly flipped normal, you may be able to get a mirror part using the other side and flipping it… it’s possible to just set all the scale values to -1 and then rotate your gameobject in the desired axis by 180 degrees. Sometimes you may have to move the part back to the position of the original mesh part being replaced… so keep that part (perhaps ticked as hidden) until you are sure its correctly replaced.
Viewer Camera Controls
- Use: right-click and drag to get a MMO-style swing camera.
- If you use the right mouse button and hold it down, you can swivel you camera.
- Hold alt and press right-click to get a pivot camera (shift/alt/ctrl modify it).
- Or use F4 and hold right-click and then press WASDEC for a fly camera.
XMPP Chat Link
You can use an XMPP chat client (such as Gajim or Pidgin) for receiving and replying to inworld IMs and to connect to the three main chat channels – Global Chat, Developer Chat and New User – and you’ll be able to connect into regions you own to monitor and reply to chat there too.
More details at Inworld XMPP Chat Gateway.