A few more bugfixes because I can't sleep. I've tried updating Assimp library from the source as well (about 500 new commits since the build we're using), but unfortunatelly animation import on FBX files is currently severely broken, so it will have to wait.
Compatible with last build.
Bugfixes:
- Fixed normal maps not working with PBS Color Splat (reported by @Enverex) - Fixed user getting respawned when sliding a non-parented grabbable object with laser towards the hand (reported by @Coffee | Programmer, @GearBell, @Christioni and @Shifty | Quality Control Lead) -- This also fixes the userspace avatar proxy becoming corrupted, breaking private UI interactions - Fixed common root search returning parent object when the other object matches the first one, rather than returning the first -- This fixes avatar creator breaking and deleting users when the user and avatar creator is in a non-root slot (reported by @Shifty | Quality Control Lead, @Enverex, @Purple Juice, @Max The Hybrid, @Lewi-bean | Audio Designer and others)
A few more bugfixes for the laser and some other things (like "the mop"). Compatible with last build.
Bugfixes:
- Fixed laser getting corrupted with certain settings, causing the user to be continually respawned (reported by unknown in-game through @Shifty | Quality Control Lead) - Fixed the interaction laser breaking and causing the user to respawn when running context menu actions on some held items in cases where the interaction target component is destroyed but the object is not (reported by @Rue Shejn | Artist 3D and @Aegis_Wolf | Artist 3D/2D) - Added sanitization for TRS matrices coming to Neos from the model importer, to prevent odd behaviors where bounding box and actual object visual would mismatch (reported by @ProbablePrime on behalf of @SHFR_H) - Made TRS matrix decomposition more robust for rotations -- This fixes some rare cases where some parts of imported 3D models import with a wrong rotation (e.g. the mop 3D model reported by @ProbablePrime on behalf of @SHFR_H)
Some more tweaking and polish for the new laser system and its interactions with to oltips, avatars and such. Fixed and added a few other things as well.
New Features:
- Reimplemented ability to swap any tools on the item shelf, even if the tool doesn't use laser (the laser will automatically come on when pointed at the item shelf with a tool) -- This fixes not being able to place brushes on the item shelf (reported by Anomalous#0699) - Added a system for laser interaction target overriding color and to provide interaction target priorities, allowing interaction targets higher in the hierarchy to take precedence -- This is used for item shelf to always take precedence and to color the laser blue similarly to the old system - Added "First Person Offset" to camera positioning setting, which allows adjusting forward/backward offset of the camera in smooth POV mode (requested by @ProbablePrime) - Added "Shadow Map Resolution" property to Light, which allows changing the resolution of the shadowmaps (setting this to 0 will use default resolution) (requested by @Jolzu Groxxy Zyar the Avali)
Tweaks:
- Equipping in-world avatar is now done through the context menu to prevent accidental equips on click (the context menu is opened by clicking on the avatar as before) (based on feedback by @Nexulan) - Added automatic user respawn when some crucial components (like CommonTool) become corrupted
Bugfixes:
- Added filtering for the new laser sometimes hitting the tooltip that it's shooting from, making the tooltips interact with themselves - Made locomotion selection option appear in the context menu when there's currently no active locomotion module, but the user has ability to choose one (based on report by @ProbablePrime) - Fixed model importer generating capsule colliders for rigged meshes even when the "Generate Colliders" option is disabled (reported by @H3BO3) - Fixed broken circle segment shader (used for voice switcher and importer visual) (reported by @GalexY and @H3BO3) - Fixed audio buffer leaking data from other sources with video playback, causing odd behavior in some components like VolumeMeter (reported by @LeonClement)
A small patch, fixing a few bugs/regressions before I go to sleep so they don't stay there. Compatible with the last build.
Tweaks:
- Added Neos user agent to the HTTP requets sent form HTTP GET/POST string nodes (requested by @Alex from Alaska)
Bugfixes:
- Fixed normal map textures not being marked back as compressed (based on report by @H3BO3) - Fixed tooltip snapping sometimes being prioritized over the context menu rather than the other way around - Fixed laser passing through some objects when using tools -- This should fix the tool placing on toolshelves reported by @Alex from Alaska
Another smallish build, but some important changes. We're now switching to BC3nm texture variant for normal maps, offering significantly higher normal map quality! Some normal maps might still be using the old one and need to be computed - you can check if they look like typical blue-ish ones (old) or new red-ish ones.
Also some more bugfixes for new laser system and other tweaks.
New Features:
- Recompiled all shaders with normal map unpacking support and switched to BC3nm as the compression texture variant for normal maps in Neos (requested by @H3BO3 and @Enverex) -- This provides significantly higher compressed normal map quality, by compressing each channel individually and reconstructing the third one on the fly in the shader -- Note: The actual look of normal maps compressed with this method will change, they will be mostly red and transparent. This is normal! (pun intended) - Added -ForceSRAnipal commandline argument, which forces the SR Anipal SDK to initialize for HTC eye and lip tracking, even if Vive Pro Eye is not present (requested by @Elektrospy) - Reimplemented world overwrite functionality with the new context menu - simply hold a world orb and click on another world orb (that you can write permissions for) and it will offer overwrite option (requested by @Nexulan)
Tweaks:
- Tweaked developer tooltip so it always prefers developer/building UI's, avoiding the laser from going through them - Tweaked laser preferred hit search, to prefer touchable hits if they're within the initial collider penetration distance -- This should make it easier to interact with UI's and buttons when using developer tooltip -- This should also fix the pin button not being pressable with LogiX tip equipped (reported by @orange, @H3BO3 and @Shifty | Quality Control Lead)
Bugfixes:
- Fixed missing steam_api.dll from the headless, making the Steam Networking Sockets not work with headless server (reported by @Shifty | Quality Control Lead)
Hello everyone! Welcome back to the Weekly Update! We've got a very important announcement from the head of our Bug Report Team, Shifty! They'll be going over our new bug reporting/suggestion/feedback process and how to post on our GitHub. This is in an effort to remove the hours of feedback that Frooxius has to respond to daily, so he can focus entirely on writing code for Neos.
Bug Reporting Process: GitHub
Hey everyone, Shifty here. As many of you know (or hopefully do by now), I am the Neos Team member responsible for bug management. Today, I wish to run through a quick guide on how to effectively report issues that you encounter in Neos.
The three keys to a good issue report are as follows: Clarity: Be sure to report the issue in a clear, and concise way. Replicability: List a simplified series of steps required to replicate the issue. Objectivity: Try to keep reports objective, and highlight the underlying issue first. Suggestions for how to resolve it are welcome, but should be secondary to identifying the issue.
Once you are signed in, and on the issue board, please take a moment to search through the issue list to see if your issue has already been reported. You can scan through the issue titles, or search the list with some common terms associated to the issue:
If the issue has not already been reported, press the green "New issue" button, and fill out your issue report. If it does turn out to be a duplicate issue, don't worry, we will mark it as such, and link the original issue containing the report, or request.
A good report starts with a good title. Ideally you want to have a clear, and simple title that summarizes the issue. Details for replication of the issue, and specifics are best left for the body of the issue. The rest of your issue should highlight the steps required to recreate the issue, observations you've made about the issue including conditions under which the issue does or does not occur (if applicable), or any other details you believe will help make the issue easier for us to interpret, and fix.
Ideally, when collecting log files for a replication case, you will: - Start Neos - Create a new world, e.g. Basic Empty - Replicate the issue by recreating it from only the bare minimum steps required - Close Neos
As applicable, record any relevant footage, or take any screenshots you believe will help clarify the issue.
If the issue can't easily be replicated in a new world, or there are additional factors, feel free to attach a link to the URL for the world, or your footage/screenshots depicting the issue.
Collecting Logs:
Neos logs can be found in the Neos installation directory. This is most easily accessed through Steam. Right click on Neos VR in your Steam library, and select Properties, then Local Files, then Browse Local Files. Here, you will find a Logs folder which contains logs named by build number, the date, and time of the log's creation. When submitting them, select the most recent logs which correspond to the session the issue occurred in.
Unity Player.log files can be found by pressing Windows Key + R and entering %USERPROFILE%\AppData\LocalLow\Solirax\NeosVR then OK. The Player.log is overwritten each time you launch Neos, so make sure to collect it right away after you encounter a crash, or bug. If you have launched Neos once since the issue occurred, the contents will be in the Player-prev.log file. If you've launched Neos twice or more since the issue occurred, the Player.log file will be gone as it will have been overwritten.
In the event that you crash, Neos will attempt to create crash logs, and memory dumps that are located in a Crashes folder found at %USERPROFILE%\AppData\Local\Temp\Solirax\NeosVR. Inside of the crashes folder are folders for each crash logged, and inside of each is an error.log file, a Player.log file, and a memory dump.
If they exist, submit the error.log, and Player.log file from the crash folder alongside the Neos log from your installation folder. Otherwise, just submit the Neos log, and the Player.log.
Logs can be submitted either directly attached to the GitHub issue, or directly to Shifty on Discord if privacy is a concern. Log files can contain sensitive information such as IP addresses, and details regarding what sessions you've joined, etc. Only provide logs to people you trust.
Alternative Channels To Report Issues:
If you are uncertain if a behavior is a bug, or if you've made a strange observation, but can't replicate it, the #🐜bugs-and-feedback channel on our Discord is a great place to report it until you discover additional details, or replication steps prior to making a GitHub issue. Issues logged through Discord are liable to get forgotten if they aren't properly reported.
If you believe there is a security risk associated with an issue, and wish to report it privately, please DM Shifty your findings so that they may handle the issue.
It is planned to eventually allow bug reports from within Neos itself. For the time being, we appreciate your time, and effort to ensure that you follow proper bug reporting protocol so that we may best address your issues.
Thank you! ~ Shifty
Updates to Radiant UI laser system
Since its release, the new laser system has received many updates and polish based on feedback. Its main parameters are now configurable, snapping behavior was improved and it was integrated with all of the new tools. The laser now also has a visual cursor that changes depending on the action!
With developer tooltip, the laser will now automatically pass through objects to reach gizmos, making the access easier while also giving you visual feedback.
The new context menus are now fully integrated as well. Together with the laser they render through other objects, letting you easily interact even if your avatar or an item obscures it and for items that were never properly setup with a laser it will no longer appear in an awkward position.
What’s Next?
We’re now starting to work on the biggest part of the UI upgrade - the facet system and the new dash. First part of this is going to be technical - implementing the system for facets and their containers themselves. Once that’s done, we’ll quickly wrap the existing UI into the new system and start the transitioning period.
During the transition, the actual interfaces themselves will be redesigned and reworked. They will be split from the large monolithic facets into smaller pieces and redesigned to look and feel better and offer new functionality.
Over time we’ll transition all the core functionality and build new one, while gathering continuous feedback from you, the community, to help us to keep on track.
Thank you again for reading our Weekly Update, and a special thanks to Shifty for showing the community a better way to report bugs! And of course, we couldn't have known about all of these bugs on our own, so a huge thanks goes out to our community members who have been reporting them! We hope you guys have a great week, and have a ton of fun using Neos. Until next time!
More bugfixes and tweaks for new lasers, tool issues and some other recent additions and changes.
New Features:
- Added "ButtonActionTrigger" component, which allows calling a function when a button is pressed/released -- Old cameras are auto-updated with this system using heuristics, making the physical trigger functional again (previously reported by @Hayden (PolyLogiX - ZyroDesign))
Tweaks:
- Exposed "Trigger()" delegate on InteractiveCamera through inspector, to allow it from being called with buttons events - Developer tooltip will now also prefer inspectors together with gizmos over other objects, preventing the laser from going through them to reach a gizmo behind (based on report by @Jolzu Groxxy Zyar the Avali)
Bugfixes:
- Disabled lasers on ParticleSpray tooltip (reported by @Shifty) - Fixed TooltipMultiplexer not passing through laser classification methods to the target tooltip, causing the developer tooltip in multiplexer not go through objects to reach gizmos and tooltips to have green laser (reported by @Shifty and @GearBell) - Fixed user joined/left events and world focused/saved events being called on objects that have been just destroyed, casuing exceptions (discovered in log from @Coffee) - DelayWithValue<T> will now set the value to null if it's an object that has been destroyed in the meanwhile to avoid attempts to access disposed parts of data model (discovered in log from @Coffee) - Added guards against disposed nodes when walking LogiX node tree -- This fixes LogiX node failing to pack nodes in some cases due to exception mid-packing and provides more diagnostic information in the future (reported and discovered from log by @Coffee) - Added cleanups to internal data for LogiX inputs and outputs when disposing, to aid GC and prevent potential memory leaks and help discover invalid accesses - Fixed new laser system not properly respecting the permission system (reported by @Shifty) - Fixed the avatar clipping into the interactive camera in Smooth POV mode when moving (reported by @ProbablePrime and @LeonClement) - Potentially fixed MeshRenderer becoming pink when the mesh data is updated (reported by @DeliriousJax through @Shifty)
Sorry for smaller build today, spent some time at the livestream. This build is first phase of adding new texture asset variant "BC3nm" (typically known as DXT5nm) designed specifically for normal maps. This remaps the first two channels into alpha and GB channels and compresses using BC3 with encoder settings more suitable for normal maps. This produces significantly higher normal maps and should get rid of the blocky artifacts.
You will still see the artifacts in this build, but all normal map textures are marked by materials and scheduled on the cloud to be computed. All Neos shaders also need to be recompiled to decode those normal maps, which will take at least 2 days. During this time a lot of them should already be compressed, so when we make the switch it'll be faster and you won't have to wait too much for stuff to load!
Also some more tweaks and bugfixes for the new laser system and scaling.
New Features:
- Added new texture variant: BC3nm (DXT5nm) - normal map with Y packed into GB channels and X into A channel and the block compression using parameters more suitable for normal maps, offering higher detail and less compression artifacts -- This isn't used by Neos yet, shaders need to be recompiled for this, but this allows the cloud to seed and precompute those variants in advance - Added automatic marking of textures assigned as NormalMap in materials as normal maps to help prepare the system for a transition - Added seeding of block compressed normal maps variants - any texture marked as normal map will now be compressed as BC3nm in the cluod - Added "Decode As Normal Map" property to Unlit Material and UI Unlit Material, which will decode the texture color data as a normal map (can be used for visualization of packed normal maps) - Added axisDeadZone configuration option to the Config.json, which allows setting deadzone for joystick/touchpad (based on issue by @RueShejn)
Tweaks:
- Lowered the laser soft-pull activation threshold so they trigger before the click event with Oculus Touch controllers (based on report by @Shifty) - When grabbing, the laser will now visually stick to the initial point on "indirect" grabbables - joints, sliders and so on, rather than the movement reference - Updated youtube-dl to 2020.05.08 (based on report by @Lewi-bean | Audio Designer)
Bugfixes:
- Fixed trigger locking up when using Oculus with SteamVR, making lasers not re-appear and preventing tools from working (reported by @guillefix, @Cyro, @Jeff07734, tested by @Shifty) - Fixed incorrect tooltip check, causing avatars to not be equippable (reported by @ProbablePrime) - Fixed texture compression not respecting threading limitation when the soure texture isn't in the right channel format - Fixed the new passthrough laser search not returning the first found touchable when going through a collider - Fixed regression where laser wouldn't penetrate through a collider in the userspace to find a touchable, causing some interactions with private UI to be unreliable - Fixed laser activating with tools that don't use laser (based on report by @Coffee) - Fixed not being able to use the "Reset Scale" option when scaled to a different size by external means with scaling disabled (reported by @Shifty)
Several more additions to new laser (passing through transparent UI areas, passing through to gizmos with developer tool, activating by light trigger press, context cursor icons), more LogiX nodes for working with matrices (packing/unpacking), cone emitter update and bunch of other additions, tweaks and bugfixes.
New Features:
- Added "Laser Passthrough" mechanism and enabled it for some canvases (notification panel, context without middle visual) -- This lets the laser pass through the canvas collider if it doesn't hit any visual -- This fixes the laser being blocked by large collider for the notifications, even if only one is shown (reported by @GearBell and others before) -- This restores the ability to double-click on the world orbs to open them, by the laser simply passing through the middle of the context menu
- Added preferred/allowed hit mechanism for tooltips to allow them to make laser pass through objects if they would hit a preferred target -- This is now used on developer tooltip, making the laser pass through the object if it would hit a gizmo
- Added context specific cursor system for the laser - grabbables, touchables, sliders and text fields now have their own unique cursor to help indicate the actions -- Cursor icons made by @Coffee, they're not final versions and will receive graphical tweaks after this initial release
- Laser is now also activated at light trigger touch (based on request by @Shifty, @GearBell, @Turk and others) -- If you let go without fully clicking, laser will immediatelly go away -- If you grab object without fully activating laser by clicking trigger and then let go of trigger, you will hold the object without the laser being shown (this actually came as a side-effect of the implementation, but it seems interesting, so let me know how this feels) - Added more LogiX nodes to work with matrices (requested by @Earthmark, @Zegopharo, @H3BO3 and others): -- Pack/Unpack Rows/Columns (allows constructing/deconstructing matrices from vectors) -- GetElement (returns element at specific row and column) -- Transpose -- Constructing matrices: TRS (Position, Rotation, Scale), RotationScale, Rotation, Scale -- Decomposed Position/Rotation/Scale
- Added "Flash Root" output to the Flash Highlight Hierarchy, which allows custom actions performed with the highlight visual (e.g. deleting it early) -- By setting the duration to infinity, this can be used to keep the highlight active indefinitely and delete it when desired (requested by @SHFR_H a while back) - Added "DirectionReferencePoint" to ConeEmitte and SphereEmitterr, which allows adjusting the reference point for particle emit DirectionCenter -- For new instances of ConeEmitter, this is set to [0; -1; 0] by default, making the particles emit along the direction of the cone from the tip(requested by @Enverex) - Added ConstantSlerp (requested by Ifrogotwhosorry ;_;) - Added a mechanism that auto-updates default locomotion icons (new icons to come soon, let me know if this resets your custom icons)
Tweaks:
- Laser will now color itself green when it hits a custom interaction target (e.g. tool interaction target and other objects that are not grabbable or touchable) - Added auto-respawn when the user transform becomes corrupted (Infinity/NaN) or goes too far (more than 1e5 units in any direction) - Hidden the source of the orange (requested by @Coffee) - Upgraded to Unity 2019.3.13f1 (from 2019.3.12f1)
Bugfixes:
- Fixed asset variant system failing to generate RawRGBA variants for input textures with more than 8 bits per channel (e.g. 64-bit PNG) (based on report by @Enverex) - Hardened permission system verification for inspectors and other building UI's (based on report by @ProbablePrime and @LeDrascol) - Fixed avatars being equipped when clicked with a tool (reported by @ProbablePrime) - Added guards against invalid laser smoothing parameters to prevent the lasers from breaking (based on report by @Shifty)
Lots more improvements to the laser and full integration with the context menu. Both laser and context menu now render through objects. Laser now has a cursor, with both smooth and immediate position visualization. Tools now properly utilize laser and interact more tightly. Various other additions, improvements and bugfixes as well, both to the laser and other things.
New Features:
- Context Menu now always renders over objects together with the laser, making it easier to interact with, allowing to destroy/duplicate held items with large colliders or meshes that obscure it - Added laser cursor visual and a direct "ghost" cursor, to provide better visual feedback - Added "Overlay" and "Overlay Tint" parameters to UI materials (Unlit, Text & Circle Segment), which allow tinting the visual if it's behind another object - Tools now use the new interactive laser to get their interaction target -- This ties the new system better and also improves performance by reducing memory allocations and physics queries (old system was pretty inefficient) -- Folowing tools were updated: Developer Tip, Material/Mesh Gun, Color Tip, Grabbable Setter Tip, Character Collider Setter Tip, Interactive Camera Object Exclude Tip, Mesh Visibility Toggle Tip, Object Slicer Tip, Rig Transfer Tip, Wiggler Tip -- Let me know if I've missed any tools that don't behave properly
- Added support for setting vertex color to all 4 vertices on QuadMesh - Added ability to configure deadzone for trigger using the Config.json next to Neos.exe (requested by @GONT_3) -- Deadzone can be defined like this:
{
"inputs" : {
"triggerDeadZone" : 0.05
}
}
Tweaks:
- Tools can now have mechanism to define their own interaction targets (by default any objects), preventing the laser from not targetting objects that they might interact with and sticking to the wrong ones - When scaling object the second laser now sticks to the point on the object that it was grabbed at - Tweaked parallel looper for physics engine to help prevent physics exceptions from potentially crashing whole Neos - Added session name (256) and description (16384) length limits to improve security (based on feedback by @LeDrascol) as well as extra session info validation on the cloud - Hyperlink component now also listens to IButton events, letting you place it directly on the same slot as a button component (e.g. in UIX) to open hyperlinks (implemented by @Coffee) - Added more reference nulling when disposing of synchronization elements to help prevent potential memory leaks - Upgraded to Unity 2019.3.12f1 (from 2019.3.11f1) - Removed deprecated ImporterTip - Removed deprecated ObjectRenderTip
Bugfixes:
- Fixed new interaction laser activating and snapping to objects marked as physical grab only (reported by @Hayden (PolyLogiX - ZyroDesign)) - Transitioning from laser grab to physical will now supress released events, fixing cases where the object would try to snap to snappers, grabbable receiver surfaces and so on and get displaced (discovered by @RueShejn, reported by @Shifty) - Reimplemented support for raycast portals with the new laser system, fixing the world browser in the hub not being interactable (reported by @pek) - Fixed not being able to drop assets/references to inspector and other UI's when they're held with the laser (reported by @Shifty) - Reimplemented item shelf placement behavior to behave as the old one (based on feedback by @Anomalous, @ProbablePrime and @Shifty)