1. Neos VR
  2. News

Neos VR News

2020.5.8.141 - More Radiant UI laser additions, tweaks and fixes, matrix nodes

Several more additions to new laser (passing through transparent UI areas, passing through to gizmos with developer tool, activating by light trigger press, context cursor icons), more LogiX nodes for working with matrices (packing/unpacking), cone emitter update and bunch of other additions, tweaks and bugfixes.

[h2]New Features:[/h2]
- Added "Laser Passthrough" mechanism and enabled it for some canvases (notification panel, context without middle visual)
-- This lets the laser pass through the canvas collider if it doesn't hit any visual
-- This fixes the laser being blocked by large collider for the notifications, even if only one is shown (reported by @GearBell and others before)
-- This restores the ability to double-click on the world orbs to open them, by the laser simply passing through the middle of the context menu

- Added preferred/allowed hit mechanism for tooltips to allow them to make laser pass through objects if they would hit a preferred target
-- This is now used on developer tooltip, making the laser pass through the object if it would hit a gizmo

- Added context specific cursor system for the laser - grabbables, touchables, sliders and text fields now have their own unique cursor to help indicate the actions
-- Cursor icons made by @Coffee, they're not final versions and will receive graphical tweaks after this initial release

- Laser is now also activated at light trigger touch (based on request by @Shifty, @GearBell, @Turk and others)
-- If you let go without fully clicking, laser will immediatelly go away
-- If you grab object without fully activating laser by clicking trigger and then let go of trigger, you will hold the object without the laser being shown (this actually came as a side-effect of the implementation, but it seems interesting, so let me know how this feels)
- Added more LogiX nodes to work with matrices (requested by @Earthmark, @Zegopharo, @H3BO3 and others):
-- Pack/Unpack Rows/Columns (allows constructing/deconstructing matrices from vectors)
-- GetElement (returns element at specific row and column)
-- Transpose
-- Constructing matrices: TRS (Position, Rotation, Scale), RotationScale, Rotation, Scale
-- Decomposed Position/Rotation/Scale

- Added "Flash Root" output to the Flash Highlight Hierarchy, which allows custom actions performed with the highlight visual (e.g. deleting it early)
-- By setting the duration to infinity, this can be used to keep the highlight active indefinitely and delete it when desired (requested by @SHFR_H a while back)
- Added "DirectionReferencePoint" to ConeEmitte and SphereEmitterr, which allows adjusting the reference point for particle emit DirectionCenter
-- For new instances of ConeEmitter, this is set to [0; -1; 0] by default, making the particles emit along the direction of the cone from the tip(requested by @Enverex)
- Added ConstantSlerp (requested by Ifrogotwhosorry ;_;)
- Added a mechanism that auto-updates default locomotion icons (new icons to come soon, let me know if this resets your custom icons)

[h2]Tweaks:[/h2]
- Laser will now color itself green when it hits a custom interaction target (e.g. tool interaction target and other objects that are not grabbable or touchable)
- Added auto-respawn when the user transform becomes corrupted (Infinity/NaN) or goes too far (more than 1e5 units in any direction)
- Hidden the source of the orange (requested by @Coffee)
- Upgraded to Unity 2019.3.13f1 (from 2019.3.12f1)

[h2]Bugfixes:[/h2]
- Fixed asset variant system failing to generate RawRGBA variants for input textures with more than 8 bits per channel (e.g. 64-bit PNG) (based on report by @Enverex)
- Hardened permission system verification for inspectors and other building UI's (based on report by @ProbablePrime and @LeDrascol)
- Fixed avatars being equipped when clicked with a tool (reported by @ProbablePrime)
- Added guards against invalid laser smoothing parameters to prevent the lasers from breaking (based on report by @Shifty)

2020.5.7.192 - Radiant UI laser additions, tweaks, improvements, context menu

Lots more improvements to the laser and full integration with the context menu. Both laser and context menu now render through objects. Laser now has a cursor, with both smooth and immediate position visualization. Tools now properly utilize laser and interact more tightly. Various other additions, improvements and bugfixes as well, both to the laser and other things.

