1. Neos VR
  2. News

Neos VR News

2021.5.17.871 - Desktop view mode LogiX nodes, Type Input Node, world crash fix

Hello everyone! Sorry for another smaller build, it's been a bit difficult for me to focus lately, but there are some small goodies and tweaks to the Desktop stuff and other things.

There are now nodes that you can use to get the active view targeting module and whether the view reference visual is active (independent of the visual itself, it just indicates if it "should" be active).

There's now also Type Field and Type Input Node! These are strongly recommended whenever you work with types (e.g. checking if something is of certain type) as they allow the reference types to be upgraded when we make internal changes without breaking your content.

There's some internal additions too, notably a new mechanism for upgrading fields that change their value/meaning in some way and automatically insert "adapter" when they're driven or referenced to old content keeps working. This in preparation for the ongoing transition from Gamma to Linear, but it's a general mechanism we'll use in future whenever upgrading some behaviors.

Fixed up a bunch of issues and crashes as well, hopefully things will be good now!

[h2]New Features:[/h2]
- Added UserPrimaryHand LogiX node (under Users) which indicates user's primary hand (based on request by @Epsilion)
- Added UserActiveViewTargettingController node (under Users) which outputs the currently active view targetting controller (first person, third person, UI camera, Freeform and any future ones) (based on request by @LeDrascol)
- Added UserViewReferenceActive which indicates if given user has currently active view reference (based on request by @LeDrascol)
-- This is True whenever the visual for view reference in Freeform camera and UI aligned camera are active
- Added TypeField (under Data), which stores a Type (similar to ValueField and ReferenceField)
-- It's highly recommended to use this as basis for any type comparisons, as in case of types being renamed or moved, it can be auto-upgraded
- Added Type Input LogiX node, for Type values
-- If you're checking and matching Type of an object (e.g. the ViewTargettingController), it's STRONGLY recommended to use GetType and compare that to the value you set on Input LogiX node. If you compare the string instead, it's likely that your content WILL BREAK and without ability to automatically fix it. Using Type Input node or TypeField lets us upgrade old types in case of internal changes

- Added internal "FieldAdapter" mechanism for upgrading old data model to ensure compatibility with existing content
-- This mechanism automatically converts old values in-place or inserts adapter that translates them in realtime in case they're driven or referenced by other components/LogiX
-- This is encessary for the upcoming switch to Linear space for upgrading old colors and keeping old setups working similarly enough, but is a general mechanism that will be used for many other aspects in the future
- Added OverrideOwner field to CloudValueVariableDriver which allows overriding owner of the variable value (based on request by @Psychpsyo)
-- This allows locally driving fields with different variables/owners
- Merged new MTC strings by @Rue Shejn | Artist 3D for the upcoming MTC Streamer room

[h2]Tweaks:[/h2]
- Upgraded Oculus Integration to 28.0, which includes OVRPlugin 1.59.0 (previously 1.57.0) and OVRLipSync v20
- MultiLerp node overloads that handle floating point types will now output NaN when the Lerp input is NaN (based on feedback by @chemicalcrux)

[h2]Bugfixes:[/h2]
- Fixed Standalone 360 mode not working properly with the new Desktop system (reported by @ooBLANKAoo)
-- The mode was also renamed to "Screen 360"
-- Note that the Dash overlay currently renders in regular mode (this can be changed on request)
- Fixed ReferenceMultiplexer throwing exceptions when the Index is out of range (found in a log from @ProbablePrime)
-- Its behavior is now consistent with ValueMultiplexer
- Fixed world crash in some cases when the user gets destroyed due to ViewReferenceController running post-physics update (reported by @Rue Shejn | Artist 3D, @ProbablePrime and @OH⅄ƎHOHO⅄)
- Added compensation for Linux scroll values being significantly smaller than on Windows, causing scrolling to be unusably slow (reported by @/home/JellyOsaurusPC)
- Fixed reference feet orientation being computed incorrectly for users using fullbody tracking
-- This fixes users in fullbody spawning at odd angles for CommonSpawnArea with RotationNode set to Feet (reported by @3x1t_5tyl3, @Turk | Mentor Lead/Manager, @Robyn (QueenHidi), @Shadow Panther [RU/EN, UTC+3], @AshtonSparx and others)

2021.5.16.886 - Freeform & UI Aligned Camera improvements, performance bugfix

Hello everyone! Just a small build this time, with some more polish for the Freeform Camera, UI Aligned Camera and few other things.

There's also pretty important perfromance bugfix, particularly when initially loading new assets, I found one "Ooops" moment when analyzing some cloud calls where asset metadata requests weren't actually batched and every time one was made a whole new batching manager was instantiated, instead of reusing the same one for the whole lifetime of run of Neos. Don't know what the perceivable impact will be, but should make a few bits more efficient.

