1. Neos VR
  2. News

Neos VR News

2021.3.9.130 - Clicking, Grabbing & Scrolling in new desktop mode

Hello everyone, got another important update to the new desktop mode, you can now grab and click things! It will even pose the avatar hand to make it look more natural. Everything is in quite early state so it's a bit rough and raw, as the focus is more on designing the underlying interaction mechanisms and building them out, but more polish will come soon. Hopefully it should significantly improve the usability of the mode in its current state though!

Sorry there's only few of other things in this build, there's a few bugfixes and tweaks as well, but my main focus was on getting more of the desktop mode going and dealing with some background things.

[h2]New Features:[/h2]
- Added initial version of desktop interaction system, allowing for clicking and grabbing in the new desktop mode
-- Current bindings are as follows (note that these are pre-liminary and will likely change as we go):
--- Left Mouse button / Right gamepad trigger to click/touch
--- Right Mouse button / Right gamepad bumper to grab/hold
--- Delete key to destroy grabbed
--- Insert key to duplicate grabbed
-- The interaction laser is used as a base, with the laser portion hidden and the cursor centered at the screen
-- Please note that this is still in heavy development and a lot more behaviors & polish is coming

- Added initial version of hand interaction posing system, which will pose the avatar hands when interacting with items
-- This provides a visual feedback to other users when a desktop user is interacting (e.g. clicking or grabbing items)
-- Note that currently the posting is still quite rudimentary and will be expanded and polished in the future builds
- You can now use mouse scroll for the in-world interfaces by hovering over them in the new desktop mode
- Added locomotion turn bindings to gameapads (based on feedback of Iforgotwhosorry ;_;)
-- Those are only active while in VR, in desktop mode they're overriden by the camera look controls which turn the player implicitly

[h2]Tweaks:[/h2]
- Added exponentiation (default 4) to gamepad look sensitivity, to allow for better precision with fine movements
- Laser reticle now scales based on the distance from the view for the owner, to make sure it's still legible even when interacting with far away objects
- Screen inputs now update before everything else, ensuring that no behaviors (e.g. avatar IK) lag behind its movements a frame behind
- Added "(for 7 days)" to "Remember Me" option in the login dialog (based on feedback by @drecalen#2829)
-- This is to avoid confusion on users getting logged out after a week of inactivity
- Tweaked update order for laser, fixing cases where the laser would be slightly jittery even when stationary
- VR -> Desktop transition is now skipped if the user is already in desktop mode and starts/joins a new world

- Merged Korean locale addition by @MirPASEC
- Merged Japanese, Esperanto and Chinese locale additions & changes by @Melnus
- Merged Russian locale additions & tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Czech locale additions & tweaks by @rampa_3 (UTC +1, DST UTC +2)

[h2]Bugfixes:[/h2]
- Fixed nametags going semi-transparent when the user is in the desktop mode
- Headless will no longer list and allow focusing of the Userpace world, preventing operations from being executed on it (based on report by @Glitch)
- Fixed headless hanging when running commands with improperly quoted strings and reworked parsing logic to allow for inclusion of quotes in the argument itself (reported by @Glitch)
- LogixTip now uses the bendy laser hit when restoring broken input nodes, fixing cases where custom tooltips would block the raycast when refreshing broken LogiX nodes (reported by @Hayden, @Shifty | Quality Control Lead and @Epsilion)

[h2]Known Issues:[/h2]
- The actual laser offset on the hand is not currently respected, resulting in the laser being bent even at rest and the hand getting into the face when moving item too close
- You can't use context menus properly yet (they'll spawn in incorect location)
- If you equip a tool, desktop interactions might not work correctly
- If you bring item too close it'll get physically grabbed/equipped
- Many more interactions are still missing, please remember that the desktop mode is currently in heavy development

2021.3.5.176 - Crouching, mouse scroll in desktop mode, tweaks, bugfixes & more

Hello everyone, sorry for another smaller build after a while, I'm working on a few things in the background that didn't give any results yet (e.g. switching to the new libVLC, which is giving some more trouble, but so far solvable) and reorganizing things internally - some if it you probably noticed as we moved all Neos related repositories to Neos-Metaverse on GitHub and added a bunch more that weren't public or on GitHub yet.

There's some extra progress on desktop mode in this, mostly smaller additions in this one as well as bugfixes for some issues that cropped up (e.g. the audio output desyncing over time). I'm working on the design and pieces of the interaction system, that's going to be coming soon after.

I've also started cleaning up some more of the existing bugs and issues to improve the general quality of life, the dynamic bone scaling issue is now fixed, as are a bunch of cases of user randomly flying or breaking when gripping and switching locomotions.