[h2]New Features:[/h2]
- Context Menu now always renders over objects together with the laser, making it easier to interact with, allowing to destroy/duplicate held items with large colliders or meshes that obscure it
- Added laser cursor visual and a direct "ghost" cursor, to provide better visual feedback
- Added "Overlay" and "Overlay Tint" parameters to UI materials (Unlit, Text & Circle Segment), which allow tinting the visual if it's behind another object
- Tools now use the new interactive laser to get their interaction target
-- This ties the new system better and also improves performance by reducing memory allocations and physics queries (old system was pretty inefficient)
-- Folowing tools were updated: Developer Tip, Material/Mesh Gun, Color Tip, Grabbable Setter Tip, Character Collider Setter Tip, Interactive Camera Object Exclude Tip, Mesh Visibility Toggle Tip, Object Slicer Tip, Rig Transfer Tip, Wiggler Tip
-- Let me know if I've missed any tools that don't behave properly

- Added support for setting vertex color to all 4 vertices on QuadMesh
- Added ability to configure deadzone for trigger using the Config.json next to Neos.exe (requested by @GONT_3)
-- Deadzone can be defined like this:
{
"inputs" : {
"triggerDeadZone" : 0.05
}
}


[h2]Tweaks:[/h2]
- Tools can now have mechanism to define their own interaction targets (by default any objects), preventing the laser from not targetting objects that they might interact with and sticking to the wrong ones
- When scaling object the second laser now sticks to the point on the object that it was grabbed at
- Tweaked parallel looper for physics engine to help prevent physics exceptions from potentially crashing whole Neos
- Added session name (256) and description (16384) length limits to improve security (based on feedback by @LeDrascol) as well as extra session info validation on the cloud
- Hyperlink component now also listens to IButton events, letting you place it directly on the same slot as a button component (e.g. in UIX) to open hyperlinks (implemented by @Coffee)
- Added more reference nulling when disposing of synchronization elements to help prevent potential memory leaks
- Upgraded to Unity 2019.3.12f1 (from 2019.3.11f1)
- Removed deprecated ImporterTip
- Removed deprecated ObjectRenderTip

[h2]Bugfixes:[/h2]
- Fixed new interaction laser activating and snapping to objects marked as physical grab only (reported by @Hayden (PolyLogiX - ZyroDesign))
- Transitioning from laser grab to physical will now supress released events, fixing cases where the object would try to snap to snappers, grabbable receiver surfaces and so on and get displaced (discovered by @RueShejn, reported by @Shifty)
- Reimplemented support for raycast portals with the new laser system, fixing the world browser in the hub not being interactable (reported by @pek)
- Fixed not being able to drop assets/references to inspector and other UI's when they're held with the laser (reported by @Shifty)
- Reimplemented item shelf placement behavior to behave as the old one (based on feedback by @Anomalous, @ProbablePrime and @Shifty)

2020.5.6.44 - Laser smoothing settings, tweaks and bugfixes

Adding settings for the smoothing parameters due to popular demand. Also a bunch of tweaks and bugfixes for the new lasers based on feedback, as well as some bugfixes and tweaks. I apologize that I haven't addressed more stuff today, I know there are still some bigger bugs and issues, I will do more tomorrow.

[h2]New Features:[/h2]
- Added laser smoothing settings to the old Settings dialog (based on requests by @PeterTheThinker, @Coffee, @Shifty, @DeliriousJax, @Zane, @H3BO3, @Turk and others)

