1. Neos VR
  2. News

Neos VR News

2021.5.23.985 - LogiX bitwise/bool/vector nodes, Auth website branding, fixes

Another small build before I start focusing on some bigger things, but hopefully with some nice goodies! There's a bunch of new LogiX node overloads for vector and boolean vector types, which should give you a whole bunch of extra flexibility when working with those datatypes.

The new WIP Neos Account website (also used for OAuth) now also has some basic Neos branding to look less sketchy thanks to @ProbablePrime.

And there's a pretty important bugfix (technically two internally) for text rendering, which should fix some text being glitched out and wrapped incorrectly in some cases (see #đŸŽ„devlog for sample video), improving the overall robustness of our text rendering system.

[h2]New Features:[/h2]
- Added bitwise overloads of logical operators for boolean vectors (bool2, bool3, bool4) and integer vectors (int2, int3, long4...) (requested by @art0007i)
- Added bit shift and bit rotate overloads for boolean vectors (bool2, bool3 and bool4) (requested by @art0007i)
- Added vector comparison operator nodes (requested by @art0007i)
-- These produce boolean vectors. E.g. if you compare two float3 values, you get bool3, with each component being compared independently
- Added "Cosine" curve shape preset (requested by Dirko3000)
-- This starts slow and ramps up to full speed
- Added bobool3ol

