1. Neos VR
  2. News

Neos VR News

2020.7.5.788 - Voice noise gating, RadiantUI dash angling, tweaks bugfixes

Bunch of new goodies for the new dash and other related things unblocked by the new UI! The dash can now be moved side to side and has a freeform mode, which lets you angle it above or below you.

Also I've implemented a proper noise-gating system for the audio input, which should get rid of the noise, breathing and other unwanted sounds coming from the users. The voice indicator facet has been adjusted as well to better show both raw and filtered volumes and the noise gate-threshold (can be adjusted in settings).

A bunch of other things got fixed up too. Floating head and hands avatars can now touch physical buttons!

[h2]New Features:[/h2]
- Implemented proper Noise Gate system for the audio input (requested by @Rukio, @Enverex, @ohzee and others)
-- This should get rid of quiet noises, such as breathing or microphone noise
-- Added "Normalization Noise Threshold" in settings
-- It also has attack, hold and release settings, but those aren't currently exposed (will come with the new Settings UI)
-- As a nice side effect, this also improves network traffic utilization - if the sound is gated, no audio data is transfered over the network
- Added "AudioSettingSync" (under Utility), which provides access to some of the audio settings (currently Noise Gate Threshold, Attack, Hold and Release)
- Added "Freeform" mode to the RadiantUI Dash, which allows it to be angled at the user by placing it above or below (can be toggled via the new Facet on the Home screen above the seated mode toggle) (requested by many people (sorry I didn't keep a list ;_;))
- Added ability to move the RadiantUI Dash side to side (requested by @KierDran, @pek and others)
-- The horizontal displacement will reset when the dash is reopened, re-centering it automatically
- Added "Power" to the ProgressBar, which allows making the progressbar non-linear (e.g. use values less than 1.0 to emphasize low values and larger for the bigger ones)
- Added "Power" to the Slider as well, which allows making the slider's progress non-linear for better control over certain values
- The voice indicator facet now shows the noise gate threshold. (previously requested by @Enverex) The bars for filtered (noise-gated & normalized) and raw volumes were also better separated.
- Added "RadiantDashStateSync" which allows controlling properties of the userspace RadiantUI Dash (currently if it's open and freeform)

[h2]Tweaks:[/h2]
- Increased the range of movement for the RadiantUI Dash
- Extended AvatarFingerPoseSourceAssigner to AvatarHandDataAssigner, which is now also reponsible for setting up TipTouchSource and VibrationDevice relay
- The volume and threshold related sliders in Settings are now non-linear, which gives more fine adjustment at lower volumes, more closely matching human hearing
- AvatarCreator will now setup visemes on floating head avatars as well and not just rigged full body avatars (based on report by @Starkido through @Shifty | Quality Control Lead)
- Moved "SearchBlock", "GrabBlock" and "GrabbableReparentBlock" into Transform/Tagging category (suggested by @Turk and @ProbablePrime)
- Toggling seated mode on and off will now transition the offset gradually, rather than causing a jump, preventing cases where the user ends up falling through the floor

[h2]Bugfixes:[/h2]
- Reworked TipTouchSource and its related VibrationDeviceRelay management/setup from VRIKAvatar to AvatarHandDataAssigner
-- This fixes physical touch not working with the floating head and hands avatars (including the default avatar) (reported by @Jeff07734, @Shifty | Quality Control Lead and @H3BO3)
- Fixed NearestUserHand preferring controllers, rather than actual hands (reported by @Shifty | Quality Control Lead)

2020.7.4.755 - Redesigned Seated Mode, new dash tweaks, various bugfixes

Redesigned the "maintain height" into a proper seated mode! A bunch of other changes and tweaks to the new dash as well as well as some other things. Designing the workspace system now in the background so your custom facet layouts can be saved!

[h2]New Features:[/h2]
- Redesigned and reworked the "Maintain height" into Seated Mode system and added Seated mode toggle facet to the "Home" screen of the dash
-- The old "maintain height" system has been fully removed. The new system computes compensation offset when it's initially toggled on and then keeps using it until it's turned off.
-- When turning the seated mode on, make sure you're in your normal seated position
-- This provides better behavior, by letting the user move vertically (e.g. leaning down) without them being constantly pushed upwards
- Added "UserTrackingSpaceSync" which syncs the configuration of the user tracking space with the input system (it will only work in Userspace)
-- Currently offers two properties "SeatedMode" and "UserHeight" (in meters)
- Added "ParentUnder" field to GrabbableParenter, which allows overriding where do grab-released objects get parented (based on feedback by @GearBell and @Shifty | Quality Control Lead)
- Added breakdown of online users to VR users, Screen users, Headless and mobile (mobile is separate stat and can include both VR and screen users) (based on feedback by @GearBell)
-- This data is now also exposed in the OnlineUsersCount component
-- Note, the stats will be a bit unprecise for a while, particularly because anonymous users count to the individual categories and the mobile builds of Neos haven't been updated yet and some people might be running on older versions
- Added LocalUserLiveStatus (under Utility) which provides whether the local user is currently live
-- You can use this to selectively hide some information when live (e.g. NCR status on the dash) or hiding things in world/items/avatars for users who are currently live
- Added "UI" audio type group (suggested by @ProbablePrime)
-- The interactive camera sound effects now use this audio group. Once UI sounds come, they will too
-- You can also set any audio output to this type group for your custom UI's
- Added 1D, 2D and 4D variants of the Wobbler component (implemented by @Coffee | Programmer)

[h2]Tweaks:[/h2]
- Tokens Facet will now hide information when the streamer camera is set to Live (either manually or by mirroring to screen) (based on feedback by @ProbablePrime)
- Removed the old height estimation system and replaced it with a default user height of 175 cm instead, when the user height isn't configured
-- This should provide better behaviors and avoid glitches, where things like playspace mover or uncalibrated VR setup ends up scaling avatars to enormous sizes and cause user confusion (based on many reports in the past and @Shifty | Quality Control Lead)
- Removed some outdated items from the Settings screen
- Changed "Use Head Direction for movement" setting to true by default (suggested by @Shifty | Quality Control Lead) (this only affects new users)

[h2]Bugfixes:[/h2]
- Fixed a corner case of Twitch Chat dialog not skipping parsing RTF tags in Twitch chat messages, when the Twitch message doesn't contain any defined emote sets (based on report by @Enverex)
- Fixed being able to import certain assets as Spectator when object spawning is enabled (reported by @Zyro1331 (ZyroDesign) and @Gutter)
- Fixed missing whisper sphere on the default avatar (reported by @Shifty | Quality Control Lead)
- Removed world switcher tutorial due to its glitchiness and the fact that it won't be necessary soon
- Facets now start out with IsStandalone as true when they're first created, fixing newly made assets not rendering correctly until they're placed

2020.7.3.732 - Reworked voice mode system and added voice switching to dash

Reworked the voice system to decouple mute and make the whisper/normal/shout/broadcast setting be per-world, rather than global, while preserving mute as a global toggle. The voice facet on the dash now also lets you switch your voice setting (desktop users re-joice! x3). I'm keeping the original switcher on the right hand for quick access for now, until the facet can be placed there instead.

Also some more internal progress on placing facets, particularly in VR mode! You can press Ctrl+F2 if you want to experiment, but it's still unfinished! Some other tweaks and additions as well. Now I go sleep!

[h2]New Features:[/h2]
- Reworked the voice mode system to decouple Mute from other voice options
-- Muting self is global - it will apply in all worlds
-- However voice status (Whisper, Normal, Broadcast) is now per-world. This fixes scenarios where having whisper or broadcast in one world will transfer to other worlds or will get automatically globally lowered due to permissions in a particular world
-- This also preserves the voice status when you mute and unmute yourself
- Added voice mode toggles to the VoiceFacetPreset, allowing the voice mode and mute to be switched from the top bar on the dash
-- The original voice switcher on the right hand is still present for now, at least until the voice facet can be placed on the hand in its place
- Added VoiceModeSync (under Utitlies), which provides the current GlobalMute state and the focused world voice mode and also allows them to be changed
-- This component will only work in the Userspace for security
-- It also provides FocusedWorldMaxAllowedVoiceMode, which is the maximum voice mode allowed to the local user in the focused world and individual bools for which voice modes can be used
- Added IsStandalone property to Facet, which indicates when the facet is standalone (currently not placed in a container)
-- Also added default background with Z-Write to a Facet, which is only visible when the facet is standalone
- Added "Clear Template" to ComponentCloneTip (requested by @SpearmintVR through @Blaze)
- Added "Clear Source" to RigTransferTip (requested by @Blaze)
- Added "MultiBoolConditionDriver" (under Transform/Drivers) which drives single bool field based on multiple source boolean fields
-- It supports 3 modes for when the driven field will be true - All (all conditions are true), Any (any of the conditions is true) and None (none of the conditions is true)
-- Each condition can also be inverted
- Added support for sprite tint to ValueOptionDescriptionDriver using per-option color override, multiplied with a SpriteTintBase color
- Added "Additive" color mode to InteractionElement (Buttons, Sliders...) which will addively blend the normal, highlight and press colors with the button's base color

[h2]Tweaks:[/h2]
- Changed the visuals for the online status switcher facet to be more easily distinguishable - the active option is now the only colored one, with others being black with inverted text (based on feedback by @ProbablePrime)
- Facets are automatically aligned and scaled to the hand that's grabbing them (e.g. when picking from the grid container)
- Replaced FlatLitToon preset in model importer with XiexeToon (based on feedback by @Blaze and others before)
- Removed old UserspaceDash
- Removed old Voice Indicator
- Removed old Online Status Panel

[h2]Bugfixes:[/h2]
- Potentially fixed race condition when updating UIX text, causing some canvases to break and stop updating (reported by @KierDran)
- Fixed facet grabbing from GridContainer having incorrect offset, causing the wrong facet to be grabbed

2020.7.2.150 - Transparent PBS Distance Lerp, security improvements, bugfixes

Transparency support for PBS Distance Lerp! Also some security improvements and a bunch of bugfixes for the new dash, some related things and some unrelated.

[h2]New Features:[/h2]
- Added Transparency and Culling support to PBS Distance Lerp (requested by @GearBell)
- Added SessionURL and SessionId outputs to the OpenWorld node, which will be filled with the values of the opened world when OnWorldReady impulse fires (requested by @Rue Shejn | Artist 3D)

[h2]Tweaks & Security:[/h2]
- Pruned unneeded .dll, .pdb and .xml files for the Headless client (including UnityEngine.dll, which is not necessary for it) (requested by @Earthmark)
- Blocked LogiX access to any permission-related components
- Various other security improvements
- Upgraded to Unity 2019.4.2f1 (from 2019.4.1f1)

[h2]Bugfixes:[/h2]
- Fixed being able to change parent of protected slots (Assets, Roles...) by setting the Parent reference in the inspector (reported by @art0007i)
- Fixed Asset cleanup and Autosave potentially breaking when changing system timezone or during daylight savings shift
- Fixed "GetExisting" being ignored for AttachTexture2D and AttachSprite nodes (reported by @Zyzyl)
- Fixed CharacterParenter, CharacterTeleporter, CharacterForceField and CharacterEventTrigger components working when they're disabled (reported by @Enverex and @Zyzyl)
- Added valid type filter when creating ValueEqualityDriver, to prevent crashes when using invalid types (reported by @A Monsoon of Babies)
- Fixed "Facing" particle Alignment mode not working correctly and rolling together with the user's head (reported by @Enverex)
- Fixed not being able to send equippable items as a message (reported by @Nexulan)
- Fixed Twitch chat dialog emotes being semi-broken after last update (discovered on @bobotron's stream)
- Fixed FriendLink not working for users who are not currently friends with the clicking user (reported by @H3BO3, @Conduit, @Ryuviand @Sykes)
- Fixed World browser listing worlds that weren't submitted to the Neos hub being listed (reported by @Alex from Alaska)

2020.7.1.26 - First Release of new RadiantUI dash - more to come soon!

The first working version of the new Radiant UI dash is here! The new dash has now replaced the old belt menu dash and window system and as such it's an important milestone for the development of the Radiant UI. The overall UI overhaul is still far from finished, there are many more exciting features to come soon, now that we have this as a foundation to build on!

The new dash currently provides all the functionality of the old dash with some new bits. Over the upcoming days and weeks, more features will be added: Finishing the Facet editing system so you can customize, UIX Styling support for changing the visuals, proper default visual style, avatar Facet anchors, workspaces and more!

The old UI that has been wrapped into the new dash will also be gradually reworked piece by piece, starting with the Voice Switcher, new Session/World joiner, Inventory, Friends, Streaming Camera and many more and proper system for bringing your custom facets into userspace be introduced.

If you need to know where some important buttons were moved in the new dash, check this quick guide: http://wiki.neosvr.com/subdom/wiki/index.php?title=New_RadiantUI_Dash_Transition_Guide

Special thanks to @Danger Tester's for providing bugreports and feedback on the initial release: @Turk, @ohzee, @Hayden (PolyLogiX - ZyroDesign), @Alex from Alaska, @PeterTheThinker, @Cyro, @Waiwu, @Abysmal, @Zyzyl, @Dante, @alex derpy avali 🐦, @CanadianGit, @A Monsoon of Babies, @bobotron, @Electronus, @KierDran, @H3BO3, @Zane, @Lewi-bean | Audio Designer, @JustlyDeclarable, @SmolCookie, @GalexY, @DeliriousJax, @Zevrim (Linkluky) and @ProbablePrime
NeosVR Wiki
Index.php

[h2]New Features:[/h2]
- Added new RadiantUI Dash Screen, replacing the old belt dash!
-- This dash uses screen based system, allowing to have multiple virtual screens that can be switched between using buttons at the bottom of the dash. Those screens use UIX based UI. Typically most of them will be facet containers, allowing fully customizable UI, currently only the Home screen is facet based as the rest of the UI is gradually reworked
-- Created a new Home screen, which contains the essentials in form of facets
-- Created new Exit Neos Screen
-- Wrapped Session, Settings, Friends, Inventory and File Browser dialogs into the new dash
-- This dash also has a top bar for placing small facets in, currently used for Time, FPS and Voice Meter

- Added facet preset system for procedurally constructed facets and implemented following presets
-- Core Worlds (Hub, MTC, Cloud Home)
-- Controller Diagram (shows controller controls and layout, graphics made by @Coffee | Programmer)
-- FPS Facet
-- Online Status Switch
-- Online User Count
-- Cloud Server Status
-- Simple Profile (allows logging in, out and changing profile picture)
-- Storage Indicator
-- Sync Status
-- Time
-- Tokens status (how much NCR, KFC and CDFT you have)
-- Common tools (Avatar Creator, Full Body Calibrator, New World creator, Streaming Camera, NCR Withdraw/Deposit, Debug dialog)
-- Neos Version number
-- Voice Indicator
-- World Close button
Additionally, following indicator/function components were added, which were used to build those facet presets and can be used to build your own versions (once the editing system is finished):

- Added "CurrentDateTimeTextDriver" component, which can drive a text field with the current date/time using a format string (same as .NET DateTime formatting strings)
- Added "CloudServerStatus" component which contains the current cloud server status data (under Cloud/Indicators)
- Added "OnlineUsersCount" component which indicates the current number of online users
- Added "RecordSyncStatus" component which provides basing record syncing information
- Added "StorageUsageStauts" component which provides information about the cloud storage usage
- Added "CreditsStatus" component which provides current value of owned credits (NCR, CDFT, KFC) and their approximate USD value
- Added "AudioDeviceVolume" component which measures the volume and normalized volume of any audio device registered with Neos
- Added "NeosVersion" component which contains current Neos version number/string (under Utility)
- Added "UserOnlineStatusSync" which indicates current online status (Online, Away, Busy, Invisible) and allows it to be changed by changing the value of the field
- Added "PerformanceMetrics" which provides some performance metrics for given user (right now FPS, ImmediateFPS, RenderTime, TotalEngineUpdateTime, more to come later)
- Added "FocusedWorldCloseAction" button event receiver, which will close the currently focused world when it receives button event. It has a few configurable actions, to automatically prompt save, force save, force save as or force discard changes
- Added "FocusedWorldStatus" which indicates if the currently focused world can and/or should be saved and gives its name (more info to come)
- Added AvatarCreatorSpawner which will spawn avatar creator on button press event (under Utility/Tools)
- Added FullBodyCalibratorSpawner which will spawn fully body calibrator on button press event
- Added MainAndMaskTexturePropertyBlock, which allows overriding both the main texture and mask texture efficiently on materials that support it (currently UI_Unlit)

IMPORTANT: Any new components that indicate personal information will only work in userspace
Some other related and unrelated additions:

- Added new nodes for getting information from tooltips (based on request by @H3BO3):
-- IsToolTipEquipped (determines if the tooltip is currently equipped)
-- IsTooltipInUse (determines if the tooltip is currently actively being used)
-- TooltipEquippingSlot (gets the slot of the CommonTool equpping given tooltip)
-- TooltipEquippingNode (gets controller node that's equipping given tooltip)
- Added parameterized version of tag to text rendering system, which allows efficiently skipping parsing of a specific length of the string following the tag
-- Example: Bold and not so bold but now bold again
- Added Mask Texture support to Fresnel Material (requested by @Coffee | Programmer) as well as AlphaClip mode support
- Added GraphicChunkRoot component (under UIX/Layout), which will force a graphic chunk to be created at the point where it's addded
-- This can be used to optimize UIX when there's complex UI that's being translated within the canvas on the slow where the graphic chunk is placed
-- This has also been used to optimize any UI that slides left or right when swapping screens (e.g. Inventory, World Browser, Session and so on)
- Added ValueGradientDriver which can drive a target value field using a gradient defined by individual points (positions on the gradient with associated value) and position on the gradient (e.g. a color gradient)
- Added ProgressBar (under UIX/Interaction) which can drive a RectTransform anchors based a normalized progress (0..1)
- Added new Neos logo to the loading screen (logo design created by @Coffee | Programmer and @Karel)
- Added "pink" and "brown" color constants
- Neos will now try to dump the state of the world when it crashes unexpectedly on the host to a file and write the path in the log (this file can be imported into Neos, restoring any lost data)
- Added "MinScale" and "MaxScale" to Slider, which allows clamping the range of scaling when enabled
- Added "UseTransformScale" to Camera, which will compensate the OrtographicSize, NearClip and FarClip by the scale of the camera in the world
- Added "Direct" tint color mode to InteractionElement (buttons, sliders...), which will ignore the element's base color
- Removed old userspace toggles for Vive and WindowsMR controllers and replaced them with long-press of the App/Menu button (the button that opens context menu)

[h2]Tweaks:[/h2]
- Changed alpha channel blending to One One and Max BlendOp rather than using the same blending set for the RGB data
-- This fixes incorrect alpha behavior when rendering into an offscreen texture and then rendering this render texture with alpha blending (making an opaque region partly transparent when transparent material is rendered on top) or having incorrect transparent regions in captured in-game photos
-- In this build only the UI shaders were recompiled with this change, other shaders will be updated later on when all shaders are recompiled again
- Disabled rich text tag parsing for Twitch chat messages (based on recent livestream shenanigans xP)
- Some internal moderation tools improvements
- Removed redundant TransformMatrix nodes (they will autoconvert to instances of Compose TRS Matrix) (based on report by @orange and @Aetoriz#1794)
- Improved GridContainer Facet placement logic, to automatically use the preferred facet size fitted in the available space, rather than growing to the maximum possible size
- FacetContainer will no longer place facet when it's being custom sized and the cursor leaves the canvas
- Redesigned the facet container placement logic so containers can achieve better facet placement fit (this fixes unstable positioning (jumping around) when free-form placing the facets on the grid container)
- Tweaked grid container placement so facets can be freeform placed from all four corners, without skipping a row/column
- Save, Save As and Save Copy have been relocated to Session screen for the time being
- World Browser now contains "My Worlds" toggle
- Friends list now shows which version of Neos is someone using if it's different from the current one running

[h2]Optimizations:[/h2]
- Changed the friends list profile image to use the new material mask for the circle masking, instead of UIX masking mechanism, greatly improving the performance of the old Friends list
- Small optimizations when evaluating logix nodes
- Small optimizations when constructing UI procedurally

[h2]Bugfixes:[/h2]
- Fixed asset variant system incorrectly requesting old variant alternatives when a new variant wasn't generated yet and the old variant uses older identifier format, causing some textures to not load (appear white) the first few times they're spawned
- Fixed an exception when unloading old cloud settings when logging out (found in a log from @Shifty | Quality Control Lead)
- Tweaked item shelf item rejection logic accepting objects that are too large and non-persistent (like full body calibrator, avatar creator and so on) (based on reports by @Zane, @Zyro1331 (ZyroDesign) and @Shifty | Quality Control Lead)
- Fixed various LogiX nodes breaking or even crashing the world when they're swapped to a different overload/version or deleted (reported by @Ardes, @Hayden (PolyLogiX - ZyroDesign), @Shifty | Quality Control Lead, @Earthmark, @art0007i, @guillefix and @I wont shut up about reflections)
- Fixed Demultiplexer not swapping to a correct overload when the DefaultValue is plugged in
- Tweaked the degenerate transform matrix threshold limits for CameraPortal, to prevent moderate scaling of the portal target (or the camera) from stopping the portal from rendering (reported by ) (it will still stop rendering at extreme scales, but the limit should be significantly higher @Turk)
- Fixed PBS Dual Sided materials not casting correct shadows in the alphaclip mode (reported by @Enverex)
- Fixed "Component" component being attachable component (reported by @Rue Shejn | Artist 3D)
- Fixed UI Circle Segment shader not respecting ColorMask and not properly working as a mask as a result
- Fixed AspectRatioFitter incorrectly offseting height when the fitted width is larger than the current width, causing the visual to be vertically displaced
- Fixed RTF tag changing the parent color to black and tag without alpha overriding the parent alpha
- Fixed GridLayout horizontal alignment not working correctly when the number of actual items is lower than the number of available columns
- Fixed rendering to texture asset (capturing photos) rendering objects under HiddenLayer (reported by @Hayden (PolyLogiX - ZyroDesign))
- Fixed Userspace objects/dialogs being grabbed when a world-space object is grabbed
- Fixed Camera UVToRay returning NaN origin/direction when its associated render texture isn't fully initialized yet or has zero dimensions, causing raycast portals to break/throw exceptions
- Fixed Facet placement breaking and causing incorrect positioning when placed before the associated UIX update cycle has fully completed (reported by @Electronus, @JustlyDeclarable and @Hayden (PolyLogiX - ZyroDesign))
Notes:
- You can still open the legacy inventory (which can be shared into the world) by using the shortcut or by pressing Ctrl+I in the screen mode. This is temporary and will be removed once the inventory is reworked under the Facet system
- Editing of the facets on the dash is disabled by default now, as saving mechanism isn't fully implemented yet and there are some bugs. If you want to play with it, press Ctrl+F2 on your keyboard to toggle editing on and off. THIS IS UNFINISHED FEATURE, please do not report bugs at this stage.
- If you need to use the old dash for the time being, there's a Steam branch called old-dash that you can switch to, which has the last build before switch to the new Radiant dash