[h2]New Features:[/h2]
- Added ability to crouch in the desktop mode (using the C key or the left trigger on a gamepad)
- Added ability to scroll UIX ScrollRect with the mouse scroll wheel
-- This is based on a new general system for UIX canvases/elements receiving axis movement events
- Added support for importing Lights when importing 3D models/scenes (requested by @Elektrospy)
-- To enable, you need to go to Advanced Settings and check "Import Lights"
-- Currently not heavily tested and might need some tweaking. Will output debug info to log
-- The intensity of lights might be too strong or too weak after import, depending on the source and might require to use the LightSource Wizard to adjust after
-- Neos will normalize the maximum light intensity to 1, to avoid extremely bright lights when large units are used (e.g. watts coming from Blender)
- Added Keyboard & Mouse Avatar Anchor bindings
-- Space to release/exit anchor
-- WASD for primary axis and Arrow Keys for secondary axis
-- Space for primary action, Right Control for secondary action
- Added GrabbableHandling and ColliderHandling to BakeMeshes, which allows specifying how are those components handled (based on feedback by @ProbablePrime and @Enverex)
-- IfExists (default) - component is added if it exists on the source or if it's needed (e.g. Grabbable will enforce a collider)
-- AlwaysAdd - component will always be added
-- NeverAdd - component will never be added

[h2]Tweaks:[/h2]
- Moved majority of public (and private) Neos repositories from my personal GitHub account (Frooxius) to organization one (Neos-Metaverse)
-- NeosPublic, NeosLocale and any dependencies can now be found at: https://github.com/Neos-Metaverse
-- More open source forks and custom libraries/wrappers have been published (freetype, FreeImage, msdfgen, Msdfgen.NET, Compressonator.NET, crunch, Crunch.NET and QuantityX)
-- This is also done for better internal collaboration with developers and as pre-requisite for setting up a cloud build pipeline for Neos

- VR eye tracking is now ignored when switched to desktop mode, fixing user's eyes becoming derpy
- Neos now strips RTF tags from a world name when sending it to the Steam Rich Presence (reported by @Shard Wolf#5513 and @Earthmark)
- Updated MTC tutorial text to include information on how to activate the laser for remote gripping (based on general feedback, change provided by @Turk)

- Merged Korean locale additions and tweaks by @MirPASEC
- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]
- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged French locale additions by @brodokk

[h2]Bugfixes:[/h2]
- Fixed mirrors and portals rendering the Overlay layer (reported by @epicEaston197 and @Khosumi)
- Fixed Neos-overriden audio output devices slowly getting more and more delayed over time (reported by @Shifty | Quality Control Lead)
- Fixed user rapidly flying away when gripping on an object in PhysicalLocomotion and switching to a different locomotion (reported by @Shifty | Quality Control Lead, @Aegis_Wolf | Art Director, @Hayden, @chemicalcrux, @Robyn (QueenHidi))
- Fixed user's transform getting corrupted and not syncing anymore when they're gripping on an object that gets destroyed (reported by @Cyro, @June and @Shire)
- Fixed user's transferred rotation getting doubled when gripping onto an object (rotating more than they should) (reported by @Zyzyl, @Rukio, @Princess and others)
-- This could also potentially fix any extra position and scale offsets in some scenarios (e.g. with avatar anchors, as reported by @Hayden)
- Fixed VR headset presence sensor setting user's status to Away even when desktop mode is currently active (reported by @Shifty | Quality Control Lead)
- Fixed dynamic bones getting scaled incorrectly when the user's root space changes while at the same time changing their scale (reported by @Shifty | Quality Control Lead, @H3BO3, @Hayden, @chemicalcrux and others)

Progress on new desktop mode (partially usable), February Community Highlights

Hello everyone, I hope your week went well!

We have some exciting progress to share on the development of our proper desktop mode. Thanks to several additions it has reached its first usable state for VR users for dynamic switching. There's still lots of work to do to bring it to feature parity and allow to use it without needing VR headset in the first place, but it's an important step forward.

If you're in VR, you can currently press the F8 key (this will likely change in the future) to dynamically toggle to the new desktop mode and back. The dash will now be projected directly onto your screen and usable with your mouse cursor, as you would any other application, allowing you to message people, open worlds, join sessions and change settings.

In the settings you will also find new option "Select Audio Output Device", which lets you override which audio device is used for playback. Along with the audio input device and your volume settings, Neos will remember your settings separately for VR and desktop mode, automatically switching them as you toggle between the modes, making the whole process effortless.