[h2]Tweaks:[/h2]
- Neos Account / Auth website (https://auth.neos.com/) now has basic Neos branding and style (implemented by @ProbablePrime, based on request from @Geenz | Graphics Programmer)
-- Internal layouts were centralized
-- Swapped the Nav Bar to Dark and added the Neos Round Logo.
-- Website is now labeled "Neos Account Website" instead of internal project name "CloudX.Account"
-- External login providers were removed for now
-- Patreon and Main Website links now link to separate websites rather than dummy pages

- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese locale additions and tweaks by @Aesc
- Merged Korean locale additions by @Guide
- Merged Russian locale additions and fixes by @Shadow Panther [RU/EN, UTC+3]

[h2]Bugfixes:[/h2]
- Fixed cloud not providing proper response code when synchronizing records and there are too many requests at the time, resulting in unecessary sync errors, rather than retry logic being employed properly
- Fixed text layout computing the longest word width incorrectly when multiple text segments are used (e.g. formatting), resulting in horizontal auto-scale producing wrong values in some cases and some words being forcefully wrapped (based on report and sample by @Enverex)
- Fixed text auto-size layout using some auto-sized values from previous run when the text is being changed, resulting in random non-persistent layout glitches (words being wrapped incorrectly, lines being randomly spaced wrong) (based on report and sample by @Enverex)
- Fixed ValueMultiplexer and ReferenceMultiplexer still throwing exceptions in some cases when the index is out of bounds due to off by one error (based on report by @Enverex)

2021.5.22.1024 - Material batch conversion, security improvements, tweaks, fixes

Another small build sorry! Just handling some smaller tasks and such right now. It has some goodies too though, like material batch conversion! There are some more security improvements too and a bunch of bugfixes and polish for desktop and other things.

[h2]New Features:[/h2]
- Added Batch Material conversion feature to the Material Tooltip when holding a slot reference, which allows converting all materials in the hierarchy to specific material type (requested by @Veer | Chief Moderation Officer)
- If you double-click the right mouse button in third person mode, the character's forward direction will align with the view as well

[h2]Tweaks:[/h2]
- Improved security if favorite avatars using scoped temporary access keys
-- Favorited avatar records are no longer marked as public to severely mitigate possibility of malicious access
-- In a few days we'll automatically unmark all avatar records as public unless they're in a public folder
-- Note that when unregistered user hosts, they won't be able to load private favorited avatars for you, you'll have to equip them yourself
- Removed old logging code for opening worlds
- ToString on fields will now always act as doing ToString on the field value
- Material conversion dialog positioning is now consistent with other dialogs and respects different camera modes
- Extracting all material orbs from hierarchy is now undoable
- Upgraded youtube-dl to 2021.05.16 from 2021.04.01
- Upgraded various internal dependencies and libraries for both cloud and client to latest versions

- Merged German locale additions (including MTC Streamer Room) and fixes by @3x1t_5tyl3
- Merged Russian locale addition by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale update and fix by @MirPASEC

[h2]Bugfixes:[/h2]
- Fixed InventoryLink generating context menu item when disabled (reported by @Ukilop)
- Fixed ValueMultiplexer and ReferenceMultiplexer throwing exceptions when Index is invalid and driven value is being written back (based on log provided by @Enverex)
- Fixed 48-bit source textures (e.g. PNG) being washed out when exported due to tonemapping running on them (reported by @Cataena and @Lucaedr )
- Added a guard against TwitchChatDialog throwing lots of exceptions when parts of it are removed (based on report and log by @RezilloRyker)
- Fixed UI Aligned Camera mode not properly transforming the camera orientation when aligning items, resulting in items being misaligned when they're parented under a slot with rotation offset (reported by @Epsilion, @Axius, @3x1t_5tyl3)
- Fixed text renderer auto-sizing not respecting BoundsAlignment when performing last iteration bounds alignment, resulting in random small offsets of the resulting text (based on report and sample by @Enverex)
- Fixed components that destroy the user on unhandled exception (e.g. CommonTool) not actually destroying user, resulting in logspam and corrupt behaviors (found in a log from @AlienInArea51 (MR-Alex))
-- If you encounter case like this during normal operation, please make a bug report! However if you are messing with internals of those components and deleting necessary working objects, this behavior can be normal and you should find alternate approach that won't rely on corrupting internal state, as we won't necessarily support such use-cases

2021.5.20.1063 - Voice for Freeform cam, Texture mipmap controls, tweaks & fixes

Hello everyone, got another build with some more bits! The new freeform camera now outputs voice too if you're sufficiently far away from the avatar and it's closer to you! Read instructions below on how to setup your customized avatars with it.

You can now also control mipmaps on the 2D Textures, including the filter used for them. Some textures might be worth switching over to Lanczos3, as it can produce sharper visuals when the texture is small. In some cases that's good, in some not, but options!

Also there's a whole bunch of other tweaks and bugfixes that were waiting in the queue for a while, which should improve robustness of things all over the place!

[h2]New Features:[/h2]
- User voice will now automatically switch over to the view reference for each user if the avatar is too far away and the view reference is closer to them (previously requested by @AshtonSparx, @Shadow Panther [RU/EN, UTC+3])
-- AvatarAudioOutputManager now has "IsViewVoice" property. If you're making custom view reference, you'll need to setup the voice with this component and check this field so it gets activated properly
-- Note that Whisper Voice mode will not work properly in this mode to prevent weirdness, switch back to your avatar for social interactions
- Added UserViewVoiceActive LogiX node, which indicates if the voice is currently coming out of the view visual
-- Note that this value can be different for each user, as it's determined locally
- Added "MipMaps" toggle to StaticTexture2D which allows disabling mipmaps on a texture
-- This can be used to conserve memory usage on textures where mipmaps aren't necessary (e.g. skybox) (requested by @Groxxy but Face Tracking lul)
- Added MipMapFilter property to StaticTexture2D which allows selecting which algorithm is used to generate the mipmaps levels (based on request by @Groxxy but Face Tracking lul)
-- Following filters are currently available (in general order of sharpness/quality): Billinear, Box, Lanczos3
-- Note that switching filter might not immediately load that one (unless you force exact variant, but that's not recommended to keep turned on) as it might need to be generated in the cloud first.

- Added LogiX nodes for accessing local user's view/ears transform overrides (under Users/Local Output) (based on request by @seif1)
-- ViewPosition, ViewRotation, ViewScale and ViewOverriden (bool)
-- EarsPosition, EarsRotation, EarsScale and EarsOverriden (bool)

- Added Integer variants of the Repeat node (requested by @Honzackcz)

[h2]Tweaks:[/h2]
- Moved Neos API endpoint to api.neos.com (endpoint setup by @Karel | CEO)
-- The API will remain available on the old domain for a while, but will disappear at some point, so we recommend migrating ASAP
- New work in progress Neos account & OAuth website moved to auth.neos.com (endpoint setup by @Karel | CEO, based on request by @Geenz | Graphics Programmer)
- LookAtUser will now target user's view, rather than specifically head (based on feedback by @AshtonSparx)
-- You can switch PositionSource back to "Head" to restore old behavior
- Import dialog asset paths are now kept local only to avoid divulging potentially sensitive information (based on feedback by @3x1t_5tyl3)
- TextEditor now handles surrogate pairs properly when editing
-- This fixes being able to place the caret in the middle of surrogate pair or delete only half of the symbol, resulting in invalid Unicode string (based on report by @DariusSergal, @Psychpsyo and @3x1t_5tyl3)
- Permission security improvements (based on reports by @Psychpsyo, @Epsilion and @Komdog)

- Merged Polish locale additions (including new MTC streamer room) and fixes by @art0007i
- Merged Czech locale addition by @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese locale addition by @Aesc
- Merged Korean locale fixes by @Guide

[h2]Bugfixes:[/h2]
- Fixed regression caused by duplicated IEncodable interface, resulting in any elements using this (e.g. the old PenTip) causing session crash when other users are present in the session
- Fixed Neos freezing when copy/pasting malformed Unicode strings to/from the clipboard (e.g. only half of surrogate pair symbols like :high_brightness:) (reported by @DariusSergal, @Psychpsyo and @3x1t_5tyl3)
- Added sanitization of camera parameters when rendering, to prevent cameras from getting corrupted and stopping render due to extreme values (e.g. scale)
-- This fixes Dash becoming corrupted and unusable until restart after the user is scaled extremelly small (reported by @Electronus)
- Fixed texture asset metadata reporting only 1 mip level for most textures rather than actual account
-- This also fixes the VRAM usage of the texture not including the mipmaps, but only the topmost texture

2021.5.19.1273 - HP Omnicept Eye Tracking, latest Opus & Freetype, tweaks, fixes

Hello everyone! I got another build for you with a bunch of goodies, including HP Omnicept Eye Tracking support! I don't have the headset, so it's untested, but it should generally work, let me know if you run into any issues!

There's also some important improvements for local database robustness, which should fix some other common(ish) cases of Neos not starting up for some users due to corruption.

I've also been moving more of our native dependencies to Azure Pipelines and bumping up their versions, we now have the latest versions of Opus (audio encoding/decoding library) and Freetype (font decoding)! For Opus it's a pretty big bump, almost 4 years ahead and the new version should have improvements for quality of both voice and music. Thanks to the CI/CD we'll also be able to keep with latest version much more easily now.

There's a bunch of other small bugfixes and improvements as well, like ability to do per-pixel processing for Cubemaps, read below for more!

[h2]New Features:[/h2]
- Added HP Omnicept Eye Tracking support (requested by @Groxxy but Face Tracking lul)
-- Currently this is not fully tested, as the official emulator is missing some functionality (controlling the eye openness)
- Added MotionVectorMode property to ParticleStyle which allows adjusting how are motion vectors generated for particles (requested by @Robyn (QueenHidi))
-- Note that per-particle motion vectors aren't supported
- Added "UserRecordingVoiceMessage" LogiX node, that indicates when the user is recording a voice message (based on request by @dfgHiatus)
- Neos now automatically cleans up old (more than 2 weeks) database backup files before upgrade or repair (suggested by Iforgotwhosorry ;_;)
- Per-pixel texture processing options (Inverting Colors, Swapping channels, Shifting Hue and so on) are now available for all generalized textures types (both Texture 2D and Cubemaps)
- Added support for WOFF font format
-- Note that newer WOFF2 isn't fully supported yet
- Added scalar (1D) overloads for the Distance node (requested by @Honzackcz)

[h2]Tweaks:[/h2]
- Upgraded Opus codec to latest version 1.3.1 from source (previously 1.1.3)
-- This includes numerous improvents to audio quality for both voice and music, especially at lower bitrates
-- See libopus changelog here: https://opus-codec.org/news/
- Upgraded Freetype library to latest version 2.10.4 from the source (previously 2.10.0)
-- This includes various bugfixes as well as a security vulnerability fix in the library
- Texture pixel processing from the inspector now processes all mipmap levels, which fixes only the top mipmap being processed when they're explicitly defined
- InventoryLink Enabled property is now respected (based on feedback by @Epsilion and @art0007i)
- UserInterfacePositioner is now based on user's view position by default rather than the head (based on feedback by @seif1)
-- You can check "UseHead" to restore old behavior if needed
- Merged missing MTC Streaming room string by @Rue Shejn | Artist 3D

- Merged Japanease locale additions (including MTC Streamer room) by @Aesc
- Merged Russian locale additions (including MTC Streamer room) by @Shadow Panther [RU/EN, UTC+3]
- Merged Czech locale additions for MTC Streamer room by @rampa_3 (UTC +1, DST UTC +2)
- Merged Korean locale additions for MTC Streamer room by @Guide

[h2]Bugfixes:[/h2]
- Fixed mouse scroll wheel being blocked by the Freeform Camera mode at all times, preventing UI's to be scrolled in this mode (reported by @AshtonSparx)
- Fixed Squeeze value for the Left eye being combined eye squeeze, instead of the left
- Fixed incorrect formula for Inverse of 2x2 matrix (e.g. float2x2) (reported by @Aetoriz and @かず (kazu / GitHub: kazu0617))
- Improved robustness of local database system to avoid random corruptions from resulting in Neos not starting up (based on logs collected by @H3BO3)
-- Neos now creates Setting.bak file in case the main Setting.json becomes corrupted (e.g. due to unclean exit)
-- Neos avoids overwriting Setting.json file when nothing has changed (which is in most cases)
- Fixed internal method for processing all pixels of specific mipmap only processing a single face for cubemaps (based on report by @Geenz | Graphics Programmer)

Freeform Camera for Desktop, ProbablePrime and Chroma joining the team

Hello everyone and welcome to another weekly update!

We have finalized the first phase of our desktop mode support with addition of Freeform Camera mode! This lets you decouple the view fully from your avatar and freely fly through the scene and use freeform cursor to interact with items and gizmos.

The camera can also focus on objects in the scene and orbit around them, making editing in desktop significantly easier. Along with first person, third person, UI aligned camera, new LogiX nodes and permissions for desktop, we think the desktop is now well rounded for both socialization and building. There's still much more we want to do with it, but we'll focus on other things in the meanwhile.

Our team has grown by two new members as well! Everyone welcome ProbablePrime and Chroma! ProbablePrime is joining as technical writer and programmer. With access to source he'll be able to provide you with even better tutorials and documentation on Neos, while Chroma has been helping out with the upcoming Neos trailer and will be helping with more media and graphics for Neos.

Based on some concerns and misunderstanding in the community, we also unveil some behind the scenes on the moderation system, to help everyone understand how it works internally and what happens when you make a ticket. We have also added ability to create Anonymous tickets too.

You can also see latest progress on the MTC Streaming & Recording Hall from our recent Friday livestream. We've also expanded our public roadmap to provide more detailed overview of what's planned for different aspects of Neos, so check them out if you're curious about what's in store!



[h2]MTC Streaming & Recording Hall Livestream Showcase[/h2]
In our last regular Friday 3PM PST livestream, we have showcased the latest progress on the MTC Streaming & Recording Hall, another part of our tutorial experience for new and existing players, focused on everyone who wants to stream and record in Neos.

Similarly to the MTC Avatar Room, we have designed this to not only serve as a tutorial on the camera system in Neos and related ones, but also as a well rounded hangout and utility world. You can find a stage with configurable lighting for presentations, a green screen area with fully configurable colors, backgrounds, tracking markers as well as a streaming room with several different sets for streaming.

If you missed the stream, check out the archive below!

[previewyoutube][/previewyoutube]



[h2]Freeform Camera[/h2]
As the last major addition to the first phase of our new Desktop mode we have implemented a Freeform Camera mode, which makes the building process without VR much easier. In this mode, you can decouple your view from your avatar and freely fly around the scene. Currently it is bound to the F6 key, but will be changed in the future.

The mode also frees up your mouse cursor, allowing you to interact with the scenes and gizmos without having to turn your view. To change the view, hold the Ctrl on your keyboard and then the Right Mouse button to trigger panning mode. You can release Ctrl afterwards. While panning the camera, you can also use movement controls to fly around.

[previewyoutube][/previewyoutube]

You can also focus the camera on a specific object in the scene. Either hover over it with the cursor in Freeform camera mode and press Ctrl+F, or select it with the developer tooltip and press the F key. In focused mode, the view will move with the object and you can use Alt+Right Mouse button to orbit the view around and Scroll Wheel to zoom in and out.

While you’re in this mode, Neos also shows a visual to represent your view to other users in the world. This is fully customizable as well as it’s simply a part of the avatar and we’ve already seen people do some creative stuff with it!

Overall we hope that this mode will complete a well rounded basic set of camera modes for both socialization and building in the Desktop mode, with easy switching between first person, third person, UI Aligned camera and Freeform, as well as switching between desktop and VR when you have a VR headset.

[h2]UI Aligned Camera and other Desktop improvements[/h2]
The rest of the desktop features have received more features and polish as well. We have fixed up lots of issues with the UI Aligned Camera in particular and improved the general interactions to provide smoother and more intuitive experience.

The view visual will now activate in UI Aligned Camera mode as well, but only in scenarios where the targeted UI would be too far away or outside the field of view of the actual avatar. This way it doesn’t need to pop up when you’re interacting with a UI that’s just in front of you or perhaps focusing on a video player when watching with your friends.

We have added permission components as well that let you control which of the camera modes are available in your world. For example for any game worlds, you can only allow first person mode, to avoid people peeking behind corners or watching other players.

Existing worlds are auto-initialized based on their streamer camera permissions since those are usually a close proxy - e.g. if you’ve configured the streamer camera to disallow watching other players, freeform camera mode will be disabled for that role by default as well.

Various LogiX nodes were added as well, for checking which camera mode is user currently in, whether the view visual is active or which hand is configured as their primary. You can find all the additions, tweaks and bug fixes in our build release logs either here on Steam or on our official Discord.

While there’s still a lot that we want to do with the Desktop (check out our GitHub roadmap!), we think that in its current state it should provide a pretty good experience for both new and existing users and we can put our focus on other issues.

[h2]ProblablePrime and Chroma joining the team[/h2]
This week we have brought on two new members to the Neos Team to help out with Neos’ development, both on the technical and content side. Everyone welcome ProbablePrime and Chroma!

Moments before the graduation





ProbablePrime has been a member of the Neos community since early 2019 and many of you probably know him for his numerous Neos tutorials, covering everything from setting up avatars to using a variety of Neos’ tools, components and LogiX nodes. With his industry experience with software development and documentation, he’s joining our team as a Technical Writer and Programmer.

Thanks to the access to Neos’ source code he’ll be able to provide better tutorials and documentation on Wiki and any other upcoming resources, providing you with more in depth information on how things work and how you can best utilize them. Apart from documentation, ProblablePrime will be making contributions to the codebase as well, helping to implement features, fix bugs and overall improve Neos’ technical side.

Chroma has been helping out with production of the upcoming Neos trailer with his industry VFX and video editing experience, as well as with building out the MTC Streamer room for the past few months. He will be helping with future video and graphics production in the future both for promoting Neos and in-game graphics.

We’re excited to have the new team members on to help with this project and we hope everyone gives them a warm welcome!

[h2]How our moderation ticket system works[/h2]
Since there have been some rumors floating around in the community about the internal workings of our moderation ticket system, particularly with team members not being able to see certain issues or people assuming they have gotten automated responses, we have decided to show you some of the internals so everyone can have a better picture of what happens when you make a ticket.

The ticket system can be accessed by any moderator or Neos Team member. Each ticket can be assigned to a particular member, but all of them can be seen by everyone in the system at any time, so any member can chime in and see what’s going on.



This is a pretty important part, because we have been building a diverse moderation team with different backgrounds and experiences, so different members can provide unique insights based on the issue at hand, whether it’s a social issue or more technical one like exploit. Typically most issues undergo an internal discussion from many members (both moderation and Neos Team where relevant) and are decided on as a group, to prevent biases from a single individual.



Our moderation Discord is also heavily tied into the ticket system, with a live feed of tickets as well as a unique channel for each issue which allows us to discuss the ticket internally before making a formal response. Those channels can also be seen by every moderator and Neos Team member who opted in for access.

Each ticket is archived for future reference after it is closed

Responses to the tickets have been another source of concern recently, with assumptions that they’re fully automated and not actually looked at. We do not actually have an automatic response system and all the messages have been sent by a person reading the ticket as indication that someone has seen it.

Unfortunately crafting a detailed response takes time, particularly with issues that require more detailed analysis (e.g. exploit reports or issues that require gathering evidence), so we typically send a canned response within a day to make sure that the reporter knows that the issue has been received and is now part of the system.

To better reflect this, we’ve updated the canned responses wording to make it more clear that the response is being sent by a moderator or team member, but without identifying who they are to prevent cases of moderator harassment and targeting.

[h2]Anonymous Reports[/h2]
Related to the feedback above and some other concerns that we have received, we have also added the ability to send anonymous reports through the moderation system! For any issues where the user doesn’t wish to be identified, but wants to share concerns with the community, platform or even the team, those can be a good way to do them in a safe manner.



To make an anonymous ticket, simply go to a page here: https://moderation.neos.com/anon.php This doesn’t require filling out email as regular tickets do to avoid personal identification. Of course this also means that you won’t be able to receive a response, so those tickets will only be processed internally.

Such tickets will also prevent us from getting more detailed information on the issue as well directly and as such depending on the ticket might not be actionable, but we hope that it nevertheless provides a good option to share your concerns for certain situations.

[h2]Moving To Azure Pipelines[/h2]
With the growing Neos Team and community, there has been an increasing need to make certain parts of the development process more efficient and reduce the number of manual tasks that goes into making new builds.

As part of this process we have started an ongoing effort to restructure and move Neos’ codebase and its dependencies into Azure Pipelines and switch over to CI/CD workflow. This means that Neos’ own code and code of the dependency libraries will now have scripts in the cloud that will be responsible for building the latest binaries every time changes are pushed to the repository.

This is a pretty big task, as we have numerous dependencies, both native and managed (.NET) and will take some time to fully setup, but will provide much smoother development experience, reduce manual labor and errors when pushing out updates or updating the dependencies and enable us to build custom update system and orchestration services (dedicated servers).

As the first benefit of this transition, we have recently updated the Assimp library used for 3D model import to the latest version from source for both Windows and Linux and we’ll be able to keep up with its latest developments much easier from now on thanks to significantly reduced amount of manual steps that went into each update.

[h2]Updated Roadmaps[/h2]
Since we often get questions about which features are planned and what’s coming for different aspects of Neos, as well as repeated feature suggestions, we have started organizing some of the major plans into GitHub roadmaps to keep things better organized in a single place, rather than scattered among many issues, Discord discussions and weekly updates.

On our official public GitHub Projects page, you can now find several new projects for different parts of Neos, each with some major planned tasks and features, which should give you a good idea of what’s coming and what’s being currently worked on.



However it’s important to note that the roadmaps aren’t necessarily comprehensive - there are too many issues overall and the nature of the project often changes during the development, but the roadmaps should provide a good idea of the broad strokes.

For example even though we’re now finished with the first phase of desktop implementation, there are still many things we have planned for it. By going to the Desktop project on GitHub, you can find out what those things generally are.

We’ll keep updating the roadmaps as we go and anytime a common issue comes up, we’ll try to put it on the roadmap, instead of repeatedly answering it on Discord or inside of Neos. This way we’ll have a good central resource for members of the team, mentors and everyone else to refer to on the plans for the project.

[h2]What's Next[/h2]
With the first phase of the desktop complete and some last polish and bugfixes in place, we'll be refocusing on some other major and minor issues soon. Before that happens though, Frooxius will be taking a roughly week long break, to help reset and refocus after a long time stress from dealing with development and daily issues.

This means that there will be no Neos updates for roughly a week and likely no weekly update next week either. While we pride ourselves in a quick development cycle with typically multiple updates each week, we think this is important for a long term sustainability of the development and handling new features and daily issues with a fresh mindset.

We're very thankful for everyone's ongoing support of this project, because without your help we couldn't be continually moving forward, implementing new features, tweaks and bugfixes on regular basis!