1. Neos VR
  2. News

Neos VR News

0.8.17.5250 - Automatic avatar eye setup, empty blendshape stripping and more

Automatic avatar eye setup, empty blendshape stripping and many optimizations, tweaks and bugfixes!

New Features:

- Avatar Creator now automatically setups eyes and blinking for full body avatars using heuristics!
-- Requires eye bones with "eye" in their name
-- For blinking, both uniform (both eyes) and individual (left/right) blendshapes are automatically setup
-- Blinking blendshapes need to have "blink", "eye"+"close" or "wink" in their name (preference in this order)
-- For determining left/right they need to have "left"/"right" or "L"/"R" isolated by spaces, symbols or capitalization from other parts of the name
- Added "Strip Empty Blendshapes" to Static Mesh and Skinned Mesh Renderer
-- This removes any blendshapes that have virtually no effect on the mesh. This reduces CPU, memory and size/bandwidth waste
-- Use version on Skinned Mesh Renderer to optimize existing avatars, it preserves any relationships (e.g. LogiX) for existing blendshapes
-- This processing is now automatically applied at import, so you don't have to worry for any newly imported avatars
- BipedRig now auto-detects eyes
-- This allows you to fetch the eye bones/slots with LogiX
-- Existing rigs are auto-rescanned and assigned

Tweaks:

- The "Leave" button on Neos Dash now asks for confirmation (based on feedback by @Shifty )
- Added "ExcludeDisabled" option to DynamicImpulseTrigger and DynamicImpulseTriggerWithValue which will ignore any disabled recievers
- ValueUserOverride and ReferenceUserOverride now propagate written values/references immediatelly, rather than in the next change cycle (based on feedback from @Coffee)
- UserInterfacePositioner now remembers the target user (based on feedback by @Veer )
- SimpleAvatarProtection is now applied to all skinned meshes in addition to the avatar root when creating new avatar
- Increased size of the Session dialog (this fixes hidden "Edit Mode" toggle reported by @Shifty )
- Added "Diagnostic: Generate Bitmap Metadata" to StaticTexture2DProvider
- Upgraded to unity 2019.2.10 (from 2019.2.9)

Optimizations:

- Added more caching to the cloud API, which decreases server load and improves cloud service responsiveness, especially under load
- Optimized iterating over slot children for various component and child object lookups
- Optimized UserInterfacePositioner to reduce network bandwidth
- Optimized record lookups to do more work on background threads
- Optimized record syncing to do more work on background threads
- World Orbs now fetch latest information when they're first touched, rather than startup. This should significantly improve resposiveness when loading into a world with many world orbs and reduces server load

Bugfixes:

- Fixed crash when encoding RefId values (discovered in log from @Jazneo )
- Fixed not being able to set camera anchor interpolation speed to lower than 0.01 (found by @Theofilus the Folf )
- Fixed dynamic bone chain getting corrupt and frozen when the object scale is zero during initialization (reported by @GearBell )
- Fixed root slot fields being driveable
- Made changing root slot position, rotation and scale into a hard error. This avoids incorrectly placed/setup components from repeatedly updating it, outputing lots of warnings into the log and hurting performance
- Fixed potential over-reads from resampled audio sources, causing audio glitches (+ added more diagnostic information)
- More fixes to incorrect thumbnail uploading logic, resulting in repeated attempts to upload a thumbnail
- Fixed exceptions when switching procedural textures to format with no support for pixel writing
- Tweaked world focusing task, to fix issue where FocusWorld node with closing the current one doesn't actually focus the target world
- Fixed caching of records not storing the last cached time for already up to date local records
- Fixed PBR texture mapping errors during model import when both metallic and roughness are not present
- Fixed exception when constructing bone hierarchy for rigs with missing bones
- Added auto-repair for broken Rig components, with all bones set to null

0.8.17.6442 - World loading features, MS Spatializer, LogiX nodes and bugfixes!

New world loading features, switch to MS HRTF Spatializer, new logix nodes and important bugfixes!

New features:

- Added new mechanism for reporting when the world is ready - this will prevent auto switching to the world until all components indicate that it's ready
-- Added MeshRendererLoadStatus (under World/Loading) - will report ready once all mesh renderers and their assets are loaded
-- Added AssetLoadStatus which will report ready once all listed assets are loaded
- Added new Logix nodes for value range shaping (under Math/Shaping)
-- Smooth Step
-- Smoother Step
-- Sin Shape
-- Symmetric Power Shape
- Added "Caps", "FlatShading" and "UVScale" setting to Cone Mesh
- Added "FlatShading" setting to Cylinder Mesh
- Added MaxSwing and MaxTwisting limiting to AutoLookAtUser (this replaces the "AroundAxis")
- Added AutoFocus & GetExiting to the WorldLink
- Added new inputs and outputs to OpenWorld LogiX node
-- GetExisting (will get an already open world with same url if it exists)
-- LoadingIndicator (indicates whether to show the loading indicator)
-- AutoFocus (auto focuses the world when it's ready)
-- MakePrivate (forces the started world to start as private)
-- OnWorldReady (fires when the world is ready)
- Added "FocusWorld" LogiX node, which allows focusing existing world if open

Tweaks:

- Switched to Microsoft HRTF Spatializer on Windows
-- This one seems most stable out of all, should help get rid of the audio issues for the time being
-- Also changed the default room setting to Outdoors (from the danger-nightly build)
- SetParent node won't try to parent object to itself, causing its global transform to get changed (based on issue reported by @tehturk )
- Disabled Avatar Anchors are now ignored
- Refactored API for opening/focusing worlds. This removes some bugs and improves behaviors (e.g. when opening already opened worlds)
-- World Relation "Replace" should now work correctly, closing the old world once the new one is focused
-- AutoFocus is now respected, allowing to load worlds without focusing them in background
- Filtered FreeImage logging messages about file type mismatch

Optimizations:

- Added memory pooling to sync element trash management, reducing memory allocations when deallocating/removing elements and reducing GC churn

Bugfixes:

- Fixed data model corruption causing world to crash for everyone but the host when releasing drive on Sync collections of other sync elements
-- This would happen when deleting certain components for example or releasing drive of complex objects (discovered by @Veer)
- Fixed NeosFieldBase throwing exceptions when some of its components are missing
- Fixed exception when trying to map external textures with a missing mapper (found in log from @Kalash )
- Added extra early filter to parenting slots to prevent them from parenting to themselves (based on issue reported by @tehturk )
- Fixed being able to break the userspace dash by destroying the adjustment handle (reported by @Aegis_Wolf)
- Fixed incorrect tooltip/shelf/grab-area anchor positioning with Avatar Creator for certain avatars (reported and sample avatar provided by @Ultranique, also reported by @ChrisWarner103)
- Fixed incorrect UV generation for conical frustums at the top side (e.g. cone mesh)
- Fixed incorrect wrap-around UV generation for conical frustums, causing the textures to not seamlessly loop around cylinders and cones
- Removed exceptions when trying to set playback position for targets with currently unassigned clip length (discovered in log from @Nexulan )

0.8.17.2187 - Switch to Resonance Audio Spatializer to get rid of the audio bug

Switched to Resonance Audio to get rid of the audio bug! Hopefully this one is good. Also few tweaks and a fix.

Build is compatible with the last one so you don't need to update immediately if you're in Neos now.

Tweaks:

- Switched to Resonance Audio spatializer by Google from OculusSpatializer
-- This will hopefully alleviate the audio bug. Let me know how it works or if you notice any issues with this one

- Changed naming of captured screenshots in the Windows Photos folder to yyyy-MM-dd HH.mm.ss to help alphabetical sorting (based on feedback by @Alex from Alaska )
- Removed old ability to unpack LogiX nodes by holding secondary on an object with the LogiX tooltips (based on feedback by @Coffee )
- Tweaked fetching of public sessions to reduce load on the cloud server and improve general cloud responsiveness

Bugfixes:

- Fixed GrabInstancer not respecting the permission system (reported by @Coffee )

0.8.17.37310 - Big bugfix update! With extra optimizations and additions on top

Big bugfix update! Should get rid of the recent world crashes and other problems. Also some optimizations and small additions.

New Features:

- Added "Play & Wait" node which can start playback and then fire an impulse once it's finished
- Added "Play One Shot & Wait" node, which fires impulse when the clip finishes playing
- Added "AutoTarget" property to AutoLookAtUser which allows disabling the auto-targetting and assignigng the targetted user manually
- Added "AroundAxis" and "Axis" properties to AutoLookAtUser which allow restricting the rotation to a particular axis
- Added "InvariantCulture" and "CurrentCulture" LogiX nodes (under Formatting)

Optimizations:

- Optimized allocation block management in reference manager - this removes all memory allocations when allocating new objects/components, reducing CPU and memory usage and GC churn
- Reduced memory allocations when rendering to a texture asset (e.g. capturing thumbnails, photos and similar)
- Reduced memory allocations and CPU usage when duplicating objects

Tweaks:

- ToString and Parse nodes now accept IFormatProvider inputs and use invariant culture by default
-- This fixes system culture related issues (e.g. some systems using , instead of . for decimal point) (reported by @Bom "Bitman" bomb (PolyLogiX) and @Coffee)
- Gridspace ground texture now uses anisotropic filtering by default
- Added extra cleanup for duplicated LogiX node visuals which would prevent packing in some cases
- WebP encoding now uses exact mode, which preserves color information in fully transparent regions
-- This fixes texture operations and importing corrupting RGB data in some textures (e.g. splat-maps) (discovered by @Bom "Bitman" bomb (PolyLogiX))

Bugfixes:

- Fixed race condition in fetching permission validators, which could in rare cases cause a world crash or corruption of state (discovered in log from @H3BO3 )
- Fixed state corruption when duplicating element SyncBags (e.g. on objects with ValueUserOverride) causing world to crash or misbehave (also should fix headless crashes found in logs from @Medra )
- Added invalid value filter to LabelPointerMesh to prevent generating corrupt geometry
- Fixed exception when cleaning up registered events in ListEditor (found in log from @guillefix (OneWeirdOtter) )
- Fixed invalid generation of random strings in RandomX
- Fixed exception when rendering a static texture and one of the selectively rendered or excluded objects doesn't have a corresponding implementer instance
- Fixed exception when trying to fire UserReleased event on AvatarAnchor, when the user has been destroyed by another user
- Fixed exception when destroying slot gizmo and the target slot is already gone
- Fixed character parented trying to unparent destroyed user
- Added fatal world exceptions, which will crash the world immediatelly when the state gets corrupted, rather than letting it run and result in secondary errors and exceptions
- Fixed specific controller nodes lingering on the last user when the new user doesn't have particular controller on their system (e.g. Index Controller node is then fed user with Oculus Touch controllers) (reported by @H3BO3 )
- Fixed sync playback not correctly reporting IsPlaying status immediatelly after being instantiated and played
- Fixed repeatedly loading unsynced records for groups and trying to sync them (reported by @Hayden )
-- This should also fix degradation and some crashes with headless & grapahical server experienced by @Medra with Creator Jams
- Fixed WebP encoder not correctly switching to lossless mode. To use lossless mode use any quality higher than 100 (101 will work). This is now default for various in-engine recompressions

0.8.17.37186 - Inspector UI hotfix + dynamic bone grabbing fix

Quick hotfix. Fixing the scaling issue due to dynamic bones and inspector UI glitch. Compatible with previous build.

Tweaks & Optimizations:

- Optimized cloud database indexing policy. This will improve performance of some updates (e.g. syncing/saving worlds/items)
- Changed default filter mode to Anisotropic for Spaceworld and Utlity world ground textures

Bugfixes:

- Fixed incorrectly calculated grabbing distance for dynamic bones, which would interfere with scaling self and grabbing when at small scales (discovered by @Somowo and reported by @Shifty )
- Fixed incorrectly generated UI in the inspector for slots due to the new SyncBag support (found by @Parker )