Thanks to the new input binding system we've also added gamepad support, allowing you to move and use avatar anchors (e.g. vehicles) with it, whether you're in VR or Desktop. There's a lot more to come as we continue building out more interaction systems and bring in more hardware.

Since it's the end of the month, we have also devoted our Friday livestream to showcasing some of the amazing community highlights from February, including some awesome games that you have created! If you missed it, check out the video below!



[h2]Community Highlights[/h2]

[h3]February Community showcase livestream[/h3]
As is the tradition at the end of the month, we have devoted out most recent Friday livestream to showcasing many of the amazing community creations made this month. We check out many cool interactive items as well as some amazing worlds and fun games! If you missed the stream, you can check out the recording here:
[previewyoutube][/previewyoutube]

[h3]Tamasobi by mohu yan, kinoko_b, Aetoriz[/h3]
This map is quite explosive, literally! A really fun team based competition where you as the user need to take a glowly ball of power and throw it into the other teams goal! Be careful though, the other team can steal the ball and have it hit the roof or ground and reset it. For those wondering how the game plays.It feels a bit like Battle discs but also a little bit like Echo Arena. Give it a try and let the creators know! Thanks mohu_yan, kinoko_b and Aetoriz for the fun map!



[h3]Abandoned Factory Hall by YumYum[/h3]
An eerie quiet map, with a nice sense of aesthetic. Inside the factory you’ll find a place left to the wild, contemplating what used to be here, or what was made. Outside you’ll find there’s more to the complex as it seems you are surrounded by more abandonment. Overgrown roads and walls surround making you think even more how did you get here? Thanks YumYum for the map!



[h3]Slime Springs by Gearbell[/h3]
You enter the cave and experience a particular aroma swelling your senses. Is it Rotten Eggs? Is it Sweaty Sport Socks? Maybe some sort of chemical. Little do you know you’ve found the hangout of the slime people. Of all shapes, sizes, and concoations, those of the slime variety come here to hang, jiggle, wiggle, and bounce with other slimes. Be careful though! I’ve heard tales of travelers entering the slime pools not returning quite the same as they were. Feel less solid as you say. Thanks for the map Gearbell! Also, welcome fellow slimes! I hope you feel at home.



[h3]Moment in the Week[/h3]
Now while creations, maps, tools, and toys get featured on here I wanted to take a moment to feature some of the more special moments of the community. Sometimes they aren’t always being recorded, or being clipped for many to see. Yet, In the process of making his very cursed Teletubbies inspired map. ProbablePrime has somehow managed to get all of us to watch teletubbies for 30 minutes, including “Banned” episodes. As this happened everyone kept adding to the cursed nature of the project, and more hilarity ensued. Thanks ProbablePrime, and thanks everyone who came by to bask and add to the eldritch horror. Only on Neos eh?



[h2]First usable version of Desktop Mode[/h2]
Our official desktop mode has gotten some crucial additions this week that have pushed it closer to a usable state. While we still don’t recommend it as the main way of playing yet (in part because you can’t properly use it without VR yet), it’s getting closer and already offers a way for VR users to switch to desktop for a bit to be able to socialize.

[h3]Screen projected dash[/h3]
One of the important additions was ability to the dash to be rendered as screen overlay, rather than a curved object in-world. Alongside adding a mechanism for pointer interactions (mouse cursor and touch screens), this has made the dash UI usable as traditional desktop UI, allowing you to search and open worlds, join sessions, interact with the contacts system (including sending/receiving messages), interact with UI and also importantly your settings.

While in-world interactions aren’t implemented yet, apart from being able to walk, run and jump, this lets you move around the environments and socialize for the time being when you jump out of your VR headset. Simply press the F8 key to switch from VR to desktop controls and back.

[previewyoutube][/previewyoutube]

Once interactions are implemented and the system has feature parity of the legacy debugging desktop
mode, we’ll remove the old one and make this one the new default for both users with and without VR.

[h3]Audio Output Override[/h3]
If you’re using different audio output for VR and for desktop, this new addition will be very useful to you. Instead of having to manually switch your audio output every time you toggle between VR and screen, simply go to Settings and use the new “Select Audio Output Device” option to change which audio output device to use.

Along with the audio input, noise gate and master volume, Neos will remember those settings for both Desktop and VR mode, automatically switching them for you as you toggle between the two modes.

[previewyoutube][/previewyoutube]

This way you don’t ever have to change your audio settings and you can effortlessly jump between desktop and VR as you play.

[h3]Gamepad support[/h3]
Thanks to our new internal input binding system, we have already added support for gamepads to Neos! You can now use standard gamepads to move around and use avatar anchor inputs, even while in VR!