[h2]Tweaks:[/h2]
- New laser will now slightly penetrate colliders to search for a potential touchable target
-- This improves interactions with many interfaces a buttons, preventing scenarios where the buttons would not get clicked (reported by @Veer, @Lewi-bean | Audio Designer and @H3BO3)
- Lasers are now hidden for other users when they have no interaction target (they're gray/white) (based on feedback by @Nexulan, @GearBell, @DeliriousJax, @Shifty and others)
- Reworked the CSAudio Input Driver to start/stop capture on another thread, preventing brief UI freeze when switching audio devices
- Removed TouchMethodNameTrigger
- Tweaked the new laser smoothing defaults (based on feedback by @PeterTheThinker, @Coffee, @Shifty and others)
- Private UI panels can now be destroyed/duplicated with the context menu again (reported by @PeterTheThinker)
- Added haptic feedback when transitioning laser grabbed item to physical grab
- Tweaked double-grip to equip logic to prevent need for tripple grips in some cases, causing confusing behavior (discovered by @Shifty)

[h2]Bugfixes:[/h2]
- Fixed some Neos API requests potentially not going through on some networks due to the new redirect blocking
- Fixed not being able to reset scale after user's scale is changed by other means (e.g. shrink ray) (reported by @Shifty and @Nexulan)
- Fixed Color tooltip sampling the laser color (reported by @H3BO3)
- Added automatic reinitialization to CSCore audio input driver, fixing cases where voice would stop due to brief disconnect or error with audio capture (reported by @Max The Hybrid, @Aegis_Wolf, @alex derpy avali 🐦 and @Shifty)
- Fixed ContextMenuItem throwing exception when it's corrupted and missing some references (discovered in log from @Electronus)
- Fixed raycast portals not working with raycast touch sources (reported by @pek)
- Put a far distance limit on sliding grabbed items, to prevent them from sliding to infinity and causing potential crashes (particularly when user is attached) (reported by @Lewi-bean | Audio Designer and @Ryuvi)
- Added block for locomotion input immediatelly after pulling a laser-held item into a physical grab (reported by @H3BO3)
- Fixed transitioning from laser held item to physical grab by pulling it close not working when no tooltip is equipped
- Fixed non-IK avatars not being equippable after being created (reported by @Shifty)

Radiant UI (wiggly) laser system, New Virtual Camera, 2nd beta anniversary!

Hello and welcome to our weekly update!

It’s a day late, but for a pretty good reason. We’ve released another piece of the new Radiant UI - the laser system, the new virtual camera is out as well and it’s Neos’ second birthday as beta! It’s been two years since we first released Neos on Steam and a pretty wild ride!

The new laser system gives you a lot more control and fluidity when interacting with interfaces and grabbing things, with smoothing and snapping behavior for better ease of use and several other benefits. Read more for details!





[h2]Radiant UI Laser System[/h2]
Following the new context menus and gripping system, the laser is the last piece of the core world interaction UI being replaced as part of the UI/UX overhaul. These three elements form the foundation of interactions in Neos worlds and have been redesigned together to allow for better ease of use, remove common beginner frustrations and allow much more flexibility going into the future.

First obvious difference is that the lasers are now wiggly! The end has a subtle smoothing effect depending on how fast you move your hand, to give you more precision and better sense of physicality. This helps with shaky hands when interacting with the UI panels or when trying to place grabbed objects. They will also automatically snap if there’s no other object, making it easy to grab or click small elements.

The lasers will also no longer activate on their own (unless interacting with a private UI), but are explicitly activated/deactivated by pressing the trigger. This allows for better immersion and avoids accidental grabs or clicks.

They work with the new context menus as well. The menus will no longer open in awkward positions with certain items and the laser cannot be blocked by other objects when interacting with the context menu, rendering through any object (the context menus will soon do that as well).

[previewyoutube][/previewyoutube]

Another improvement thanks to the rework is that messing up the world or avatar you’re currently in won’t block interactions with your private UI anymore! This prevents situations where users might get stuck due to a giant collider or breaking their avatar.

And as a cherry on top, they are more performant as well. With the old system, each user had to calculate everyone’s lasers hit targets on their own end and the system was performing a lot of relatively expensive hierarchy scans for interaction components, but that’s no longer needed with the new system.

There is still a lot more to come with lasers, both in upcoming days and in the future. See the What’s Next section to know what’s still cooking!

[h2]New Virtual Neos Camera is out![/h2]
In other news we’ve also released the new Neos virtual camera to the public! Apart from a visual redesign, it offers new UIX based touch display, allowing you to adjust the resolution (1K, 2K, 4K and 8K), camera mode (standard, stereo photo, 360 and object cutout) and newly also set of filters (you can even add your own!) and other features and effects (frustum, light, over-head display, timer and screen space reflections).

You can find the camera in Neos Essentials in place of the old one. There are still a few quirks to work out, but it should be good to go! Feel free to customize it and make it your own as well.

On our last livestream, we took this camera for a spin and took a bunch of photos around various worlds:

[previewyoutube][/previewyoutube]



[h2]Danger Testers - help test big changes early![/h2]
We couldn’t be talking about the new laser system without mentioning our Danger Testers! It’s a group of volunteers on our official Discord server that helps test and provide feedback on major changes like this early on, to make sure they are polished enough for first release and any major bugs get caught before going live.

If you’d like to join, ask a Neos Team member to be assigned the role on our Discord and watch the #testing channel! It is open for everyone, so even if you’re not part of the group you can help test, but by having the role you get a ping anytime there’s something to test.

Here’s special thanks to people who helped test and provided their feedback for initial release (not in any particular order):
PeterTheThinker, Coffee, Turk, .bat, Hayden (PolyLogiX - ZyroDesign), Railu The Avali, DeliriousJax, Shifty, Alex from Alaska, H3BO3, Kal, Zane, Cyro, Abysmal, ohzee, alex derpy avali 🐦, Snooper Fox and Lewi-bean.

[h2]Neos Beta second anniversary[/h2]


Today on May 4th 2020, it’s exactly two years since we first released Neos VR on Steam. It’s been a crazy ride and awesome experience seeing the community build and our support to grow.

It’s thanks to that support that we’ve been able to continue working on making Neos better every day for the past two years and develop it into a mature social VR platform, with many unique abilities and support for a wide variety of hardware.

And even more importantly a passionate and creative community, who spends every day in Neos hanging out and building awesome things! You are what breathes life into this platform and we’re very grateful to have you here and to be able to work on building the future of the metaverse together.

It's been amazing seeing the platform grow from barely few user online, to consistently 40-60 concurrent users every day! I can't wait to see where we're going next.

As a memento, here’s our original beta release trailer. It’s currently hidden on YouTube, but it’s a good reminder of how far we’ve come, featuring the old infamous ā€œjello IKā€ and funnily a short clip of Neos 4 years ago in its alpha stage:

[previewyoutube][/previewyoutube]

There’s still some maturing to do, but with the progress on the new UI and some more upcoming major features we are now close to Neos having all the core features we wanted and opening doors for many high level ones, building on top of a well rounded system and bringing it to the level of creation that we originally developed as tech demo concepts back in 2015:

[previewyoutube][/previewyoutube]

[h2]What’s Next?[/h2]
There are still some additions to the laser that will be added in the following days. Mainly a cursor and some polishing for visuals and having the new context menu render through objects as well.

We’ll be polishing some behaviors as well and fixing and adjusting any more problems based on feedback. It’s never late to provide more, so either post in #bugs-and-feedback or make an issue on our official GitHub if you find a bug!

With the context menus, gripping system and new lasers replaced, we can start working on the biggest part of Radiant UI - the Facet system and new dash! This will be one of the most exciting parts, as it will seal the deal on the new UI system and open doors for heavy customization.

Thank you for reading the weekly update and thanks again for your passion and support for this project! We wouldn’t be able to do this without you!

2020.5.4.1227 - New Radiant UI smooth (wiggly!) laser system

It's wiggle time! Another piece of Radiant UI is out! :smile: The laser system has been redesigned and reworked to allow for better and smoother control, more intuitive and immersive interactions and allow for more extensibility into the future! This is only the first release version, there's still a fair bit more to come!

Special thanks to our @Danger Tester group for providing crucial feedback and bug reports before this went live, to ensure smoother roll out. Thanks to @PeterTheThinker, @Coffee, @Turk, @.bat, @Hayden (PolyLogiX - ZyroDesign), @Railu The Avali, @DeliriousJax, @Shifty, @Alex from Alaska, @H3BO3, @Kal, @Zane, @Cyro, @Abysmal, @ohzee, @alex derpy avali 🐦 and @Lewi-bean (I hope I didn't miss anyone ^^; )

There's a bunch of other tweaks and bugfixes as well for other things as usual, I got a bunch more in the queue so they'll likely get included in the next build! If you're waiting on a bugfix, addition or tweak that I confirmed, don't worry it should come soon!

[h2]New Features:[/h2]
- Added new Radiant UI interactive system, replacing the old lasers!
-- They're wiggly! The lasers use variable smoothing to provide more precision and control when interacting with UI and grabbing objects
-- They will stick to the last interacted object up to certain distance, making it easier to interact with small or thin objects
-- They render through objects and pass through when necessary, fixing cases where the context menu could not be interacted with because it's blocked (the context menu rendering through to follow)
-- They are now explicitly activated by pressing trigger, allowing to bring them up anytime. Pressing trigger again when there's no interactive object will immediatelly hide them again. This allows for better immersion in worlds
-- The system has been redesigned to be more flexible and performant, avoiding certain expensive hierarchy lookups every frame or on certain interactions
-- It also uses streams to synchronize user's laser positions now, preventing each user performing local raycasts for each laser of every user in the world. The raycasts are also skipped locally when lasers are off
-- Userspace laser now takes precedence and is independent of the world-laser, fixing issue where a big collider or corrupted avatar prevents interacting with private UI
--- If the position and direction are close enough to the world laser, they will match, otherwise it will use the default laser position/direction for userspace

- User Scaling is now disabled by default and can be toggled via the context menu when at normal scale (will later be moved into a Facet)

- Added "StartPointColor" and "EndPointColor" properties to BentTubeMesh
- Added "AcceptExistingTouch" to canvas, which lets control whether it accepts already active touch (e.g. pressed trigger) that has been originally activated outside of it

[h2]Tweaks:[/h2]
- Renamed properties on RawDataTooltip - _isTipPointing -> USesLaser, _touchBlocksTip -> BlockPrimaryWhenTouching, _usesSecondary -> UseSecondary, _canUseWithoutEquip -> AllowUseWhenHolding
- Added more reference/event cleanup for CommonTool and UndoManager to avoid potential memory leaks
- Added mechanism for immediate mesh update scheduling, improving latency of some mesh updates and reducing a bit of overhead (new lasers & UIX canvases)
- Some optimizations in segment-based procedural mesh generation
- Performance a reliability improvements for cloud MIME type detection for various assets
- Added support for AVI for the MIME type detection
- Security improvements on the cloud
- Disabled instances of SearchBlock are now ignored
- Disabled following Http Redirects for GET/POST string nodes to improve security (reported by @Earthmark)
- When holding objects in userspace, the joystick/touchpad will not be used for locomotion in the world now (@Abysmal)
- Removed old Physical Mode (this will be replaced by new system, the new scaling toggle is meant to cover in the meanwhile)

[h2]Breaking Changes:[/h2]
- AvatarEquipBlock now must always be attached on the root of the avatar to work

[h2]Bugfixes:[/h2]
- Fixed incorrectly calculated sweep bounding boxes when performing convex sweep against mesh colliders in BEPU Physics
-- This potentially fixes passing through the environment mesh colliders when falling or moving too fast
- Fixed some WAV files not getting correctly recognized as audio file and consequently not playing as a result (reported by @Medra, investigated by @Shifty)
- Fixed some image assets not getting correctly classified in the cloud, causing asset variants to not be generated for them, costing more bandwidth, memory and performance (reported by @Enverex)
- Removed deprecated TouchType for tooltips
- Fixed RawDataTooltip sometimes incorrectly triggering, when the trigger is blocked due to an update order
- Fixed the center circle on the context menu not updating the color/icon immediatelly (reported by @Hayden (PolyLogiX - ZyroDesign))