We also updated the Patreon badges, since they were getting in conflict with some of the Patreon branding requirements, now they should be more compliant. A few other bugfixes as usual too!

[h2]New Features:[/h2]
- Added DefaultUserScale Logix node (under Avatar) that gives the default scale of the input user (requested by @3x1t_5tyl3)
-- Note that this node doesn't currently trigger update when the default scale changes. It's recommended to do the check on impulse.

[h2]Tweaks:[/h2]
- Updated Patreon badge icon and Patreon name color to use the latest official Patreon branding (requested by @Karel | CEO)
-- This includes adding extra spacing from the other badges and adding it at the front, to better comply with Patreon branding requirements
- UI Aligned Camera now properly handles Up direction when aligning to UI, ignoring the upwards direction of the root space and instead using the upwards direction of the UI itself (or player if it's close enough)
-- This fixes the camera aligning at weird angle when the target UI is parented under object with odd angle (reported by @Cyro)
- Activating Freeform Camera mode now uses the current view position in First Person and Third Person modes
-- This provides more consistent positioning as the avatar moves around (based on feedback by @Shifty | Quality Control Lead)
-- The starting position when triggered from first person mode has been improved as well
- Added extra pose update at the end of physics engine update cycle for the View node, to prevent some cases of the visual clipping into the user
- Camera View Avatar visual now takes into account the size of the currently focused UI when determining whether it should be hidden or not
-- This should improve scenarios with large UI's (e.g. video player), causing the visual to be hidden if the actual avatar is close enough to see the screen at its size (reported by @Shifty | Quality Control Lead)

[h2]Bugfixes:[/h2]
- Fixed Freeform Camera sometimes not initializing the position correctly
- Fixed asset metadata batch fetching incorrectly allocating new batch processing manager for every request, resulting in requests not being properly batched and the queries being significantly more inefficient both client and server-side
- Fixed regression causing inspector for newly created "Empty Object" being positioned incorrectly (reported by @Dante)
- Fixed world crash when LogiX nodes are disposed within evaluation cycle due to another error (based on report by @chemicalcrux)

2021.5.15.697 - Object focus & orbit mode for freeform camera, tweaks & bugfixes

Hello everyone, got a few more bits for the Freeform camera, it now supports object focusing and orbit mode, which should make editing in desktop much easier and friendlier! There are some more goodies based on some feedback too, like ability to get name of your current role in currently focused world or determine which user has allocated specific object. Please pay attention to the notes though to avoid running into gotcha's in the future!

There's a few other tweaks and bugfixes too. For example new user MTC sessions will now have their locale at the end, which can help you determine their native language before joining and LogiX has received a bunch of bugfixes too! I'll have some last additions for this phase of desktop soon, but I'm pretty much just wrapping it up on that now before refocusing on other stuff.

[h2]New Features:[/h2]
- Added focus mode to Freeform Camera mode, which allows focusing view at any object in the scene
-- To focus object, hover over it with mouse cursor and press Ctrl+F
-- When using Developer Tooltip, you can focus currently selected object by pressing F (this will also activate Freeform cam if it's not active, pressing F on the same object will toggle back previous camera)
-- To orbit view around the object, hold Alt and the Right Mouse Button
-- While orbiting object, you can use the mouse scroll wheel to zoom in closer or further
-- Press Alt+F to unfocus
-- When the focused object is actively moved by grabbing or gizmo, it will be temporarily unfocused to avoid feedback loop
- Added RoleName to FocusedWorldStatus, which indicates the name of the role you have in currently focused world (based on feedback by @Beaned and @Shifty | Quality Control Lead)
- Added AllocatingUser node (under References) which will output the User who allocated a given element (based on feedback by @Cyro)
-- It will output null if the allocating user is no longer available (e.g. has left since)
-- Currently leaving and rejoining will also make it impossible to determine which user allocated element. This might change in the future
- Added ReferenceID node (under References) which provides RefID of input element
-- Please note that RefID is an opaque, non-persistent value (meaning its structure and meaning can change at any time, including between sessions) and it's STRONGLY recommended to don't work with them directly, but rather interact with typed references and nodes to extract desired data instead like the one above. If you rely on particular structure or meaning of RefID, your creations WILL break. If functionality is missing, make a request.
- You can now press I when holding the Developer Tooltip to quickly open inspector

[h2]Tweaks:[/h2]
- The starter tutorial MTC sesssion now has user's language code at the end (based on feedback by @あむ(Rabbuttz), relayed by @Raith (CytraX))
-- This can help indicate which language does the user likely speak
-- This is just a tentative solution for now, proper general session language indicators will come down the line
- Replaced remaining instances of debugging printouts when coverting objects ToString to clean versions
-- Note that ToString for objects is meant for user friendly string that "sums up" the object and doesn't present a way to serialize or access its properties (if you need that, please make a request)
- Rotating of grabbed items in Freeform camera mode now locks the cursor in its current position, preventing the item from being moved around (based on report by @Psychpsyo)

[h2]Bugfixes:[/h2]
- UI Aligned Camera mode now automatically updates the current space of the focused UI when it changes
-- This fixes UI's that are held by a player when focused on keeping the focus on the grabbing user hand after it's released (reported by @MattyK, @Kiovo, @Aegis_Wolf | Creative Director and @Shifty | Quality Control Lead)
- Fixed custom Description for CreateSpawnUndoStep not changing the actual description (reported by @Zyzyl)
- Fixed MultiLerp node throwing an exception when the Lerp input is NaN (reported by @chemicalcrux)
- Fixed internal logging system throwing exceptions when passed a null object
- Fixed LogiX overload swapping not being able to reconnect variable length outputs on the swapped variant
-- This fixes Demultiplex and other nodes getting stuck mid-swap and being duplicated when it has already connected outputs (reported by @chemicalcrux)

[h2]Known Issues:[/h2]
- You can't focus freecam on items selected through the inspector, only directly selected with developer tooltip (doing this will require a unified selection system to be implemented)

2021.5.13.384 - Freeform Camera in Desktop mode, UI camera tweaks, bugfixes

Hello everyone, sorry this build took a while, but here's the Freeform camera for Desktop, completing the basic set of camera modes and the first phase of Desktop development! :smile: I'll be refocusing on some other things after this one, but there will still be probably some more tweaks and additions over following days to polish it up a bit. The keybinds are currently tentative, so expect those to shake up a bit in the future as we figure out a good way to set them up.

There's a bunch of other improvements too. I've been working on migrating our build process to Azure Pipelines to reduce the amount of manual work and potential mistakes, got a first little fruit from it - upgraded Assimp library for model import! Getting new builds of the library is now going to be much easier and faster thanks to this.

The UI aligned mode and other desktop features have also received some bugfixes and polish too as well as some other stuff too. Got a few new LogiX nodes, improvements for LogiX and so on. The desktop camera modes can now also be controlled with permission system, so you can disable Freeform camera or Third person if you need to (e.g. for game worlds), the system will auto-upgrade existing worlds based on your Camera permissions, which should be a good basis, read the notes for details!

[h2]New Features:[/h2]
- Added initial version of Freeform Camera mode, which allows to freely move view around independently of the character
-- To activate/deactivate, press the F6 key (note this is tentative and the keybinds will change in the future)
-- When activated, the mouse cursor is freed, allowing you to freely interact with items, gizmos and other elements
-- To pan/move around, first hold the Ctrl and then the Right Mouse Button. You can use WASD, C and Space to move the camera in this mode
-- Note that you can let Ctrl go after holding the right mouse button, it will keep the pan/move mode active
-- By holding left mouse button you can make the character turn towards the current cursor hit and use locomotion to walk around (movement in this mode is relative towards the cursor, meaning W will walk towards where your cursor hits on the screen)
-- More behaviors are planned:
--- Focusing a specific object in the world and being able to orbit it around
--- Having the voice come out of the view proxy when it's sufficiently far away

- Added View avatar visual that indicates where user's viewpoint is when it's decoupled from their head
-- Currently it's always activated when in Freeform camera mode
-- In UI aligned camera mode, it will appear only if the viewpoint is either at significantly different angle from the avatar head or sufficiently far away (6 meters at the moment), to avoid it from popping up when interacting with close by UI's
-- The current default visual is tentative and will be replaced with a better one soon
-- You can customize the visual by adding a new part to your avatar, using the new "View" BodyNode. This works on same principle as filling in default avatar hands/head
-- The visual is scaled up / down as it activates and deactivates and its root is disabled when not active
- Added ScreenViewPermissions permission component that allows controlling which view modes can be used by a user
-- New worlds allow any view mode to be used by default
-- Existing worlds are automatically upgraded based on the CameraPermissions component with following rules:
--- If Streaming Camera Third Person is disabled, the third person view mode will be disabled as well
--- If Streaming Camera Group, World, Manual or Framing of Other Users is diabled, Freeform and UI cameras will be disabled as well
-- To allow/disallow specific mode, you use following datatypes:
--- FrooxEngine.FirstPersonTargettingController (first person)
--- FrooxEngine.ThirdPersonTargettingController (third person)
--- FrooxEngine.UI_TargettingController (UI targetting)
--- FrooxEngine.FreeformTargettingController (Freeform Camera)

- Added character constants (under String/Special Characters) (based on request by RobertBaruch, @Zyzyl, @Shadow Panther [RU/EN, UTC+3], @Alex from Alaska and @Jack)
-- \n, \b, \a, \t (tab), \r, \v, \f, ' ' (space)
- Added "Total Visists" as sorting parameter to the Worlds interface
- Added "RunAfterInputUpdate" to AvatarPoseNode which will run posing after all input interactions update
-- This is necessary for the View node, so the pose doesn't lag a frame behind
- Added simple OAuth API endpoint to fetch user profile information: https://cloudx-account.azurewebsites.net/api/user/profile
-- This requires at very least the profile scope and email and patreon scopes in order to include information about those two respectively

[h2]Tweaks:[/h2]
- Upgraded to the latest version of Assimp (3D model import library) from the source for Windows and Linux
-- This includes about 400 commits of additions, tweaks and fixes which should improve the general format support
-- This should potentially fix crashes on Linux when importing models with no armatures (reported by @Roxas)
- UI Aligned Camera can now be activated on objects that don't have any other interactable on them (e.g. Grabbable or Touchable) (based on report by @Shifty | Quality Control Lead)
- Improved head aiming in the UI Aligned Camera mode, to avoid the avatar hand pointing at awkward angles
- 'char' datatype is now implicitly cast to 'string' when connecting LogiX inputs
- Various security improvements (based on moderation team reports)
- Generating Bone Data diagnostic in the inspector now formats the matrices to avoid overly tiny numbers from hampering readability
- "Create New" dialog positioning is now consistent with other dialogs (this fixes it spawning at wrong point in UI Aligned camera mode and similar)
- Horizontal and Vertical expression Min/Max are now defaulted to -1...1 when assigning with heuristics on the AvatarExpressionDriver (based on report by @3x1t_5tyl3)
- AvatarExpressionDriver now resets all blendshapes to 0 when data source is null, rather than the Min value (based on feedback by @3x1t_5tyl3)

- Merged Spanish locale additions by @Ruz
- Merged Esperanto locale overhaul by @Yellow
- Merged Czech locale tweak by @rampa_3 (UTC +1, DST UTC +2)
- Merged Korean locale tweaks by @MirPASEC

[h2]Bugfixes:[/h2]
- Fixed items jumping to origin when in UI Aligned Camera mode, clicking to align the item and immediatelly letting go (reported by @Shifty | Quality Control Lead and @Snooper)
- Fixed input groups now resetting when disabled, causing inputs to get stuck in the last state in some cases
- Fixed grabbed items in desktop mode sometimes getting rotated relative to the view due to the character turning from a procedural animation
- Fixed Undo steps not working for LogiX input nodes (reported by @AshtonSparx and @H3BO3)
- Fixed Tool shortcuts in Desktop mode leaving behind "Holder" slots (reported by @3x1t_5tyl3)
- LogiX Interfaces, Drive and Reference nodes now spawn properly when in UI Aligned camera mode (based on report by @Shifty | Quality Control Lead)
- Fixed exceptions when saving items that have no children (found in a log from @Shifty | Quality Control Lead)

2021.5.9.179 - Fixing random Contacts+ connection failures and other fixes

Hello guys, another small patch, fixing up some critical issues! Notably Contacts+ not working in some cases (I think this should be the last of it now), messages not loading and some logspam with procedural assets.

Build is compatible with the last two, so update at your own leisure! You'll definitely need to update if you want Contacts+ to work reliably though.

[h2]Tweaks:[/h2]
- When procedural asset encounters an exception, it will stop updating and replace the asset with an error proxy (e.g. error texture)
-- If you encounter this, please send logs, as exceptions mean there are problems that need to be fixed!
-- You will need to respawn the component for it to resume operation
-- This will also prevent log-spam on continually changing assets (reported by @Enverex)
- Added extra logging information to exceptions thrown from procedural assets
- Small CPU and memory optimizations when fetching messages from the cloud and making other API requests

[h2]Bugfixes:[/h2]
- Fixed connecting to Contacts+ sessions randomly not working due to certain token symbols not being encoded properly (reproted and logs provided by @Shifty | Quality Control Lead, @AshtonSparx, @Raith (CytraX))
- Fixed fetching of unread messages causing inefficient database queries, due to fetching sent messages as well, resulting in the initial fetch failing when cloud is under load, resulting in the users not receiving any messages (based on report and logs by @Ho'polis and @Wolfie)
- User status sessions are now null when the user is online, but Invisible, fixing exploit allowing to differentiate if user is really Offline or Invisible (reported by @Blaze)