As we add more interactions to the desktop mode you’ll be able to use tools, build and do everything else that you can do while in VR. We plan to add more different input devices as we go as well and provide ways to expose those to LogiX for scripting.

There’s still lots to do, but we hope that even the in-development versions provide you with some good benefits as we continue to add more functionality, fix bugs and bring the desktop closer to feature parity with VR.

[h2]Making textures tileable, avatar expression improvements and more[/h2]
Alongside the desktop mode we have added a bunch of other smaller features, tweaks and bug fixes as usual. Those include some new processing options for textures, which let you easily make any texture tileable (though quality will heavily depend on the type of the texture) or replace transparency with white or black color.

[previewyoutube][/previewyoutube]

We have also made numerous improvements to Neos’ support for facial tracking, greatly expanding the list of supported expressions on AvatarExpressionDriver and adding heuristics for automatically assigning expressions from blendshapes.

Based on the report from the community we have also improved the security of the local assets, making it harder to get unauthorized access to locally stored data. If you’d like to see all the changes and improvements over the past week, check out the patch notes on Steam or on our official Discord.

----------------------------------------------------

Anyway this is all for this week! We're excited as the pieces of the new desktop mode are falling in places. Now the major missing piece is the interaction system, which will allow you to click and grab items, interact with menus and use tools, weapons and other interactive elements. With those you'll be able to do everything you can in the legacy debugging desktop mode and we'll be able to make a swap.

It's a pretty big system on itself, our next goal is having a base version of it working and then adding more polish to all parts, making things easier to use, look better, removing jank and bugs. If you'd like to see the latest developments, check out our #devlog channel on our official Discord.

And as usual, big thanks to your support! Without it we wouldn't be able to grow this platform and keep going. See you next week!

2021.2.28.1210 - Fixed flickering dash in desktop mode & input system fixes

Just a small patch for a few things so they don't have to wait on a bigger build! Compatible with last build, no need to update right away if you don't need the fixes.

[h2]Tweaks:[/h2]
- Increased sensitivity of gamepad right thumbstick for camera look control

[h2]Bugfixes:[/h2]
- Fixed screen locomotion axis inputs (e.g. gamepad left thumbstick) being normalized, resulting no lack of analog speed control
- Fixed AvatarExpressionDriver heuristic incorrectly detecting lower lips raising as "Jaw Down"
- Fixed gamepad inputs getting stuck when the gamepad is disconnected (reported by @Shifty | Quality Control Lead)
- Fixed the dash in desktop mode flickering when the user isn't at unit scale (reported by @Lyo, @epicEaston197, @Robyn (QueenHidi), @Cyro and others)
- Fixed Neos crashing on startup when running through the native Oculus runtime (reported by @Shadow Panther [RU/EN, UTC+3])

2021.2.28.1002 - Desktop mode progress, Gamepad support, Face tracking, security

Hello everyone and sorry for fewer builds again, I'm still putting what time and energy I have into the new desktop mode and it's a bit tough splitting my focus now. There are several important additions to it, it's now in a state when it should be mostly usable for basic socializing! No interactions yet, but that's next on the menu.

When you switch to the new desktop mode (pressing F8 currently), you can now use your dash with your mouse! This lets you use the messaging system, inventory, world browser and settings! This means that you can now also adjust your microphone for the desktop mode and newly even the audio output device, meaning Neos will automatically switch your settings as you toggle between VR & Desktop!

There's initial bits of other systems too, for example we have initial Gamepad support now! It's only usable for locomotion & avatar anchors now (left and right thumbsticks map to the Primary & Secondary motion inputs), you can use it even if you're in VR.

I'm pushing whatever I have along with other things, because some upcoming things (swapping out the libVLC) I want to run through danger testers first and I don't want that to block some of the other additions, tweaks and bugfixes. There are some improvements to the Neos' face tracking framework, to make setup easier and support more expressions, new feature to make textures easily tileable and more.

IMPORTANT: Note that this build also improves the security of local assets and database. This will run database upgrade process when you first start which might take up to a few minutes (depending on the size of your database). The upgrade/repair process has been made significantly faster though, so hopefully it shouldn't take too long!

[h2]New Features:[/h2]
- Added ability to override audio output device
-- Can be found in Settings on the dash
-- The setting automatically switches between desktop / VR mode, allowing you to configure different audio output for when you're in VR and when in Desktop mode, switching between the two automatically (along with other audio settings)
-- If you won't use desktop/VR dynamic switching, it's recommended to change the audio device in Windows, as this mode potentially adds a bit of extra latency
-- Currently only supported on Windows

