Second Life – glTF – Oil Rig
As part of testing Second Life glTF Mesh capabilities in the Second Life Gltf Mesh Import viewer from Linden Lab – Second Life Project Gltf Mesh Import 7.1.14.15726311294
I uploaded a glTF export of the RGU Oil Rig model by Colin Hetherington. The meshes were imported to Blender and then exported to glTF. Then the meshes were transformed via https://glb.babylonpress.com (flatten, join, weld and simplify, leaving textures unchanged) to reduce the number of mesh parts to less than the 256 limit for the mesh uploader. With a little rotating script for the waves round the rig legs it works very well. For more details of the RGU Oil Rig model and its immersive training application see
https://blog.inf.ed.ac.uk/atate/2017/06/07/virtual-oil-rig-enhancing-higher-education/.
Firestorm VR Mod 7.1.13
I N P R E P A R A T I O N
Firestorm VR Mod 7.1.13.78266 release has support for the WebRTC voice services which will be the default in future in Second Life. Vivox voice is still available on regions which use that (including in OpenSim).
Firestorm VR Mod is a version of the popular Firestorm Viewer for Second Life and OpenSimulator with modifications to provide VR capabilities for VR Head Mounted Displays (HMDs) via SteamVR. This is experimental. Firestorm VR Mod is now available from https://github.com/humbletim/firestorm-gha/releases
An alternative version of the VR Mod viewer is available thanks to @Sgeo which automatically calculates the VR HMD settings needed (normally done manually via F5) and may support more VR HMDs, such as Meta Quest 2 and 3. The Field of View (FOV) starts off zoomed in so you may find it useful to use the FOV change keys (ctrl+8) to zoom out a couple of times to approximate the FOV in the standard VR Mod version. Ctrl+0 zooms back in an ctrl+9 sets the default FOV.
The standard version of Firestorm VR Mod and the Sgeo version requires AVX2 instruction sets on Windows. “Legacy” versions of both are available for older CPU (usually pre-2014).
For Firestorm VR Mod community support use the Discord Discussion Channel:
P373R-WORKSHOP by p373r_kappler [Invite]
Firestorm + P373R VR Mod: This build includes P373R’s VR Mod 6.3.3 changes merged into the current release branch. The VR Mod approach takes a minimalistic approach to inserting VR capabilities into the viewer in order that the maintenance overhead is decreased and the potential longevity of the approach is increased. VR Controller support is not included.
The Firestorm VR Mod viewer (for Windows only) is available as an .exe “Setup” installer or as a .7z zipped file which can be unzipped to any directory and run from there without an install. If required, a free .7z unzip utility is available at https://www.7-zip.org/. Download the release for the latest version at https://github.com/humbletim/firestorm-gha/releases/
You need to install your usual VR Headset drivers and SteamVR. Firestorm VR Mod when run uses SteamVR which will launch any necessary VR headset specific underlying drivers.
Firestorm VR Mod is created using “GitHub Actions” (GHA) thanks to @humbletim and @thoys. Firestorm VR Mod version 7.* is still based on Peter Kappler’s VR Mod code changes (working since version 6.6.3 with only minor changes for the merge) but due to PBR changes, Linden Lab (and hence core Firestorm) reworked the render buffer structures which is one of the tight couplings into the core FS code base. The PBR viewer approach changed how the viewer finds the main screen information. The VR Mod initially relied on a direct path, but that path got moved after PBR. Where a developer would use “o.mScreen” before they would now use “o.mRT->screen”. The GitHub Actions have been changed to automatically map the original VR Mod code to new path, so the VR Mod code itself doesn’t need to be changed.
The build also uses the open source openal.dll audio library for sound and builds in the openvr_api.dll library for VR HMD connection.
Firestorm VR Mod has its own app and channel names “FirestormVR” and the install directory changed to “FirestormOS-VR-GHA” so the installation can exist side-by-side with stock Firestorm if desired. Settings and cache are shared with standard Firestorm. If you installed Firestorm VR Mod from an earlier version (up to 6.6.8) you can delete the now unused settings and cache directories: %APPDATA%\FirestormVR_x64 and %LOCALAPPDATA%\FirestormVROS_x64.
U S A G E
VR Mode instructions are available via prompts in the viewer or via information on https://gsgrid.de/firestorm-vr-mod/. In short…
- Press CTRL+TAB to load or unload the SteamVR driver. Do this each time you want to enter VR mode after starting up.
- Press TAB key to enable and disable VR mode.
- Press F5 to open the settings menu, you should see a text menu in the middle of the screen. The settings menu works only when VR mode is enabled.
- Press F6 to increase the selected value. Press F7 to decrease the selected value.
- Press F5 again to switch to the next menu entry.
- By pressing F5 on the last menu entry the menu will close and save the settings in the config file which is located in
“C:\Users\your_user_name\AppData\Roaming\Firestorm_x64\vrconfig.ini”
and which can be edited directly. Pressing TAB for VR mode reloads the config file. - Hold F3 to see some debug info (example here).
- Press F4 to disable and enable HMD’s direction changes. It may be better to disable the HMD’s direction interface when editing and flying with the camera. This may be subject to change in future versions.
- In the camera floater two buttons has been added to offset the HMD’s base rotation.
- Moving the mouse to the corners or the sides will shift the screen to this direction so menus can be accessed more easily.
For issues on some specific headsets you might wish to try the Firestorm VR Mod Discord Channel: P373R-WORKSHOP by p373r_kappler [Invite]. Peter Kappler also offers the following advice…
- Firestorm VR Mod works best while sitting and using mouse and keyboard.
- WindowsMixedReality users may need to press windows key + Y to unlock the mouse when the HMD is worn.
- If your VR hardware cannot maintain constant 90 FPS you could try enabling motion reprojection in your HMD. In WindowsMixedReality it can be done by uncommenting “motionReprojectionMode” : “auto”, in the config file located at “C:\Program Files (x86)\Steam\steamapps\common\MixedRealityVRDriver\resources\settings\default.vrsettings”. This will make the HMD interpolate between frames and create a smoother experience. Vive and Oculus should have similar functionalities which can be accessed from SteamVR settings. For Vive it is called Motion Smoothing.
S E T T I N G S
As usual, Ctrl+TAB initially sets up SteamVR (and HMD support as needed), TAB is used to toggle VR mode on or off, F5 lets you select and step through the various VR HMD or user specific settings for IPD, texture shift to register the left and right eye images, and focal distance to change depth perception, etc. F6/F7 are used to increment and decrement each setting selection.
Peter Kappler suggested the following process to establish suitable settings for your HMD:
- Set IPD to 0 (zero)
- Then adjust Texture Shift until image is sharp and focused
- Then adjust IPD which separates your cameras to left and right to get a good 3D effect
@Sgeo on Discord provided a tool to help in calculating the settings for Firestorm VR Mod.. at least to give you a starting position to adjust to your taste…
https://sgeo.github.io/firestorm-vr-calculator/
Source of the calculator is at https://github.com/Sgeo/firestorm-vr-calculator
Hovertips
If you see a lot of hover tips showing under the mouse it could be that the debug setting “ShowHoverTips” is set to TRUE (the default) which may show something constantly under the mouse even for inert unscripted objects. You can turn that off via Debug Settings or via Preferences > User Interface > 3D World > Show Hover Tips. Via that same preferences panel, you might alternatively prefer to lengthen the delay before hover tips are activated.
Chat Bubbles
In VR Mode it may be useful to show local nearby chat in “bubbles” over each avatar’s head. This can be done via Preferences > Chat.
T R O U B L E S H O O T I N G
Misaligned VR Cursor
Note from Gaffe on Discord: Firestorm VR Mod’s VR cursor will have a small-to-extreme offset on Windows in particular if you are using Windows UI Scaling with any settings OTHER than 100%. To fix the VR cursor offset, set the Windows UI Scaling for your primary display to 100%.
Missing Menus and Buttons in Centred VR View
If you notice that the top menu bar and bottom and side button areas do not show in your headset when you are in VR Mode and your view is centred (i.e. mouse is positioned centrally in the 2D view) it may be that the VR settings you chose for Texture Shift and Texture Zoom need to be adjusted, or set to zero.
All Black HMD Display or Black Edges or Strips in HMD Display
An all black display in the VR HMD was an issue in earlier versions and is mostly resolved now… but it can still occur with some headsets. In case you encounter issues with a black HMD display… Peter Kappler suggests the following:
- Create a program-specific profile for the viewer in your graphic card settings and enable FXAA.
- Second Life only supports FXAA. Other types of Anti-aliasing can be disabled.
Firestorm VR Mod shifts the display in VR mode to an edge if the mouse or pointer is placed towards an edge or corner of the viewer window. This is to allow easier access to menus, user interface buttons and HUDs. It can be confusing though if you enter VR mode and find that part of the view is black. It is usually because the mouse is placed towards a corner or edge. Just move the mouse back to the centre of the screen and the full VR view should appear.
SteamVR Reset/Quit Screen Shows in HMD
When you switch to VR mode (after activating VR with Ctrl+TAB and using TAB), you may see a “Next Up… Firestorm” message or a SteamVR popup screen to “Reset the View” and “Quit SteamVR”. This has been observed to occur on the first run of a newly installed viewer. It can usually be dismissed with your controller if that is active, but if not the screen may continue to show the popup in VR mode in the HMD. Try another round of ctrl+TAB and TAB or if that does not work try stopping and restarting the viewer to clear this. These glitches may be more to do with legacy OpenVR + the latest SteamVR updates rather than Firestorm or VR Mod code changes.
If you have issues with some of the Function keys (F5 or other Firestorm VR Mod keys) not working… look to see if the F keys involved are mapped to active “Gestures”. You can find a list of the gestures you currently have active and the keys associated with them using the “Gestures” toolbar button… or the Comm -> Gestures menu item (Ctrl+G shortcut).
Adjust Over-the-Shoulder Camera View to Suit Yourself
Sometimes in VR mode the camera will be too high or far back from the avatar. If so, press Esc a couple of times, then Shift+Esc a couple of times, or Ctrl + 9 resets the camera to its default position. Shift + scroll mouse button moves camera up and down. You can also set specific Debug Settings (Ctrl+Alt+Shift+S) for camera positions, e.g. “CameraOffsetRearView”. If that doesn’t help, see http://wiki.secondlife.com/wiki/Camera_Control
A D V I C E O N F R A M E R A T E
You do need to ensure you have a good frame rate to have a comfortable VR experience. The Firestorm VR Mod Viewer will not work well if the Second Life/OpenSim region you visit cannot normally be displayed in 2D with a decent frame rate. In VR mode you can assume you will get 50% or less of the frame rate that shows on the 2D normal screen. At low frame rates bad flickering or texture tearing will occur in VR mode. My suggestion is to look at the frame rate (in Firestorm it is displayed in the upper right hand corner of the viewer) and to adjust the graphics settings (especially draw distance, shadows and quality sliders) until you have around 100fps (and definitely more than 50fps) and then try VR.
You may need to disable “vsync” in Settings -> Graphics -> Hardware as if this is on (the default) the FPS is capped to the frame rate of your 2D monitor (often 60fps, meaning in VR you would get less than 30fps).
Firestorm includes an “Improve Graphics Speed” performance tool and facilities to autotune the FPS which may be helpful. See advice on FPS improvement and the new “Performance Floater” and “FPS Autotune” capabilities in Beq Janus’s Blog Post (21-Mar-2022).
To improve frame rate (FPS) you might opt to set shadows to “None”, Water reflections to “None: Opaque”, Mirrors “Off” and use a reasonably low draw distance appropriate to the scene. Also close viewer UI windows and tools and detach any HUDs you are not actively using. The rendering of Linden Water, the water surface and its effects, can significantly reduce frame rates. Setting water reflections to “None; opaque” which gives a big FPS boost whilst still leaving the water looking okay. In an extreme situation, and in an environment that makes sense such as a meeting room, disabling Linden Water entirely can boost frame rates. Do that via Advanced -> Rendering Types -> Water. If the Advanced menu is not shown use Settings -> Advanced -> Show Advanced Menu or World -> Show More -> Advanced menu.
Peter Kappler also suggests: Particles… a fireplace is going to eat 20 to 30 fps! So turn them off for VR.
Tips from David Rowe for using the CtrlAltStudio VR Viewer (which is no longer maintained) may also be relevant:
- To improve your frame rate, reduce your draw distance and/or tweak other display settings such as advanced lighting model, shadows, FOV, pixel density, etc.
- Make sure you don’t have Preferences > Graphics > Rendering > Limit Framerate enabled.
- To display avatar chat above avatars use Preferences > Chat > Visuals > Show chat in bubbles above avatars.
- With floating text you may want to adjust the distance the floating text fades at so that distant text is not so annoying in VR mode: Preferences > User Interface > 3D World > Floating text fade distance.
C O N T R O L L E R S
Currently, specialised VR Controllers are not supported, but a range of game controllers and 3D navigation devices do work where supported by the normal viewer code.
Xbox One Controller
An Xbox One controller as used with the Oculus Rift (or an Xbox 360 controller) can be enabled, as usual, in Firestorm via Preferences -> Move & View -> Movement -> Joystick Configuration -> Enable Joystick.
You will probably find the controls are under or over sensitive, or some buttons and triggers don’t do what you expect. See this blog post and the image here (click for a larger version) for some suggestions as to how to amend the settings…
https://hugsalot.wordpress.com/2012/12/03/joystick-settings-for-firestorm-with-xbox-360-controller/
You might want to enter “-1” rather than axis “5” as an indication that axis is not mapped. With the setup suggested the “A” button toggles between the normal avatar view and “FlyCam” mode allowing you to move the camera separately to the avatar.
3D SpaceNavigator or SpaceMouse
As with all versions of Firestorm, the viewer supports other forms of “joystick”. One is the 3Dconnexion SpaceNavigator (aka SpaceMouse) which is a “3D mouse” supporting both avatar motion and by clicking the left hand button the separate “FlyCam” camera control.
My recommendation is to install the SpaceNavigator just by plugging it into Windows and receiving default Windows drivers for the device. I do not install any special SpaceNavigator drivers as suggested on the Second Life Wiki, some of which are incompatible with Second Life viewers.
The GitHub Actions (GHA) source by @HumbleTim used to combine Firestorm source and Peter Kappler’s P373R VR Mod addons, make necessary adaptations and build it using Microsoft Visual Studio is available via https://github.com/humbletim/firestorm-gha.
Firestorm source is available at https://github.com/FirestormViewer/phoenix-firestorm. Look under “Commits” and select the branch for the specific Firestorm version required.
With Firestorm VR Mod Peter Kappler uses a simple coding approach which injects VR capabilities into the Firestorm Viewer to make the mod easier to maintain in future and for others to repeat or adapt. The source is available from his web page at https://gsgrid.de/firestorm-vr-mod/ [Local Copy].
Impressively, the source is written in a way that it requires only some editing in the llviewerdisplay.cpp and adding 2 files to the project. All changes are marked with #####P373R##### comments. Peter also included the openvr header and lib files you will need in the rar. For information about the rest of the files you will need, read how to compile Firestorm at https://wiki.firestormviewer.org/fs_compiling_firestorm.
Latest version of openvr_api.dll can be obtained (Win64 version for this test version) from https://github.com/ValveSoftware/openvr/tree/master/bin/.
VRLand on OSGrid is a metrics area for performance testing and to establish virtual field of view in your VR headset.
hop://hg.osgrid.org:80/RuthAndRoth/16/16/1000More detail at: https://blog.inf.ed.ac.uk/atate/2016/07/20/vrland-a-community-and-test-region-for-virtual-reality-in-virtual-worlds/
You can also pick up a VR Headset attachment for your avatar in OpenSim on the OSGrid on both the RuthAndRoth and (if available) the VRLand regions. Or in Second Life pick up the VR HMD on the Second Life Marketplace. The 3D models of the Oculus Rift were provided for free use by William Burke (MannyLectro) and imported to OpenSim by Michael Cerquoni (Nebadon Izumi) and Second Life by Ai Austin.
F5 Settings for Specific VR HMDs
- Oculus Rift DK2
- Meta Quest Link app version 74.0.0.675.347. SteamVR Version 2.8.8.
- IPD = 65.0 (default)
- Focus Distance = 10.0
- Texture Shift = 0.0
- Texture Zoom = 0.0
- FOV = 100.0
- Oculus Rift CV1
- Meta Quest Link app version 74.0.0.675.347. SteamVR Version 2.8.8
- IPD = 65.0 (default)
- Focus Distance = 10.0
- Texture Shift = 50.00
- Texture Zoom = 0.0 (others report 86-200 works)
- FOV = 100.0
- Please provide other VR HMD settings
If you see errors like “missing vcruntime.dll”, “missing msvcp.dll” or the application is not starting at all, then please download and install Visual C++ Redistributable for Visual Studio (link for 64-bit operating systems).
Firestorm VR Mod Development Versions
During development and prior to a release, test versions are occasionally available via the GitHub Actions (GHA) process.
https://github.com/humbletim/firestorm-gha/actions
Take a base runtime build which is complete except for the actual .exe executable viewer file. Then add in the specific executable of interest (P373R or Sgeo-minimal). Both can be placed in the runtime folder if you wish. Run the variant you wish.
Ready Player Me Avatars in Second Life (Onigiri and glTF)
This blog post describes a process to take Ready Player Me (https://readyplayer.me) avatars via Blender and the Onigiri add-on to use in Second Life via glTF import. Onigiri is a fork of the GPLv3 licenced Bento Buddy around version 3.0.5.0 (2-Feb-2022) with some assets replaced. Onigiri is a type of Japanese rice ball (see Wikipedia). glTF import of rigged avatar meshes is supported in Second Life via a project Viewer since 2-Jun-2025 and is under active development.
Prepare the Resources
- Obtain and install Blender (https://blender.org).
- Obtain Onigiri (https://github.com/nessaki/Onigiri). Only the Blender add-on install ZIP file is required, the rest is source code only used to build the add-on. Get it via https://github.com/nessaki/Onigiri/blob/main/Onigiri.zip. Install it as a Blender add-on via Edit -> Preferences -> Add-ons.
- Ensure you have a Ready Player Me avatar to download via https://readyplayer.me).
Current Glitches (as at 13-Jun-2025 in Second Life Project Gltf Mesh Import 7.1.14.15611112801)
Hands of avatars appear to be wonky whether using default export for glTF (.glb) or Collada (.dae). Output of the same avatar using Onigiri’s “Export Mesh for SL/OpenSim” with Project Full Rig (and other three options) all ticked as usual does not show wonky hands.
Second Life – Snow Zones
A nice snow zone themed area in Second Life is in the Appalachia and Shasta regions…
http://maps.secondlife.com/secondlife/Appalachia/78/172/94
Second Life – glTF Mesh – June 2025
After many months of development and testing, Linden Lab released the first public facing “Project Viewer” to support glTF mesh upload to Second Life… Second Life Project glTF Mesh Import – 7.1.14.15361077240 (release notes).
I have been testing and providing issues and feedback for the last year. This blog posts summarises some of the testing, provides links to blog posts with more details, and gives an index into GitHub issues and other things.
Initially around May and June 2024, a mechanism was offered to locally load glTF meshes just in the user’s own viewer. This was later extended with a simple scheme to store the glTF mesh in a cloud server so it could be save and rezzed in world so other with a suitable development viewer could also see it. This mechanism was temporary and is no longer the mechanism to be used to use glTF mesh models. More information on this is in my blog post… https://blog.inf.ed.ac.uk/atate/2024/06/01/second-life-gltf-import-progress/
The new mechanism uses the current Collada mesh uploader extended to handle glTF models (rigged and unrigged). The models internally are stored in the same format as the Collada models for now, though extensions for glTF later are a possibility. This means that models uploaded share the same limitation as the internal Second Life Mesh Model already used for Collada. More information on this is in my blog post.. https://blog.inf.ed.ac.uk/atate/2025/04/21/second-life-gltf-mesh-uploader-tests/
glTF Model Testing as at June 2025
- 2001 Space Station and Orion Shuttle
https://blog.inf.ed.ac.uk/atate/2025/05/31/second-life-gltf-2001/ - Kässbohrer Pisten Bully 300
https://blog.inf.ed.ac.uk/atate/2025/06/01/second-life-gltf-pisten-bully-300/ - Silent Running Drones
https://blog.inf.ed.ac.uk/atate/2025/06/01/second-life-gltf-silent-running-drones/ - 1966 Batmobile
https://blog.inf.ed.ac.uk/atate/2025/06/02/second-life-gltf-batmobile/ - Supercar
https://blog.inf.ed.ac.uk/atate/2025/06/04/second-life-gltf-supercar/ - Sintel Avatar
https://blog.inf.ed.ac.uk/atate/2025/06/03/second-life-gltf-sintel-avatar/
Issues – Bugs
- GLTF Mesh Import: Invalid request bodyxxx – https://github.com/secondlife/viewer/issues/4162
- GLB Mesh Import: Cube Models for Visible Mesh and Issue when used for Physics – https://github.com/secondlife/viewer/issues/4157
- GLTF Mesh Import: Possible spurious or misleading MAV_BLOCK_MISSING and Internal Server Errors – https://github.com/secondlife/viewer/issues/4136
- GLTF Mesh Import: Meshes Created by GLTF Transform tools do not show all parts – https://github.com/secondlife/viewer/issues/4170
Reported by Others – with Input from Me
-
GLTF Mesh Import Error: Material of model is not a subset of reference model – AtlasLinden – https://github.com/secondlife/viewer/issues/4105
Issues Suggestions
- glTF Mesh Import: Improve usefulness and correlation of information put in Mesh Uploader Log Tab and SecondLife.log – https://github.com/secondlife/viewer/issues/4114
- GLTF Mesh Import: Model Parts Wrongly Positioned, Scaled and Rotated – https://github.com/secondlife/viewer/issues/4109
- Mesh Uploader Preview: Pan and Rotate with RMB – https://github.com/secondlife/viewer/issues/4161
- GLTF Mesh Import – Physics Choices and Approach – https://github.com/secondlife/viewer/issues/4179
Second Life – glTF – Supercar
The “Supercar” mesh model is an interesting example of a reasonably large complex mesh that cannot be uploaded in a single part.
The 3D models of Gerry Anderson’s Supercar and Black Rock Laboratory were originated around 1998 in Cinema3D by Mick Imrie with support from Austin Tate and have been converted to many other formats, and ported eventually to Blender. I have continued to tidy up those models and improve their fidelity with the puppet-scale Supercar using the Mick Imrie’s continuing research around 2021, from the TV series, with additional input from annuals and comics.
- https://www.aiai.ed.ac.uk/~bat/GA/supercar-3d.html
- https://blog.inf.ed.ac.uk/atate/2023/11/02/supercar-updated-model/
- https://blog.inf.ed.ac.uk/atate/2025/05/04/supercar-in-blender-2025/
glTF Transformation and Simplification
Models when exported from Blender may have many mesh parts (called instances in the Second Life uploader), have some parts with many vertices or or simply be too large a file in total. Models and their parts cannot exceed certain limits:
- The is a limit of 65,363 vertices (i.e. just under the 65,534 “16-bit limit”).
- Any mesh part face cannot have more than 8 materials.
- There cannot be more than 4,000 mesh parts (instances) in a model.
- Models must be less than about 56MB in total.
- There must be less than 256 mesh parts (instances) in a model or the model will upload without linking into one inventory item which can make it difficult to edit, move or delete when rezzed in world.
Handling Large Models and glTF Tools
You can slit up the model into multiple parts in Blender, anchoring each part in a suitably renamed “Empty (arrow)” object placed at <0,0,0>. These can then be individually hierarchically selected to export those selected parts to glTF/.glb. I use Gaia Clary’s Avatar Exporter from https://www.avalab.org/avatar_exporter/ for consistency of the exports as it sets the default glTF exporter settings appropriately for Second Life.
You can then use a glTF mesh optimiser with appropriate settings to simplify the mesh, join parts with common materials, etc. Two appropriate tools are:
- http://glb.babylonpress.com – Use “Keep Original Textures” setting, other settings could be defaults.
- https://gltf.report – In the script add // to comment out the textureCompress line to keep original textures, other settings could be defaults.
Simplifying the model this way can be very useful, lower upload fees where applicable, and make then faster to rez in world. But check the result against your original (using say the Khronos glTF Sample Viewer Validator and its Advanced Controls functions. You can also load the transformed model glTF/.glb back into Blender to look at the various joined/welded parts to see if any individual part now breaches the vertices limit.
Also note that although both tools I listed are based on the same code library, they have chosen different defaults for their settings, so the results of the mesh transformations may be quite differentif you stick with those defaults. For example on the Supercar light brass trim/piping the original .glb was 4.5MB with 136,992 vertices but could be mesh uploaded as it was spread over 16 mesh parts. The glb.babylonpress.com “optimised model” (with default settings except for keeping original textures) was actually larger at 4.8MB also with 136,992 vertices but only 1 part, which could not be uploaded. But the gltf.report version (again with default settings except for keeping original textures) was 1.7MB and 65,050 vertices and just 1 mesh part (i.e. it had simplified the mesh more, even though it was very close to the vertices limit). So you need to look at what the glTF tools are doing and decide which works best for you.
Handling Materials and Textures
When uploading a model as separate glTF parts to avoid mesh uploader limits, or indeed even while testing meshes where multiple versions may be uploaded, it may be wise to upload the materials and texture involved just once and only later change any that actually alter. This will also save on upload fees where applicable.
Make a .glb of the entire model and give it a short name, e.g. “Supercar.glb”, as the file name will be used as a root of material and texture names in inventory.
Use the mesh uploader on the model, but ONLY use the materials bulk uploader to import those. Cancel the mesh upload itself. The mesh may not even be able to upload and be over the limits, but that dues not matter. That way you can get all the materials and textures and place them in a convenient location, perhaps using “Create folder from selected” on the selection of “Recent” inventory items to make that easier.
The numerical settings for metallic/roughness should be carried over from you models into the uploaded materials. But (at least for now, 4-Jun-2025) It seems for metallic/roughness properties to apply you may need to change the “unset” texture for that feature to a blank texture for this to work correctly.
Uploading the Mesh Models
Upload each model now without materials or textures. Place them all in a suitable folder for convenience.
Remember to choose a physics model or you may get a confusing “MAV Block Missing” message when Calculating weights and fees.
As an example the costs for uploading parts of the Supercar model were:
- Materials and Textures: L$150
- Core: L$204 (glb.babylonpress.com version) – 39 parts
- Jets: L$40 (glb.babylonpress.com version)- 2 parts
- Trim (gltf.report version) 1 part: L$45
- W ings and Canopy Top (ready for animation) – 6 parts: L$22
In-world Processing
Rez each part trying to align them onto a specific <X,Y,Z> as some parts MAY align on the same origin. Not always though. Once you have correct alignment you can link the parts so long as the total linked model stays less than 256 parts.
The white areas on each mesh part are where a textured material needs to be applied. Simple coloured materials already have “Blinn-Phong” base colour/diffuse colours added but can be overridden with more the detailed PBR materials uploaded earlier. Now you are ready to apply the materials. Sensible clustering of the same material objects in the simplified meshes means once a material is applied to one face it will apply to all the ones that were joined together in the simplification process.
Texturing, final finishing, wing and canopy top animation, scripted seating for pilot or NPC, etc. are then added.
Add Mike Mercury Pilot Model
A Mike Mercury model created using an AI tool to produce a 3D model from a 2D image, rigged in https://www.mixamo and posed in Blender in a pilot seated pose is then added in.
https://blog.inf.ed.ac.uk/atate/2025/02/20/meshy-2d-image-to-3d-model/
Flying Supercar
Vehicle scrip(s) can be added to let you “fly” Supercar, go underwater, animate the wings and canopy, etc.
Second Life – glTF – Sintel Avatar
As part of testing Second Life glTF Mesh capabilities in the first glTF “Test Project Viewer” from Linden Lab – Second Life Test 7.1.14.15364143480.
The Open Source Blender Project “Sintel” character has been used in a number of open source projects and a version is available to use as an avatar or character in environments such as Second Life,. OpenSim and Unity.
- More details at http://sintel.org
- Sintel Movie Download
- Blender Sintel Information
- Blender Sintel Character
- Sintel Models at Blendswap
- See also additional resources at https://blog.inf.ed.ac.uk/atate/sintel-resources/
I tidied up a previously working Blender project (and Collada export) that worked as a simplified mesh avatar in Second Life and OpenSim. This Sintel avatar core rigged version was created from a Collada/DAE mesh provided by SLB Wirefly to Ai Austin on 30-May-2015 using a base Blendswap Sintel Model by gregzaal with textures from http://www.sintel.org/news/sintel-lite/. That tested okay as Collada and glTF rigged mesh import into Second Life although the rigged mesh eyes were out of position probably due to a rigging issue.
I then added back in mesh details from a more complete Sintel Model from Animium for arm and leg bands, armour plates, belt, bags and knife, backpack and staff. Some of which I tried to link to relevant bones. This allowed posing in Blender but are not properly rigged yet (to be worked on).
A backpack was also added from the “Blend Swap Sintel Backpack” by Pablo Lizardo and Jarrhead (https://www.blendswap.com/blend/2138 – [3462_Sintel_backpack_textured.zip) based on “Sintel backpack textured” by Jarrhead on May 23, 2011. Downloaded from http://www.blendswap.com/blends/view/3462.
Second Life – glTF – Batmobile
As part of testing Second Life glTF Mesh capabilities in the first glTF “Test Project Viewer” from Linden Lab – Second Life Test 7.1.14.15364143480
I uploaded a glTF export of the 1966 Batmobile using the freely available 3D Warehouse Sketchfab Models by Sam146 (https://sketchfab.com/sam146)
https://sketchfab.com/3d-models/1966-batmobile-744a9b83b392454897d296c2919f1f91. Blender import of Collada original model and textures, conversion to power of 2 textures, flipping many normals to regularise the appearance of the model and additions to more closely resemble the 1966 TV series Batmobile.
The meshes were exported from Blender to glTF creating a mesh with 269 mesh parts. Then the meshes were transformed via https://glb.babylonpress.com (flatten, join, weld and simplify, leaving textures unchanged) to reduce the number of mesh parts to less than the 256 limit for the mesh uploader. See
https://blog.inf.ed.ac.uk/atate/2024/05/06/batmobile-3d-model/
Second Life – glTF – Silent Running Drones
As part of testing Second Life glTF Mesh capabilities in the first glTF “Test Project Viewer” from Linden Lab – Second Life Test 7.1.14.15364143480
I uploaded glTF exports of the Silent Running drones using the freely available Sketchfab 3DWarehouse Models by Martin T. Drone 1 (Dewey), Drone 2 (Huey), Drone 3 (Louie). See https://blog.inf.ed.ac.uk/atate/2022/02/12/silent-running/.
The meshes were imported to Blender and then exported to glTF before uploaded to Second Life. A suitable Animation Overrider with a waddling Drone Walk and a suitable Stand pose was added into the avatar version.
Drone #1 – Dewey – Avatar – Rigged glTF Mesh
A rigged avatar simplified mesh variant of Drone #1 created from those models by Fred Beckhusen was used to test basic avatar rigging via glTF meshes using an earlier version of the glTF mesh uploader where some aspects of rigged mesh upload worked – Second Life Project Gltf-mesh-import 7.1.14.15205102881. At the time of posting the rigged glTF mesh upload was not working correctly and is under development.
Second Life – glTF – Pisten Bully 300
As part of testing Second Life glTF Mesh capabilities in the first glTF “Test Project Viewer” from Linden Lab – Second Life Test 7.1.14.15364143480
I uploaded a glTF export of the Pisten Bully using the freely available 3D Warehouse Sketchup Models Pisten Bully 300 via 3dwarehouse.sketchup.com by Digital Impressions along with added tracks and groomed piste grooves. See
https://blog.inf.ed.ac.uk/atate/2018/07/24/pisten-bully-3d-models/
The meshes were imported to Blender and then exported to glTF. Then the meshes were transformed via https://glb.babylonpress.com (flatten, join, weld and simplify, leaving textures unchanged) to reduce the number of mesh parts to less than the 256 limit for the mesh uploader. A little bit of glTF PBR materials and a seat inside for the driver complete the experiment.
Second Life – glTF – 2001
As part of testing Second Life glTF Mesh capabilities in the first glTF “Test Project Viewer” from Linden Lab.
I uploaded a glTF export of the 2001 Station and Orion Shuttle using the freely available 3D Warehouse Sketchup Models of the 2001 Space Station by Filip and the Orion III PanAm Shuttle made by Daniel M. With a little rotating script it works very well. See
https://blog.inf.ed.ac.uk/atate/2017/02/15/sine-space-2001-a-space-odyssey/
Visit on the Second Life Beta Grid at
secondlife://Aditi/secondlife/Rumpus%20Room%202050/145/213/141
Try this music and turn up the volume…
An “Outer Space” environmental setting is used to give a dark bright stars environment with intense lighting, setting the Earth disk and Moon near to one another in the sky from the spacestation, and a non-reflective very dark “sea”.
glTF Interactivity – Resources
The glTF interactivity extensions simplify authoring workflows, encourage cross-platform consistency, and enable content creators to build self-contained interactive assets that can be deployed in applications where hard-coding interactivity is infeasible. The glTF Interactivity Task Sub Group (TSG) plans to submit the foundational KHR_interactivity extension alongside a suite of complementary extensions, including:
- KHR_node_hoverability – to tap on an object to animate it.
- KHR_node_selectability – to tap on an object to show or hide additional content.
- KHR_node_visibility – to hover over an object to show or hide content or play an animation.
AvaLab Avatar Exporter
https://www.avalab.org/avatar_exporter/
The AvaLab Avatar Exporter is a free add-on built by Gaia Clary to support Linden Lab in testing glTF rigged mesh and avatar uploads. It exports your rigged mesh or avatar in both Collada (.dae) and glTF (.glb) files. The exporter is based entirely on Blender’s native exporters and is designed for fast and consistent exports, with default settings tailored for Second Life compatibility.
Install Instructions
- Download Avatar Exporter
- Keep the ZIP file as is – don’t unpack it.
- In Blender-4, open: Edit → Preferences → Add-ons → Install from Disk… (use down arrow at top right)
- Select the ZIP file you just downloaded and click Install Add-on.
- Enable the checkbox next to Avatar Exporter.
You’ll find the exporter in Blender under: File → Export → Avatar Exporter
Watch the Video for a brief overview:
Sharing Blender files via pasteall.org
For debugging you can share Blender files via pasteall.org which is a free public service for exchanging .blend files. You can secure your .blend file by entering a password during the upload. Here is the workflow:
- open http://pasteall.org/blend
- Select your blend file on your local disk
- (optionally) enter a password of your choice
- Right after the upload completed you will get redirected to the download link for your blend file (look in the browser command line). Please copy this Link (use CTRL C)
- Add the download link and the password (if you have specified one) to your message to whoever you wish to share the .blend file with.
Ringworld Environment in Second Life
The “Ringworld” of science fiction writer Larry Niven is an artificial habitat that completely encircles its star – with a surface area about three million times that of the Earth. Having been built by the “Ringworld Engineers”, it has been abandoned for millions of years when visitors arrive.
Second Life allows custom environmental settings. One provided by Nacon is in the Second Life Inventory Library as “Nacon’s Ringworld-1”. Below are views looking East (daytime) and West (nighttime) along the ring plane…
Satellite Belt K
Following on from my use of AI tools and other resources in the development of “The Further Adventures of Kemlo & Krillie in Space”, based on the 1960s Kemlo children’s books by E.C. Eliott, this blog post looks at a virtual worlds build in OpenSimulator of a “Satellite Belt K” region.
For more details of the background and the AI tools used to develop resources, see https://blog.inf.ed.ac.uk/atate/2024/02/19/kemlo-and-krillie/
The OpenSimulator OSGrid region “Belt K” can be reached via this “hop”…
hop://hg.osgrid.org:80/Belt%20K/130/128/24Satellite Belt L is seen in the distance. Kemlo and Krillie avatars have a range of outfits, some based on Star Trek style clothing… note the “K” insignia…
An “Outer Space” environmental settings is used to give a dark bright stars environment with intense lighting and setting the Earth disk and Moon near to one another in the sky from the spacestation.
Supercar in Blender 2025
The 3D models of Gerry Anderson’s Supercar and Black Rock Laboratory originated around 1998 in Cinema3D by Mick Imrie with support from Austin Tate have been and converted to many other formats, and ported eventually to Blender. I have continued to tidy up those models and improve their fidelity with the puppet-scale Supercar using the Mick Imrie’s continuing research around 2021, from the TV series, with additional input from annuals and comics. Details of the new models was provided at https://blog.inf.ed.ac.uk/atate/2023/11/02/supercar-updated-model/.
Recent improvements and checks that glTF export was working well have led to new versions of the models which are documented in this blog post.
Images below are taken from the Khronos glTF sample Viewer on glTF Outputs from the models in Blender 4.4.3.
Supercar Interior and Dash
Supercar with Accessories – Magnetic Grab and Rocket Gun
Mike Mercury Models
I am now using two different models of Mike Mercury. One derived from images of the Harrop figurine using Autodesk’s 123D tool and the other generated by the Meshy Image to 3D model AI tool.
- https://blog.inf.ed.ac.uk/atate/2014/08/12/mike-mercury-at-black-rock-lab-via-123d/
- https://blog.inf.ed.ac.uk/atate/2025/02/20/meshy-2d-image-to-3d-model/
Black Rock Laboratory Models
Exterior and Interior models of Black Rock Laboratory in Blender are unchanged and work well in glTF format.
Second Life – glTF Mesh Uploader Tests
This blog post is to provide resources used in testing glTF Mesh capabilities in Second Life. This is to be done via an extension of the Collada (.dae) mesh uploader. The glTF after export will be converted to the common Second Life Mesh (SLM) format used internally already for Collada meshes. It is possible that the internal format will be extended to cope with glTF features where needed.
Basic GLTF Mesh Import – https://github.com/secondlife/viewer/issues/3831
Previous glTF Mesh Preview Mechanism
- April 2024 – early glTF mesh preview in Second Life, April 2024.
See https://blog.inf.ed.ac.uk/atate/2024/04/11/gltf-mesh-tests-in-second-life/ - June 2024 – some issues arose with applying transforms and handling vertex normals.
See https://github.com/secondlife/viewer/issues/1873 - April 2025 – the early mesh preview method will be removed at some stage.
Requests for things to support in the glTF Mesh Uploader
- Visual compliance with Khtonos glTF Sample Viewer – So long as the mesh looks as it does in the Khronos glTF Sample Viewer we will be good. Check that transforms are properly applied to avoid misplaced, wrongly scaled, exploded and rotated model parts. A good test model for this is the NASA Ingenuity Mars helicopter mesh.
- Mesh Size Limitations – Ensure that the size of model limit is set high to allow for essentially region scale builds, e.g. oil rig test model (56MB glb, 9342 meshes, 955880 triangles, 4258 opaque materials, 92 transparent materials).
- Reduce or remove 0.01m limit on dimensions of mesh parts – The SL Mesh (as well as prims) does have a minimum element mesh size of 0.01m which I have found to be problematic. The smaller dimension parts expand to that minimum size on Collada import. It is a problem for items such as jewellery, vehicle instrument panel parts, thin aerials, etc. It also limits the ability to scale down an imported mesh which happens to have even a single small part. Prims can be made tiny well below the 0.01m limit via slice, path cut, taper and other object editing capabilities. But that option is not open to mesh. So I hope the lower limit on mesh part dimension can be removed entirely or lowered to say 0.00001m as the build tools already have that range. This may also be an issue for rotations and positions to keep an imported mesh visually accurate.
Test Meshes
NASA Ingenuity Mars Helicopter
This is a small model prepared by NASA and released in Blender and .glb formats.
https://nasa3d.arc.nasa.gov/detail/ingenuity_thumb
https://github.com/nasa/NASA-3D-Resources/tree/master/3D%20Models/Ingenuity%20Mars%20Helicopter
Supercar vehicle, Black Rock Lab (BRL) and Mike Mercury figure glTF meshes exported from the Blender models are good tests of a range of complexity in the models.
https://blog.inf.ed.ac.uk/atate/2023/11/02/supercar-updated-model/
The RGU Oil Rig is a region scale build used in OpenSim for some years for training of offshore oil rig workers.
https://blog.inf.ed.ac.uk/atate/2019/08/15/oil-rig-training-experience-in-firestorm-vr/
glTF Mesh Data
NASA Ingenuity Mars Helicopter
-
.glb File Size: 2.7MB
Meshes (Nodes): 11
Vertices: 8502
Triangles: 9124
Opaque Materials: 9
Transparent materials: 1
Supercar with Extended Wings
-
.glb File Size:
Meshes (Nodes): 1501
Vertices: 510174
Triangles: 273230
Opaque Materials: 54
Transparent materials: 4
Supercar with Both Wings, All Accessories and Blast Wall
-
.glb File Size:
Meshes (Nodes): 1549
Vertices: 545014
Triangles: 293157
Opaque Materials: 2
Transparent materials: 0
Mike Mercury Figure
-
.glb File Size:
Meshes (Nodes): 4
Vertices: 42606
Triangles: 24415
Opaque Materials: 63
Transparent materials: 4
Black Rock Lab Exterior
-
.glb File Size:
Meshes (Nodes): 891
Vertices: 68412
Triangles: 39037
Opaque Materials: 31
Transparent materials: 1
Black Rock Lab Interior
-
.glb File Size:
Meshes (Nodes): 1415
Vertices: 455142
Triangles: 181935
Opaque Materials: 88
Transparent materials: 0
-
.glb File Size: 56MB
Meshes (Nodes): 9342
Vertices: 1303822
Triangles: 955880
Opaque Materials: 4258
Transparent materials: 92
Ray Gun
My favourite SciFi ray gun is Dr. Grordbort’s Righteous Bison Ray Gun, at one time sold as “replicas” by Weta Workshop. See here in use by Art3mis from the film Ready Player One.
Trying out the MeshyAI 2D Image to 3D Model Tool (see this blog post) gave me an opportunity to create a personal use 3D model of Dr. Grordbort’s Righteous Bison Ray Gun that could be imported to Second Life and OpenSim to use as a weapon.
A reasonably high resolution isolated image of the ray gun was used and the model produced was saved in .blend format, and from there exported to Collada (.dae) to import to Second Life. [Tip: if the mesh calculate fees and check indicates there are “degenerate triangles” you should either use Analyse/Simplify or just not choose a physics model at all.] A couple of pressure gauges, each modelled as a simple textured cylinder, were linked for added realism. A little scripting, pistol shoot pose, some sound effects and a physical “bullet” projectile mechanism completed the weapon.
Creation Process
Ray Gun in Second Life
Source Images (thanks to Weta Workshop)
More Information on Dr. Grordbort’s Righteous Bison Ray Gun
Meshy 2D Image to 3D Model
Trying Meshy 2D Image to 3D Model AI Generator at – https://www.meshy.ai/features/image-to-3d – Impressive.
Original 2D Image is from Big Chief‘s now aborted project to produce miniature figure models of Gerry Anderson characters… this one being Mike Mercury from Supercar.
This produces a textures 3D model which you can then download in various formats including Blender and glTF.
This can be opened in Blender and concerted to Collada (.dae) and then be imported into Second Life.
Mistral Le Chat
Following my earlier experiments with queries to ChatGPT, DALL·E and Leaonardo.ai image generation, and seeing a post by President Macron of France at the 2015 AI Safety summit in Paris, I thought I would try the new Mistral Le Chat tools – https://chat.mistral.ai/
-
https://blog.inf.ed.ac.uk/atate/2023/03/29/chatgpt/
https://blog.inf.ed.ac.uk/atate/2023/06/04/chatgpt-apologizes-for-making-things-up-a-lot/
https://blog.inf.ed.ac.uk/atate/2024/02/16/leonardo-ai-image-generation/
For a detailed guide on client libraries and API specs, check out the documentation: https://docs.mistral.ai/.
Chat Testing
TBA
Image Generation
I tried an earlier prompt I had given to ChatGPT, DALL·E and Leaonardo.ai…
Photorealistic, view from inside a modern house, overlooking stormy ocean, steep forested hillside, sunset, jagged rock pinnacles offshore, ((cat inside house looking out)), (humpback whale breach 300m offshore)
Interestingly, it did not actually generate an image but gave a number of pointers to sites that provided (free, licenced and copyright) images and indicated suitable filters to use on those sites.
Ready Player One Art3mis Ray Gun – Image Query
I had just been checking the details of an image from the film “Ready Player One” which had the female character Art3mis holding a ray gun and I wanted to know which film or studio that was from. It turned out to be a Weta Workshop Dr. Grordbort’s Righteous Bison Ray Gun. So I wondered if Le Chat could analyze the image and find that. This was the result. Note that Le Chat initially have a simple generic (and wrong) answer based on sci-fi films in general. It was only when challenged that it said it was wrong and my prompting was correct. It even indicated it had taken the information on board. It is difficulty to know if this was user appeasement or a real check of the available materials. It can also lead to many false statements being incorporated to guide future (mis-)information.