1. Neos VR
  2. News

Neos VR News

2020.12.18.33 - Desktop access in Neos dash, OWO vest support, tweaks and fixes

Hello! Sorry for the lack of builds recently, I haven't been feeling well lately so work was slow (plus I played some Cyberpunk), but here's a build with a new feature I wanted to add in a while - you can now use your desktop from within Neos dash! Interactions work, virtual keyboard works (including custom ones) and there's even mode where it auto-switches screen based on where your mouse cursor is (it's always annoyed me picking up a controller to switch screens in SteamVR dash). It's still rough around the edges a bit, but should be a good basis.

Neos now also has native support for the OWO Game electro-haptic vest (https://owogame.com/) thanks to a devkit provided by the team, with some extensions to Neos' haptic volume system to better map to different sensations the suit provides.

A bunch of other additions as well, new UIX layout component, and some smaller useful things and diagnostics for the voice streams. This build has a few important bugfixes as well that should fix some session crashes and other problems as well.

[h2]New Features:[/h2]
- Added in-game desktop access, allowing your to view and interact with your desktop from within VR on the Neos dash
-- You can view and switch between any of your screens and use your lasers and in-game keyboard to interact with them
-- To switch to another screen or show the virtual keyboard, point at the screen and press the Menu button (one that normally opens context menu)
-- Custom virtual keyboards (including Unicode input) are supported as well. Modifier and function keys (e.g. Win key, F1, F2, F3, F4...) will be passed correctly as well if you add them to your custom keyboard
-- You can enable "Follow Cursor" mode, which will automatically switch active screen to the one where the mouse cursor currently is (this is to allow easy use when using physical keyboard and mouse with multi-monitor setup)
-- This is initial support, more behaviors and tweaks will come (e.g. scrolling with touchpad/joystick, right clicking, better cursor behavior and so on)
-- You cannot share your desktop to other users yet, that is a separate feature that will come at some later point in the future

Desktop support is provided by several building block components, which can be used to create your custom setup as well. Note that most of these only work in Userspace for security reasons.
- Added DesktopTextureProvider, which provides desktop texture of display with given index
- Added DesktopInteractionRelay, which relays in VR inputs (laser clicks and virtual keyboard) to the system
-- In order to relay the inputs, this component needs to have an active focus
- Added DesktopDisplayLayout, which generates UI rects from a template based on your physical display layout
- Added DesktopControlDialog which provides controls for switching active display and other options
- Added DesktopController which combines above components into full interaction system
- Added initial support for OWO Game haptic vest
-- To enable the support, pass -Enable_OWO argument at startup with the IP of the server for interfacing with the suit
-- When no sensation hints are present, the driver will map one of the sensations based on its type and intensity
-- To use specific sensation type, use a sensation name prefixed with "OWO.", e.g. "OWO.MachineGunshots"
- Added list of haptic sensation hints to HapticVolume
-- This allows triggering specific predefined sensations with certain haptic devices. If the device doesn't understand any of the hints, they'll be simply ignored and generic mapping used
-- Currently it hints are only used for the OWO haptic vest, bHaptics uses generic continuous mapping

- Added FixedRectFitterLayout UIX layout component
-- This component will take all the child RectTransforms with fixed size and position (using OffsetMin and OffsetMax) and fit them within the parent rect without changing their relative positions and sizes
-- You can also selectively disable Shrinking and Growing of the fixed size
-- Additionally you can determine how will the child rects fit into the parent one:
--- FitLongerSide (will ensure that the child rects are fully contained)
--- FitWidth
--- FitHeight
--- Stretch (will not preserve aspect ratio and make sure the children rects fully fill the rect on parent axes)
- Added HorizontalStart and HorizontalEnd to SphereAligner, which allows adjusting the mapping range to a horizontal slice of the sphere (requested by @AlienInArea51 (MR-Alex))
- Added "IsBatteryCharging" property to the controller nodes, which indicates of the controller is currently being charged
-- Note that with Oculus runtime this is not supported at all, as they don't provide API to check the status. Currently it'll only work with SteamVR for controllers that report this state
- Added HPReverbController node, for accessing the raw values of the HP Reverb G2 controller (based on request from @Rue Shejn | Artist 3D)
- Added hideFromListing command to headless to allow setting whether the world is hidden from listing or not (requested by @Raith (CytraX))
- Added mechanism for touchables (including UI canvas) to intercept the context menu action and open a custom one
-- Currently this is just internal and no way to use this directly
- Added packet loss detection mechanism for voice streams to help diagnose choppy voice issues (based on report by @Shifty | Quality Control Lead, @Zephyr.С, @Zane and @Hayden (PolyLogiX Studio))
-- This information is now accessible through AudioStreamMetadata, which now reports total number of packets, total lost number, last lost and loss ratio
-- The inspector displays this information as well. The graph now has a new cyan line indicating packet loss

[h2]Tweaks:[/h2]
- ModalOverlay now has CloseOnContextMenuAction, which will allow it to be closed using the context menu action
- Locale postprocessor now generates missing keys file for each locale individually, rather than one large file for better organization ()

- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Korean locale tweaks and additions, including Steam store translation by @MirPASEC
- Merged Spanish locale tweaks and additions by @Ruzert
- Merged German locale additions by @Bluigi
- Merged Polish locale additions by @art0007i
- Merged Russian locale tweaks and additions by @Shadow Panther [RU/EN, UTC+3]

[h2]Bugfixes:[/h2]
- Fixed deleted world/item recovery process breaking and producing corrupted archive containing only some of the items (based on report by Kazu)
- Fixed issue where database repair process would fail due to the corrupted database containing duplicate entries with the same unique key (based on report by @sirkitree)
- Fixed invalid access to already disposed resources when marking changes on objects that were simultaneously deleted by another user, resulting in a world crash (encountered/reported by @Medra, @Cid and others)
- Fixed invalid material property assignment in the Assimp.NET wrapper, resulting in any non-texture properties getting lost during model export process
-- This fixes material color being lost on export (reported by @tutinoco#6130)
- Fixed the tilt of italics glyphs being calculated incorrectly, making the glyphs tilt less the more they extend below baseline and resulting in inconsistently tilted glyphs (reported by @Alex from Alaska)
- Fixed incorrect check if point is inside an IntRect when the rect has a horizontal offset
- Fixed rendering camera to texture not reseponding the UseTranformScale property (reported by @Coffee | Programmer)
- Fixed grabbing slot reference randomly breaking if the Slot has been just destroyed (reported by @chemicalcrux)
- Added a guard against exceptions in touch grabbing system causing the player to be respawned (reported by @chemicalcrux)
- Fixed interactive camera breaking, corrupting the data model and causing random crashes when locally deactivated (e.g. using a world culling system) (reported by @Earthmark, @Rukio, @Shifty | Quality Control Lead, @Tatsu Kimiero, @Snooper and @Princess)

[h2]Known Issues:[/h2]
- Portrait mode screens currently won't work correctly

Creator Jam Winter Holiday Party, Amadepolis VR Opera Concert, Neos Festa 2

Hello everyone and welcome to another weekly update!

This week we have some major community highlights and announcements for you. The Creator Jam is putting together a Winter Holiday party with gift exchange on December 20, details are below if you’d like to participate.

This Saturday also saw two notable events. The content creator festival “Neos Festa” by the Japanese community has officially opened with many amazing exhibits and we saw the first opera concert held in Neos, featuring the Amadeus Artists from Vienna. If you missed the live streams you can check it out below!



[h2]Creator Jam Winter Holiday party[/h2]
The weekly community-held Creator Jam is planning a holiday party later this December with a gift exchange. If you’d like to join in, check out the official announcement:

Originally posted by Medra
Hello everyone!
The holidays are almost upon us ...so it's time for:
Creator Jam's Winter Holiday Party #2

Sunday, December 20
Starts at 2PM EST(UTC 19:00).

Come hang out at our yearly Winter party exchanging gifts, dressing up, and enjoying each other's company.

There will be a gift exchange held at 2:30PM EST(UTC 19:30).
Anyone that brings a gift can participate in the gift exchange.

Have a gift but don't want to participate, feel free to give gifts to specific people or everyone :)

Everyone is welcome.

I look forward to seeing all!

Here are some photos from the last year's event!

(also this doesn't lag as much anymore thanks to the audio system optimizations!)

[h2]Amadepolis VR Opera Concert[/h2]
Saturday also saw another notable event, an unprecedented concert with opera singers, presented digitally through Neos VR to a live remote audience. This event combined mixed reality capture of the opera singers with thematic virtual environments.

The event was viewed by a live audience in Neos VR as well as streamed live on YouTube. If you missed it, you can watch the recording below, it’s definitely worth a watch, including some of the afterparty.

[previewyoutube][/previewyoutube]

This is an amazing achievement by everyone involved and not only a way to bring art to the audience safely during the pandemic, but to also expand it with virtual elements that wouldn’t be possible in real life.

Here are the official credits for the artists and the production team that put this whole experience together:

[h3]Live Moderation:[/h3]
Neivi Martinez

[h3]The Artists:[/h3]
Penelope Kendros - Soprano
Laura Olivia Spengel - Mezzosoprano
Cornelia Sonnleithner . Contralto
Neivi Martinez - Soprano
Timothy Jon Sarris - Tenor

[h3]The Accompanists:[/h3]
Elisa Mazorati
Alice Chang
Byron Zuang Yue
Evgeni Ganev

[h3]Production Team:[/h3]
Sid R. Sittner - Art Director and VR Expert
Konrad Gill - Co-Production und VR Expert
Neivi Martinez - Executive Producer & Artist Management

[h3]Special Thanks:[/h3]
Niederösterreich 3D - Monuments of Amadeus & Beethoven
Marcin Lubecki - 3D Anfitheater
Outallectuals -Intro/Outro Theme - Afterparty Music
Rite of Community by Potzman - Rites of Calling- Download under: https://outtallectuals.bandcamp.com/album/rites-of-calling-ep-outta055

The event was realized in cooperation with Amadeus Artists Vienna, ViARsys and Neos The Metaverse.

[h2]Neos Festa 2[/h2]
This Saturday the Japanese community has opened the second Content Creator Festival dubbed “Neos Festa”. You can now visit the world in Neos and check out all the amazing submissions both by the Japanese and international community, with each submission taking the form of a booth.

In the world you can find a stylish UI both in Japanese and English, which allows you to open individual booths as well as filter them by category, provide descriptions and links to authors' websites or Tip Jar and of course opening the booth itself.



You can have multiple booths open at once, but the system will automatically close them as you go, keeping the system resource usage low and the world running smoothly. The world’s architecture was designed by GONT_3 and komashiba, with LogiX and UIX by orange and rhenium and logo by coreless. The project is also utilizing the 3rd party Neos .js API client by Bitman.



We recommend visiting the world and checking out all the submissions yourself, ranging from cool worlds, item exhibitions, gadgets, utilities and even playable games. If you missed the opening event, you can watch the recording here:

[previewyoutube][/previewyoutube]
You can also follow the event on Twitter under the #NeosFesta hashtag.

We’re very happy to see more events like this, celebrating the creativity and freedom of expression in Neos VR across the international communities.



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

This his all for this weekly update. Thank you everyone for reading and big thanks to everyone for your creativity and hard work making all of these amazing events happen in Neos! See you the next week with more Neos news.

2020.12.9.819 - Headless ban by name/ID commands, audio stream diagnostics

Sorry for another small build, just a few additions. Mainly ability to ban users on headless without them having to be present and some new diagnostics for audio streams to help gather data for voices being choppy. Made some tweaks to the PatreonSkyController as well, so it displays better now!

[h2]New Features:[/h2]
- Added banByName and unbanByName commands to headless, which allow (un)banning user by their Neos username without them having to be present in the session (based on request by @Shadow Panther [RU/EN, UTC+3])
-- Make sure you have the correct name before using this, using their UserID is preferable (you can get it from logs)
- Added banById and unbanById commands to headless with same functionality as above, but using UserID instead (starting with U-)
- Added NormalizedStart and NormalizedEnd to SphereAligner, which allows aligning the items to a section of sphere
-- Default is 0 to 1, but for example 0.5 to 1 will map to the upper hemisphere
- Added AudioStreamMetadata (under Assets/Utility) which provides diagnostic information for an audio stream
-- All the information is local and will likely be different for each user
-- It provides buffer state (unread samples, missed (underrun) samples and so on)
-- It provides encode state for user owning the stream (samples vailable for encode, frame size and more)
- Inspector for AudioStreams now shows diagnostic information as well as diagnostic graph to help diagnose issues (based on report by @Zephyr.С and @Shifty | Quality Control Lead)
-- The graph shows number of unread samples (white) and number of last missed samples (red)
- AudioStreams now support adjusting the buffer size, rather than using a fixed one

[h2]Tweaks:[/h2]
- PatreonSkyController will now use SphereAligner instead of random positioning to ensure better spacing of Patreon names and pictures
-- By default it uses a the upper hemisphere, but the range is configurable in case you want to set it up in your world (based on feedback by @Veer | Chief Moderation Officer)
- PatreonSkyController now shows all eligible Patreons, rather than just a fixed random subset, the order is randomized on every load / enable/disable

- Merged Dutch locale additions (including MTC 2.0) by AnotherFoxGuy
- Merged Spanish locale tweaks and additions by @Ruzert

2020.12.9.60 - Fixed large videos not downloading from the CDN

A small priority patch to unblock issue with an upcoming event. Compatible with current build, no need to update right away if you're not affected by this issue.

[h2]Bugfixes:[/h2]
- VideoTexture will now use the Video CDN for downloads as well, instead only streaming the video, fixing issue where video files above certain size would fail to download when regular CDN is used (reported by @VRxist, @Cid and @Neivi)

2020.12.8.638 - Controller Battery Level access in LogiX, virtual haptic sampler

Sorry for smaller build, hopefully there are some useful goodies! You can now create virtual samplers for the haptic system for testing or building NPC's with them (and I imagine many other use-cases), you can now access your controller battery level with LogiX and there are new options exposed on the VideoTexture provider for loading videos from online services.

The eye tracking and Oculus SDK's were updated as well and this build also has a regenerated precache, so the new MTC loads quick for new users. There are a bunch of other smaller tweaks and bugfixes as well.

[h2]New Features:[/h2]
- Added "VirtualHapticPointSampler" (under Input/Haptics) which samples and outputs the haptic sensations in the environment (based on feedback by @guillefix)
-- This can be used for testing the haptic system of building virtual NPC on top of it, that are able to "sense"
- Added "Battery Level" property to all controllers (accessible through Standard Controller or specific controller nodes) (requested by @emiru)
-- Battery level is reported in range 0...1
-- Negative values mean that battery level isn't available
-- Note that not all controllers/API's might support getting the battery level. Even though the property is available
- Added MaxWidth and MaxHeight optional overrides to VideoTextureProvider, which will try to load variant that doesn't exceed given size (requested by @LeDrascol)
-- Currently this only works with online streaming services, as other video assets don't have variants generated at this point (this will likely change in the future)
-- When both of those are null, online services are implicitly limited to 1920x1080 for stability. By setting either one of those you can increase the limit (e.g. force it to load 4K YouTube videos assuming a valid stream is available)
- Added "Prefer Audio Only" to VideoTextureProvider, which will try to pick audio only versions when loading media from a streaming service (e.g. YouTube) (requested by @LeDrascol)
-- Note that this is subject to availability of the streams and accuracy of extracted listing of the streams. Some streams that report no video actually contain a low resolution video data anyway

[h2]Tweaks:[/h2]
- EnumInput`1 LogiX node now uses the new generic type preset selection (based on report by kazu0617 on GitHub)
- Added several more common enum types to the presets for enum nodes
- Categorized some uncategorized components (including most suggested by @Alex from Alaska)
- Conformed all UI icons/sprites to 256x256, reducing memory/VRAM usage on some that were 1024x1024
- Upgraded SRAnipal SDK (Vive Pro Eye & Lip tracking) to v1.3.1.1 (from v1.3.3.0) (new version notified by @Danyy59)
- Upgraded OVRPlugin (Oculus SDK) to 1.55.0 (from 1.52.1)
- Regenerated Precache data to include the new MTC and fonts for quick loading for new users
- Moved NeosClassroom configuration file location to the app folder, rather than root on Quest
-- This fixes access denied exception on Quest 2 despite being granted access permission (reported by @Karel | CEO)
- Lasers now start in disabled state, preventing their unitialized visual being shown if the controller is disabled (based on feedback by @Ralii The Avali)

- Merged French locale additions, tweaks and formatting cleanup Python script by @xqua
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Polish locale additions by @art0007i
- Merged Russian locale tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale additions and tweaks by @MirPASEC
- Merged Esperanto locale fixes by @Melnus
- Published Czech Steam Store translation by by @rampa_3 (UTC +1, DST UTC +2)
- Published Chinese Steam Store translation by @Melnus

[h2]Bugfixes:[/h2]
- NeosSlider will now filter NaN values quietly, to avoid severe performance degradation by excessive logging (based on report by @Shadow Panther [RU/EN, UTC+3] and @Shifty | Quality Control Lead)
- BoundingBoxDriver will now filter invalid values before assigning them, preventing errors from propagating further and causing logspam (based on report by @Shadow Panther [RU/EN, UTC+3] and @Shifty | Quality Control Lead)
- Added invalid input filtering to Light component to prevent visual artifacts with invalid values (e.g. NaN) based on report by @Shadow Panther [RU/EN, UTC+3])
- SyncPlayback now supports non-looped backwards playback (when speed is negative), properly reporting IsPlaying state and starting from the end when "Play" command is issued
- Added extra diagnostics for audio buffer read/copy operations (based on log from @Tekno Catron#8745)
- UpdatesDelayWithValue node will now sanitize the value if the value is a reference type that has been destroyed in the meanwhile (this fixes some background errors, found in log from @Tekno Catron#8745)
- Fixed cyclic reference in AvatarObjectComponentProxy causing crash (reported by @Hayden (PolyLogiX Studio))
- Fixed Static Asset Providers not always unloading asset when the URL is rapidly changed while a load process is still running
-- This fixes the provider randomly keeping the asset still loaded, even though the URL is null (reported by @Enverex)