1. Neos VR
  2. News

Neos VR News

2020.9.9.214 - Many UI/UX Tweaks, Component Impulses, RawDataTooltip bendy laser

A whole bunch of Tweaks! Many tweaks were made to the UI and its defaults to improve general user experience. Please note that some old mechanisms were disabled by default (the old World Switcher and Double Grip to Equip), but you can re-enable them in the settings if you still want to use them.

The dash/world-switcher open/close mechanism has been reworked for Vive and Windows MR to make it easier and more intuitive to use. There are some additions and tweaks to the new World UI as well.

Also ability to send impulses to components has been added! This only features a few components so far, but more will be added over time (you can request certain actions). You can now get the bendy laser hits with RawDataTooltip too!

[h2]New Features:[/h2]
- Added Sort Direction and Parameter (First Publish Time, Last Update Time and Creation Time) to the Custom filtering settings (requested by multiple users)
- Added GetRawDataTooltipHit node (under Tools), which will get the current RawDataTooltip hit (requested by @Alex from Alaska)
-- This uses the bendy laser hit if available
-- It must be evaluated on the user currently using the tooltip, it won't give a correct result for other users
- Added "Index of First Match" node (under Utility), which returns the index of the first matching input (or -1 if no match is found) (based on request by @Alex from Alaska and @Aetoriz)
- Added "String Join" node, which joins number of strings using a custom separator (based on discussion with @ontodistro)
- Added ability for component methods to function as impulse targets, allowing them to be easily triggered through LogiX
-- Exposed methods will show as impulse targets in the LogiX interface
-- Following methods were exposed (if you'd like more to be exposed, please make a request, I only went through a few off the top of my head):
--- SetFromLocalBounds and SetFromGlobalBounds on BoxCollider and SphereCollider (requested by @ChrisWarner103 (DelVR))
--- Trigger and Capture on InteractiveCamera (Trigger respects the timer setting if enabled, Capture runs immediatelly)
--- Play on RandomAudioClipPlayer
--- NextPage and PreviousPage on PagingControl

[h2]Tweaks:[/h2]
- Added "Published Worlds" world category, which shows all the published worlds in the order of publishing (suggested by @Nexulan | Community Manager)
- "Active Sessions" world category now filters out empty sessions (suggested by @Shifty | Quality Control Lead)
- Increased (2x) the movement threshold for UI interaction passing upwards to reduce number of times where clicking an item ends up causing a scroll instead (suggested by @H3BO3 and @Shifty | Quality Control Lead)
- Reworked mechanism how is the dash / world switcher opened with Vive / Windows MR controllers (based on feedback by various users through @Shifty | Quality Control Lead)
-- The dash/world switcher is now opened immediatelly once the circle fills, rather than waiting for the user to release the button
-- To enable the UI edit mode, hold the Menu button on both controllers simultaneously, so both circles will fill in at the same
time (it doesn't have to be 100 % exact)
- Slowed down the userspace toggle charge on Vive & Windows MR controllers to prevent accidentally opening the dash when trying to open the context menu (suggested by @Shifty | Quality Control Lead)
- The molecule world switcher is now disabled by default to avoid confusing new users.
-- You can re-enable it in the settings on the left side using "Enable Legacy World Switcher"
-- When it's disabled, either controller button will open the dash
-- Once facets can be placed on avatar, it will be removed permanently
- Double-Grip equipping is now disabled by default to improve general user experience and focus on the new equipping methods instead
-- You can re-enable it in the settings on the left side using "Enable Legacy Double Grip Equip"
-- This gesture is not planned to be removed and will stay in some form (might potentially be reworked into a bindable gesture)
- Mesh baking will now preserve the SimpleAvatarProtection component on the baked mesh (suggested by @Aetoriz through @Cid)
-- Only the user owning the mesh can perform the bake, it will fail if another user tries to run the baking process
- Improved type castability detection, fixing cases where certain types would not be detected as castable to others (e.g. int3 to float3, reported by @H3BO3)
- Lowered the required pinch strength and confidence for finger-tracking grabbing to improve grabbing support with the Vive SDK (based on feedback by @Cyro)
- Upgraded youtube-dl to 2020.09.06 (from 2020.07.28) (based on report by @MADDMAXKZ)
- Added cleanup of Slot moved events for ConnectionWires, fixing potential resource leaks when LogiX is packed and unpacked
- LogiX interface link wires (going into the represented slot/component) no longer have colliders
- Changed minimum double click interval to 0.25 from 0.1, to prevent accidentally setting it too low (based on issue by @Rue Shejn | Artist 3D)

[h2]Bugfixes:[/h2]
- Fixed WorldListManager not updating when the sorting properties are changed
- Fixed RawGraphic not respecting the FillRect property when determining if a point is inside of the graphic or not
-- This fixes the world preview user/description box blocking the 360 preview panning when the box is hidden (reported by @H3BO3)
- Recompiled Linux binary, which should fix startup issues (reported by @jeana, @Enverex and @Shifty | Quality Control Lead)

Vive/Index Finger Tracking support, WebSockets, Twitch Channel Points & Rewards

Hello and welcome back to the Neos Weekly Update!

The new World UI has also received some more tweaks and updates to polish it up a bit more, but most of this week was devoted to a couple of new features: Websockets, Vive/Index Fingertracking and Twitch Channel Points support.



[h2]Vive Finger Tracking[/h2]
We’ve recently implemented Vive’s finger tracking system into Neos. In order for this to work, you would need to make sure your Vive/Index has the front facing cameras turned on in your steam settings, and you’ll need decent lighting in your room. After that, simply enable vive finger tracking in your Neos settings, and hold your (empty) hands in front of your face!

[previewyoutube][/previewyoutube]

Right now the Vive SDK’s tracking isn’t as high quality as say, Leap Motion, but as Vive releases newer versions of the software, we’ll implement them so we could see some improvements in the future. The tracking allows for pinch-grabbing of objects within Neos as well as finger splay, so give it a try!

Demonstration by June on Twitter

[h2]Twitch Channel Points support and other improvements[/h2]
We have updated the Twitch API library to the latest version from source, merging our performance improvements and other tweaks. Thanks to the new version we were able to fully integrate the channel points system with Neos.

Not only will the in-game Twitch chat dialog show users claiming rewards with the channel points, but you can receive it as an event with LogiX as well, triggering arbitrary actions in the world or on your avatar in response.

The integration has received various other improvements as well, like support for highlighted messages, removing messages in the in-game chat dialog when they’re removed by moderator and fixing various issues, like incorrect formatting or broken follower messages and events.

It’s always great to see our streamers enhance their experiences with the interactivity and we hope the rewards support will enable new cool possibilities.



[h2]Websocket Support for LogiX[/h2]
Based on many requests from the community and researcher group in Neos, we have finally added WebSocket support, extending the networking capabilities of Neos and enabling easier integration with custom services and local apps.

Unlike the HTTP GET/POST string nodes which only allow polling, WebSocket connection is bidirectional, allowing to both send and receive messages from the server and is significantly more efficient. This way you can send messages to Neos from your own apps and servers.

WebSocket connections follow the same security model as the HTTP nodes, requiring the user to manually approve each host that you want to connect to. You can use the same nodes for requesting host approval.



Currently only text messages are supported, with raw binary messages requiring the collections support to iterate over raw bytes. Once this is implemented, you’ll be able to send those messages as well.

If you’d like to get started with WebSockets, we have published a world called “WebSocket Example”, which uses a public echo service to test the functionality, which simply sends back the same text message you send to the server.

We can’t wait to see what kind of applications you’ll build with WebSockets! If you run into any issues or concerns, you can post them on our official GitHub or Discord.

[h2]Community Highlights[/h2]
[h3]Saturday Night DJ Party by Ark Gullwing[/h3]
Ark hosted a lively party last Saturday evening with a live DJ in QueenHidi’s dance world! He’s hoping to make this a weekly event so check the Neos discord for more information!





[h3]Hidden Grotto by Sykes[/h3]
A lovely little world for hanging out with friends! The atmosphere is calm and easy on the eyes, so this world is great for watching movies! Nice job, Sykes!



[h3]The Grid by BIOHAZRED[/h3]
Check out this very shiny futuristic world! With mirrored surfaces and shining buildings piercing the sky, this world is great for taking pictures and roleplay!



[h2]What’s Next?[/h2]
With the World UI now working and tweaked and some of the smaller requests out of the way, we’re considering a few smaller, but significant additions. One of them will be the ability to translate the UI into different languages, which will improve accessibility and pave the way for a global translation system in Neos later in the future. We have been looking into the Unicode/ICU libraries and standards and plan to incorporate those.

Another of the additions would be introducing an in-game workshop, utilizing the same subsystems for submitting worlds, because they were designed to handle any types of objects, so adapting them wouldn’t take too much time, while providing a big benefit to the community, making it easier to share, update and find items, tools, avatars and other objects.

Following those additions, we are considering switching the major focus to major optimizations and optimization features, to improve performance with multiple people in the world and make it easier to build more complex environments.

Let us know what you think! We’re always looking for the best direction that will make the biggest impact on both new and existing users and your feedback plays a big role in this decision. Without your support we wouldn’t be able to keep devoting our time to building out Neos and improving it every day.

2020.9.6.1418 - Hotfix for local assets not getting synced into the cloud

Pushing out an important hotfix for local assets (textures, meshes, audio & video) not getting uploaded to the cloud. I recommend updating ASAP, this build is compatible with current one. When you launch, all changed items and worlds since the last build will be resynced, uploading the missing assets from your local database.

[h2]Tweaks:[/h2]
- Potentially fixed missing Anorak badge after recent Cloud API sanitization (reported by @Cyro, @Nexulan | Community Manager and @Veer | Chief Moderation Officer, please let me know if it's still an issue, it's hard to test in isolation)
- Improved server response time detection to prevent cases of random "Slow" messages when it's not actually slow

[h2]Bugfixes:[/h2]
- Fixed local:// assets in record manifest not being uploaded to the cloud and replaced with "neosdb" URL's (based on report by @KierDran and @Shifty | Quality Control Lead)
-- When you launch this build of Neos for the first time, it will force resync for all items/worlds you changed in last few days (since the release of 2020.9.5.1190), making the local assets be uploaded into the cloud
-- The main asset (e.g. world or item description) is unaffected, only associated texture, mesh, audio and video assets would be missing

2020.9.5.1190 - HTC Vive Finger Tracking support (Vive & Index headsets)

The Vive finger tracking support is here! If you have Vive or Index headset, you can now use the headset's camera for finger tracking. It's off by default, so make sure to enable it in the settings.

Sorry for otherwise smaller build, some things took longer than expected to deal with. But there are some more improvements, like ability to set someone's voice to 200%, security/privacy improvements for the Cloud API and bugfixes!

[h2]New Features:[/h2]
- Added support for HTC Vive Hand Tracking (version 0.9.3), which provides finger tracking with the cameras on various Vive headsets as well as Valve Index headsets (requested by @Groxxy, @AlienInArea51 (MR-Alex), @Alex from Alaska, @Cyro, @Hayden (PolyLogiX - ZyroDesign) and others)
-- Currently this is off by default, to enable it go to Settings and check "Vive Hand Tracking Enabled" (note that enabling it for the first time might produce a hitch, this is coming from the SDK initializing itself and can't be avoided)
-- The SDK uses GPU to analyze the images from cameras so there might be a performance impact (this is why it's off by default). Please give it a test and see!
-- The finger tracking is used only when your hand is away from the controllers. Otherwise the controllers are used as source of finger poses.
- Added "MaxSize" to TextureSizeDriver, which allows clamping the maximum size of the driven value (aspect ratio is preserved) (requested by @H3BO3)
- Added ability to set user's local volume to 200%, amplifying their voice locally (requested by @Kal and others)

[h2]Tweaks:[/h2]
- Moved the Context Menu to later render queue for the user owning it, making sure it renders over transparent items in the world (suggested by @Shifty | Quality Control Lead, potentially fixing some cases of invisible menu reported by @Groxxy, @Toxic_Cookie and @sirkitree)
- Sanitized Patreon and ban data on the public cloud API to reduce how much information is given out (based on feedback by @Alex from Alaska and @H3BO3)
- Component Clone Tip now creates undo entries (suggested by @Alex from Alaska)
- Component Clone Tip now uses the bendy laser rather than direct raycast
- Increased line spacing on the user profile facet (suggested by @Zyzyl)
- Changed combination to close worlds in screen mode to Shift+Esc, rather than just Esc to prevent accidental closes (based on feedback by @Earthmark and @Electronus)
- Changed default noise gate to 0.025 (suggested by @Nexulan | Community Manager)
- Added hardware diagnostic information to the log
- Added diagnostic information for errors when decoding cloud variables
- Some more tweaks and bugfixes for the Metamovie

[h2]Bugfixes:[/h2]
- Fixed malformed neosdb:// URL's causing errors when saving world, updating assets and synchronizing items (reported by @Alex from Alaska)
- Fixed Twitch highlighted messages not showing emotes (reported by @Shifty | Quality Control Lead)
- Fixed broken gifted subscription message in the Twitch Chat Dialog (reported by @Shifty | Quality Control Lead)
- Close world modal overlay will now switch to a non-legacy radiant dash screen if one isn't currently focused (this fixes it being incorrectly scaled when opened on the legacy screens, reported by @Shifty | Quality Control Lead and @orange)
- Added a mechanism to OnLoaded upgrade actions to prevent running upgrades on components that have been deleted by another upgrade action, causing exceptions (found in logs from the Metamovie runs by @Avinash | WeMakeVR)

2020.9.3.56 - Twitch Reward events for LogiX, improvements and bugfixes

Sorry for smaller build, I spent a lot of time on a few things today. Investigating the Vive hand tracking (might have it tomorrow, but no promises yet) and ICU MessageFormat for translation framework (no timeline yet, just looking for best way to handle stuff).

I ended up merging our fork of TwitchLib with the latest public one (check #devlog for GitHub links and details) and updating the Twitch integration with new goodies! You can now receive events when viewers redeem rewards with channel points, deletes messages are now deleted in the in-game Twitch chat too and Follow events work again!

There are some more improvements and tweaks for the new World UI as well and related things and some security improvements.

[h2]New Features:[/h2]
- Added experimental Stereo Display support (can be activated using -StereoDisplay argument or through the Launcher) (requested by SPŠSE CB https://spsautocb.cz/)
-- This is untested at the moment and might necessarily not be supported long term
- Added UserPlatform logix node which provides the platform that the input user is on (requested by @Alex from Alaska, implemented by @Coffee | Programmer)
- Added FireOnFalse Logix node (requested by @Rue Shejn | Artist 3D, implemented by @Coffee | Programmer)
- Merged latest version of the Twitch API library with custom Neos modifications (mainly thread starvation fixes) and updated/expanded various API's with new functionality
-- Highlighted messages now show as highlighted in the Twitch Chat Dialog
-- Removed messages will now also be removed in the Twitch chat dialog
-- Twitch chat dialog will now show redeemed rewards
-- TwitchChatMessageEvent now has "IsHighlighted" output for highlighted messages and "Custom Reward ID" for associated rewards
-- TwitchSubscriptionEvent now has IsAnonymous property to indicate anonymous gifts
-- Added "Twitch Reward Redeem Event" node, which fires when user redeems a reward using channel points (includes rward ID, message, reward title, cost and more) (requested by @Rukio)

[h2]Tweaks:[/h2]
- "Freeform Dash" is now persistent across Neos runs (requested by @Cyro and others)
- Folder imports are now named after the folder, rather than just generic "Folder Import" (suggested by @ProbablePrime)
- Cloud API security improvements (based on feedback from @ArkGullwing and @Veer | Chief Moderation Officer)
- Mesh import indicator is now non-persistent (suggested by @H3BO3)

[h2]Bugfixes:[/h2]
- Fixed missing Identity constant for many datatypes (including primitives), causing certain generics to misbehave
-- This fixes the constant vibration when moving Slider (reported by @Linkodemayo#4028 and @Alex from Alaska)
-- This also fixes the default Max value being 0 when instantiating new sliders (reported by @SmolCookie)
- Fixed world Save/SaveAs/Close dialog always working on the focused world, rather than the one it was invoked for through the new World UI
- Fixed screenshots saved using the context menu being marked as hidden when the "Keep original screenshot format" option is enabled (reported by @Shifty | Quality Control Lead and @Turk)
- Fixed video exportables not always being exported with an extension (reported by @Lewi-bean | Audio Designer)
- Fixed TwitchInterface not triggering the follow events (reported by @Turk, @ProbablePrime)