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!
New Features:
- 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)
Tweaks:
- 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
Bugfixes:
- 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
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!
New Features:
- 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)
Tweaks:
- 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
Bugfixes:
- 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)
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!
MTC Streaming & Recording Hall Livestream Showcase
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!
Freeform Camera
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.
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.
UI Aligned Camera and other Desktop improvements
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.
ProblablePrime and Chroma joining the team
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!
How our moderation ticket system works
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.
Anonymous Reports
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.
Moving To Azure Pipelines
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.
Updated Roadmaps
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.
What's Next
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!
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!
New Features:
- 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<T> 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
Tweaks:
- 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)
Bugfixes:
- 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)
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!
New Features:
- 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.
Tweaks:
- 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)
Bugfixes:
- 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)
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.
New Features:
- 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
Tweaks:
- 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)
Bugfixes:
- 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)
Known Issues:
- 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)
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!
New Features:
- 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
Tweaks:
- 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
Bugfixes:
- 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)
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.
Tweaks:
- 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
Bugfixes:
- 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)
Hello everyone! Just a small patch, I was investigating the messages not loading and wanted to push a (potential) fix as soon as possible, hopefully this helps! Please let me know how it goes and if you still experience issues!
This build is compatible with the last one!
Tweaks:
- Merged Esperanto locale additions and tweaks by @Inferus - Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3] - Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
Bugfixes:
- Fixed Neos stacking multiple concurrent unread message requests, potentially resulting in messages not being delivered or missed (reported and logs provided by @Froppy, AjaxWolf and @Ho'polis) - Improved rate limiting logic for fetching cloud messages, which should fix cases of messages not loading in some cases (reported by @Medra and related to report above) - Added extra diagnostics for fetching contact messages to help diagnosing problems
A whole bunch of additions and improvements for the UI Aligned Camera mode! Interacting with items and working with LogiX should now be much friendlier and easier to do (check #devlog channel for some examples) and some bugs have been fixed. Sorry that there's not much else apart from a few other tweaks and fixes, got some other things to deal with today, but hopefully this brings the new camera mode to it's proper potential!
Also this build is compatible with previous one, so you don't need to update right away, though it's recommended as soon as you can!
New Features:
- Aligning grabbed items in the UI Aligned Camera mode now aligns them exactly to the current camera plane (both position and rotation) -- This makes it very easy to align nodes and other interfaces within a plane - Interfaces and other elements get positioned on the current plane in the UI Aligned Camera mode when spawned/opened - Deleting LogiX wires now works properly in UI Aligned Camera mode - Grabbing objects in UI Aligned Camera mode now preserves their distance, rather than snapping it to the plane - Context Menu now opens around the current cursor position in UI Aligned Camera mode
- Added ability to change Group names (requested by @ChrisWarner103 (DelVR), @ToMo (DelVR) and others in the past) -- This can be done on a request to team member and shouldn't be done often -- Note that the internal ID "G-GroupName" will remain unchanged
- Neos now properly imports texture wrap modes from Assimp when importing 3D models (based on feedback by @uyjulian) -- Note that Assimp doesn't read the wrap modes correctly in all cases, so this won't fix all cases of them being incorrect
Tweaks:
- Captured photos that aren't 360 now default the texture to Clamp mode, instead of Repeat (based on feedback by @Earthmark, @ProbablePrime and @H3BO3) - Tweaked defaults of Context Menu and general UIX Z-write materials to fix more issues with Z-fighting, particularly in desktop mode - MirrorTransform component is now categorized under Transform/Drivers (suggested by @Komdog) - Imported rig bones colliders now have names in format "<bone type/name> Collider" to avoid confusion (suggested by @ProbablePrime) - When dragging LogiX wire in the UI Aligned Camera mode, the wire point is positioned exactly at the cursor now - You can now zoom closer in UI Aligned Camera mode, making it easier to fill the screen with small pictures or video players (based on feedback by @Psychpsyo)
Bugfixes:
- When focused UI is currently parented under the user (e.g. Context Menu or grabbed UI) it won't be focused on to avoid undesired behavior with camera flying off (@Shifty | Quality Control Lead, @Cyro, @Aegis_Wolf | Creative Director and others) - Interaction origin and direction is now based on the actual view, rather than the laser origin on user's hand -- This fixes UI's (Inspector's, Context Menus and others) not being interactable when the user is behind them, e.g. in UI Aligned Camera mode (reported by @Shifty | Quality Control Lead) - Changing user's username now also updates the cached username in all submitted worlds