🪰 Viewer Bug Reports

• Use concise, precise descriptions• Do not include sensitive information. • Create a support ticket at https://support.secondlife.com for individual account issues or sensitive information.
GLTF inverse bind matrix remapping (bind poses) not fully supported
## Summary GLB/GLTF uploads can produce different rigged mesh deformation than DAE uploads from the same source model when the model uses a bind pose that differs from the viewer skeleton rest pose. ## Context Bind pose support is not directly exposed by Blender itself, although other tools such as Maya support this workflow. Both Collada/DAE and GLB/GLTF can represent bind-posed models through inverse bind matrices. The Avastar Blender add-on explicitly adds bind pose support and collada support to Blender-5, so this issue can be reproduced and tested using Blender-5 with Avastar. ## Steps to Reproduce in Blender In Blender, create or open a rigged mesh that uses a bind pose different from the default viewer skeleton rest pose. typical use case: A-posed models with A-Pose as restpose. Export the same model from Blender as DAE. Export the same model from Blender as GLB/GLTF. Upload/import both files into the viewer. Compare the imported results at the vertex/deformation level. ## Actual Result The GLB/GLTF import can deform differently from the DAE import, even though both files were exported from the same source model. Visible differences can include child joint twists. ## Expected Result DAE and GLB/GLTF exports from the same bind-posed source model should import with equivalent vertex-level deformation. Mesh edges may differ depending on exporter triangulation, but the rigged vertex positions and deformation should match. ## Test Notes This was tested with Blender using Avastar bind pose support by exporting the same bind-posed model as both DAE and GLB/GLTF, then comparing the uploaded viewer results.
2
Ā·
SL Viewer
Ā·
tracked
Unwanted edge transparency in BOM Universal Aux channel layers
There's a visual glitch when using more than one BOM texture layer on a Universal Aux channel if there's partial transparency in the texture using Blinn-Phong textures. I've made BOM textures with partial transparency for rigged fairy wings, so that customers could layer a stripey texture on top of the main wing texture. However, it's as if there's an outline of 100% transparency around the edges of the upper stripey texture that punches a hole straight through the underlying wing texture as well. It shows up the most when in front of a bright background. I tried making the stripe texture completely black with a 100% transparent background by converting it to a vector and then converting it back into a raster image in Photoshop, and this minimizes the issue so that it's only visible if you're very zoomed in, but this means there can't be layered BOM textures with blended edges at all on the Aux channels. I had envisioned being able to make add-ons like colorful peacock 'eye' spots, faded edges, etc so people could really customize their wings' look, but this doesn't seem to be possible right now.It happens whether the files are PNG or TGA, with or without an alpha channel.Since the main wing textures have partial transparency, changing the blend mode to alpha mask would not solve the issue. Hopefully you can see the problem in the screenshots. You might at first think it's the white outline 'halo' issue but no, it's actually that the edges have an outline that are completely clear so the background shows through.
4
Ā·
SL Viewer
Random root object assignment upon upload of multi-object DAE file
I have not tried this on the SL viewer, and if asked to I will certainly do so, but with the current release of Firestorm I have found that the root object assignment upon uploading a DAE file with multiple objects the resulting linkset inworld will be random, where I would expect it to be either the last or the first object listed in the DAE file, preferably the first one since in Blender that's the "Active" object. My testing as follows: Select to upload a DAE file that contains multiple objects, in my case where the object "Cube.nnnn" is the first listed one. Set LOD settings and pick one of the LODs to serve as Physics too. Complete the upload, and rez the object. Find out the root of the linkset. Repeat the steps a bunch of times with the same DAE file. Whenever the cube is not the root, the object that becomes the root gets the name of the cube, losing its actual object name. The cube itself keeps its name, resulting in two objects in the linkset with the same name. Attached is an image showing three of my attempts (out of maybe ten uploads of the same DAE). So, why is this important? Well, my case is that I am building a full region terrain with my wife, which requires splitting the mesh up into 64x64x64 chunks (or less). It also requires fitting them together exactly inworld. We found that the way to do this properly, we'd enclose the component meshes in 64x64x64 cubes, which can easily be aligned to each other, and in relation to the region of 256x256, a total of 32 cubes for one layer covering the whole region, it's easy to place them on the grid by way of calculated offsets. We can also automate the placement of the cubes using scripts, by having the script look at the name of the root object and then move the cube to a predetermined position based on that name. None of this works however, if the cube isn't the root object. It's easy to change it to be the root object, if one has one or two linksets, but dealing with a multitude of them it's quite a lot of extra work, especially during testing (on the beta grid). If it's needed for testing, I'd gladly send the DAE file, and I can send the already uploaded cubes (displayed in the attached screenshot), they are on the beta grid not on the main grid. Thank you!
7
Ā·
SL Viewer
Ā·
tracked
Load More
→