- Added initial Gamepad support
-- You can use it to move around in the new desktop mode or even while in VR
-- More interactions to come (e.g. virtual cursor to allow interacting with UI/dash)

- Greatly expanded list of supported expressions on AvatarExpressionDriver (under Users/Common Avatar System/Face)
-- Following expressions were added:
--- Tongue motion: TongueLeft, TongueRight, TongueDown, TongueUp, TongueRoll
--- Combined expressions: GrinLeft, GrinRight, Angry
--- Cheeks: CheekSuckLeft, CheeckSuckRight, CheeckSuck
--- Lip movement: LipRaiseUpperLeft, LipRaiseUpperRight, LipRaiseLowerLeft, LipRaiseLowerRight, LipRaiseUpper, LipRaiseLower, LipLeftUpper, LipMoveLeftUpper, LipMoveRightUpper, LipMoveLeftLower, LipMoveRightLower, LipTopOverturn, LipBottomOverturn, LipOverlayUpper, LipUnderlayUpper, LipOverlayLower, LipUnderlayLower, Pout
--- Jaw movement: JawLeft, JawRight, JawForward, JawDown, JawOpen
-- Grin expression was improved to require user to partially smile, rather than just bare their teeth
-- This will drive the avatar expressions using any supported lip/face tracking technology
- Added semi-automatic blendshape assignment to AvatarExpressionDriver (through inspector button)
-- For assignment to work, it needs to be placed on/above the Slot with SkinnedMeshRenderer
-- Any already driven blendshape are ignored
-- If there are blendshapes for independent sides (e.g. SmileLeft & SmileRight), the unilateral expression (e.g. Smile) is ignored, even if present to avoid potential overdriving
-- Note that you might need to manually add/remove/tweak the expressions after, as detection success heavily relies on the naming conventions of an avatar
-- If you find any blendshapes or problems with heuristics, let us know (ideally with a sample model)

- Added TongueRoll property to the AvatarRawMouthData
- Added AudioOutputDeviceInfo
-- This is analogous to AudioInputDeviceInfo, but for output devices

- Added "Make Tileable" texture processing option, which allows easily making any texture into one that will tile seamlessly
-- You can setup transition ratio (portion of the texture used for tiling)
-- Two simple algorithms are currently implemented - Loop and Mirror. Both bost well with organic textures, rather than rigid patterns

[h2]Work in progress:[/h2]
- Added initial implementation of PointerInteractionController, which handles pointer interactions in desktop mode (mouse cursor, touch screen)
- Added screen-projected overlay rendering to Dash in the Desktop mode
-- You can now use the dash UI when switched to the desktop mode

[h2]Tweaks:[/h2]
- Tweaked the priority issue scoring mechanism to include lifetime support as another score point and represent the score as a normalized value, rather than a raw sum
-- This helps anonymize the data a bit and make the numbers more readable
-- The lifetime support also gives us another datapoint for prioritization, highlighting people who have supported Neos in the past significantly, but are currently on lower pledge
-- votePoints has been replaced by activePledgeScore in the JSON (you'll need to update tools to display the data accordingly)
- Renamed AudioDeviceInfo to AudioInputDeviceInfo
- Improved world/asset data security (based on feedback by @ItsDusty )
- Improved database upgrade/repair process speed significantly
- Database upgrade/repair text now keeps changing every half second to help indicate that the process is on-going
- Added "thm", "thmb", "ind", "mid", "rin", "pin", "pnk" to finger rig detection heuristics (based on feedback by @Groxxy the Eye-Puppeteer)
- Added heuristic for merging multiple animation tracks into a single one when importing models where each individual part has its own unique animation track (based on report and sample models by @Aegis_Wolf | Art Director, @Dante and others)
- Small optimizations in BitmapX bilinear sampling

- Merged Korean locale additions by @MirPASEC
- Merged French locale additions & tweak by @brodokk
- Merged Russian locale additions & tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Japanese locale additions & tweaks by @かず (kazu / GitHub: kazu0617) and @Aesc
- Merged Spanish locale additions by @Ruzert
- Merged Esperanto and Chinese locale additions by @Melnus
- Merged Czech locale additions and tweaks by @rampa_3 (UTC +1, DST UTC +2)

[h2]Bugfixes:[/h2]
- Fixed input groups getting their actions stuck on the last evaluated values when disabled
- Updated version number of the VoiceFacetPreset, forcing the icons to update to the newest ones (based on report by @ohzee, @Lyo, @Hayden, @Kulza and @Shadow Panther [RU/EN, UTC+3])
- Added generic type validation to ValueTextFormatDriver and to prevent instantiation with invalid types (based on feedback by @Cyro)