1. Neos VR
  2. News

Neos VR News

2020.8.7.1059 - Physical Fly locomotion, physics events fix, more tweaks & fixes

Some more internal progress on the new World UI and lots of various bugfixes, tweaks and additions as usual!

There's now a new default physical fly locomotion! You can fly around while still colliding with environment and being able to climb. New worlds will automatically have it and you can easily upgrade your old ones using the character collider tool. The old fly has now been renamed to "Noclip" to make it more clear what it does and what is it used for.

I spent some time working on things needed for the upcomign Metamovie Festival in Venice too. Unfortunatelly it's not something that'd be general that you could use due to time constraints, but this festival should be big for Neos!

There are some UIX/Button bugfixes as well, including a bugfix for brief collision end event when jumping or otherwise reseting the character controller contacts, which should get rid of being briefly deparented or things flickering for a frame when using triggers!

[h2]New Features:[/h2]
- Added physical "Fly" locomotion preset, which behaves similarly to fly, but detects collisions and allows grabbing (based on feedback of many people in the past)
-- This is now default part of new worlds (along with the old fly)
-- You can upgrade your existing worlds with this locomotion by using the CharacterColliderSetterTip tool, using the "Ensure Physical Fly" option
-- The original fly has been renamed to "Noclip" (icon created by @Coffee | Programmer)
- Added mechanism so physical locomotion module can change the default icon and color based on the preset
- The Zero-G locomotion preset now also has a custom icon to help differentiate it
- Added ÷dT (divide by delta time) node (requested by @H3BO3)
- Added an event system to efficiently detect when a world with particular session ID or world ID is opened or closed locally (this is currently mostly internal, required for the new World UI)
- Added "Trim Vertex Bone Weights to: 1/2/3/4 bones" to the StaticMesh, which allows trimming number of bone weights on vertices to a specific number of bones (based on issue by @DFliyerz)
- Added "Model" to the TouchController node, to help distinguish the Touch controller model (CV1 vs Quest/RiftS) (based on feedback by @Earthmark)
- Added systems in preparation for the Metamovie Venice Festival event (based on request from @Karel | CEO and @jasonmo)

[h2]Tweaks:[/h2]
- Host sending an invite to user will now allow the invited user to bypass the session Max User limit (suggested by @Shifty | Quality Control Lead)
- Changed default CTAA parameters to Temporal Edge Power 4.0, Sharpness Disabled and Adaptive Sharpness 0.2 (based on testing from @Shifty | Quality Control Lead)
-- You still need to pass -CTAA to use this algorithm. Give it a test and let me know how this works.
- Added separate "Failed" asset load state when the asset fails to load, rather than "FullyLoaded" to help differentiate between the two
-- This fixes some cases where solid white texture shows up instead of the dark checkerboard for improperly loaded asset
- Neos Initialization will now show which platform interface is being initialized at the moment
- You can now also activate Viveport support by placing "viveport" empty file next to Neos.exe

[h2]Bugfixes:[/h2]
- Fixed tab character being inserted twice when the "Tab" button is pressed on the virtual keyboard (reported by @Shifty | Quality Control Lead)
- Fixed in-game cameras not working when CTAA antialiasing is enabled (reported by @Hayden (PolyLogiX - ZyroDesign) and @G59[JP])
- Fixed Text rendering breaking when none of the provided fonts contains a space glyph (note that tab characters will use unit spacing, so it might not match the font you're using) (based on report by @jeana)
- Fixed a bug in the physics engine where CharacterController jumping would clear all contact pairs without distinguishing the type of the collider
-- This fixes Collision End event being sent from a collider when the player jumps, even if they're still fully in the volume of the collider (reported by @Rue Shejn | Artist 3D)
-- This can also potentially fix players getting randomly briefly deparented from vehicles using CharacterParenter (previously reported by @DeliriousJax, @GearBell and others)
- Fixed ButtonEvents node not unregistering events when deleted, causing the registered buttons to break and also potential memory/source leaks (based on reports by @Earthmark, @SmolCookie and @Shifty | Quality Control Lead)
- Fixed world crash due to not being able to find a free user allocation ID when the max user limit has been lowered and new user joins

2020.8.5.1178 - CTAA antialiasing support, text rendering fixes (spaces tabs)

A bit smaller build, but with some important stuff. It has a bunch more progress on the World UI and underlying systems for it, but also some other important bits that I don't want held up by the other work.

For example, this build adds optional CTAA (Cinematic Temporal Anti-Aliasing) support in place of the FXAA! There are also some important improvements for text rendering, which should fix the cases of spaces not being visible with the cursor at the end of the text and missing support for tabs! (\t) Turns out I never implemented support for them in the first place, so they were just completely ignored in the text.

[h2]New Features:[/h2]
- Added optional CTAA (Cinematic Temporal Anti-Aliasing) support (requested by @Enverex and @Cyro)
-- To enable, pass the -CTAA argument on command line, otherwise FXAA is used
-- You can also override the default settings with following parameters:
--- -CTAATemporalEdgePower - default 1.0
--- -CTAASharpnessEnabled - default True
--- -CTAAAdaptiveSharpness - default 0.1
- Added tab character '\t' rendering support to the text rendering (based on report by @ProbablePrime, @Enverex and @Shifty | Quality Control Lead)
- Added NineSliceSizing to UIX Image, which allows changing how is the size of the 9-slice border computed (currently available: TextureSize (default), RectWidth, RectHeight)

[h2]Tweaks:[/h2]
- Added OnStartedDrive and OnStoppedDrive passthrough impulses to DriveValue node (requested by @Zyzyl)
- Tweaked caret & selection positioning in text rendering system, to use the pen position for the last glyph, rather than its width
-- This fixes the last space being invisible when the caret/selection is at the end of the text (reported by @ProbablePrime and @Enverex)
- Pressing Tab on physical keyboard will now correctly insert the tab '\t' character into a text field if it's being edited
- Reverted the aspect ratio compensation for Stereo videos on import (based on report by @CuriousVR)
-- It can still be manually setup on the VideoPlayer
- AudioReverbZone now respects the Enabled property (based on report by @Rukio)
- Upgraded to Unity 2019.4.7f1 (from 2019.4.6f1)

[h2]Bugfixes:[/h2]
- Tweaked the async tasks for TwitchInterface to use a separate thread pool, rather than the fixed background workers, which could help fix issues where all background workers become stuck and cause UI to stop updating (based on reports by @Rukio)
- Fixed New Directory dialog not rendering correctly (reported by @Hayden (PolyLogiX - ZyroDesign))
- Fixed Sphere Collider having a broken flash highlight (e.g. when changing grabbable status or character collider)

2020.8.3.1234 - UIX RawGraphic, Xiexe Blend Modes, networking and UIX fixes...

More goodies related to the work on the new World UI! New RawGraphic for UIX, UI masking / stencil support for Projection 360 and more.

Xiexe Toon material has gotten upgrades as well, with support for all blending modes that Flat Lit Toon had and there's now full conversion function, which should translate old Flat Lit Toon nearly 1:1. I'll deprecate Flat Lit Toon and auto-convert everthing soon, THIS IS YOUR LAST CHANCE to report any missing things or problems with conversion before it's forced!

Tweaks and bugfixes for networking are included as well. Friends list will now use LAN IP if available when joining and the relay not working correctly has been fixed. Sessions that have ended are now correctly detected again, rather than hanging on connecting endlessly. And also another elusive bug causing UIX to stop updating was finally fixed!

[h2]New Features:[/h2]
- Added RawGraphic UIX graphic, which allows using raw material and material property block in UIX
-- It supports auto-adjusting UV's to preserve aspect ratio of given RectTransform it's on
-- It also supports generating optional Normal and Tangent data, which is necessary for certain materials (e.g. PBR materials, which can now be used with UIX if they're propertly configured)
-- It also supports a custom material property block, which allows efficiently sharing a single material, while overriding certain properties
- Added BlendMode support for Xiexe Toon Material (it now supports, Opaque, Cutout, Transparent, Alpha, Additive and Multiply) (requested by @Turk )
- Added OffsetUnit, OffsetFactor, ZWrite and ZTest support to Xiexe Toon (requested by @Hayden (PolyLogiX - ZyroDesign))
- Added Stencil, ColorMask and RectClip support to Projection360 shader, making it work correctly with masking in UIX canvases
- Added Pressing and HoverStay events to buttons (UIX Button and Physical Button), which are fired for the whole duration of hover or press
-- Button Events node now exposes those new events as well
- Added Projection360PropertyBlock which allows overiding the texture and perspective projection parameters efficiently
- Added SizeCompensation to VideoPlayer, which allows compensating the aspect ratio of the video playback (based on feedback by @CuriousVR#9828)
-- The video importer will also setup [0.5, 1] compensation for horizontal stereo and [1, 0.5] for vertial by default, to prevent videos from being squished
- Added "OverrideOwnerId" to Workspace, which allows loading workspace of another user/group and can be used to easily load customized UI's for various events (added based on request by @Karel | CEO on behalf of @jasonmo for the Metamovie project)
-- This is currently restricted to the Neos groups for safety reasons, mechanism to add more allowed owners will be added later
- Added "Readonly" to Workspace, which prevents the workspace from being saved on changes
- Added conversion code from Flat Lit Toon to Xiexe Toon, which tries to match the look as closely as possible
-- IMPORTANT!!! Since Xiexe now should have pretty much feature parity with Flat Lit Toon in Neos, I'll be removing Flat Lit Toon soon and auto-converting all instances. THIS IS YOUR LAST CHANCE to check for any conversion problems and report them (they will still be fixable afterwards for old content, but you'll have to live with them until they're fixed)

[h2]Tweaks:[/h2]
- LogiX relay nodes (value and Impulse) will now "dissolve" when deleted with visible visuals (implemented by @Coffee | Programmer)
- Common material interface now also defines normal map scale/offset and normal scale, making those properties transfer when converting materials if they're present and supported
- Changed the default shadow ramp for Xiexe Toon to use a softer one (based on suggestion from I-forgot-who-sorry ;_;)
- Added TikTok to supported video services for direct import (requested by @Theo | Video Production)

[h2]Bugfixes:[/h2]
- Joining users through the friends list will now fetch locally discovered session info if it's available
-- This will allow the connection to be made directly on LAN if possible, rather than going through the cloud, fixing where it's not possible to connect to local sessions/headless on some networks (based on report by @Tekno Catron)
- Fixed a race condition in Text component, which would randomly break UIX canvas, causing it to stop updating (could be pretty rare, to common depending on the system) (reported and many logs from testing builds provided by @KierDran to fix this issue)
- Fixed OpenWorld not opening the world after it has already been opened once, unless the WorldLink is changed (reported by @Dante)
- Added extra logging for developer tooltip exceptions when selecting objects to help diagnose problem with long freezes (based on report by @Shifty | Quality Control Lead)
- Fixed incorrect detection of sessions that have ended, causing them to get stuck on "Establishing connection" rather than giving an error (reported by @Hayden (PolyLogiX - ZyroDesign) , @Enverex, @Anomalous and others)
- Fixed cloud relay not parsing the new session URL's correctly after recent changes, causing the connection to get stuck when NAT punchthrough doesn't work (based on report by @AdmiralSoap through @Shifty | Quality Control Lead)
- Fixed StringRemove node throwing an exception when the number of characters to remove is less than 0 (reported by @Alex from Alaska)

Metamovie at La Biennale di Venezia Film Festival, Metaverse Maker Competition

Hello and welcome back to the Neos Weekly Update!

This week we have a few exciting community updates to bring you, involving Neos’ involvement with the MetaMovie Project, which has been accepted by La Biennale di Venezia film festival! We’ve also got the Creator Jam competition to talk about, so check out the news below!



[h2]MetaMovie Project @ La Biennale di Venezia Film Festival[/h2]
The team within the MetaMovie Project have shown their hard work and dedication through various previews and progress videos, and they’ve been accepted to show their hard work off at the La Biennale di Venezia Film Festival!

The team have spent a year or more building the sets, worlds and avatars from the ground up, so to have their work shown at one of the worlds largest film festivals is truly an amazing and honorable accomplishment.



Jason Moore, the director of this project, has been amazing to work with. Below, you’ll find an excerpt of his, detailing his excitement for being able to make his team’s project a part of the festival:

Originally posted by Moore
Having Alien Rescue invited to the VR Expanded area of the 77th Venice International Film Festival is a dream come true as this is one of the world’s most prestigious VR showcases. And it only happened because of the power of the Neos metaverse engine and the creativity and hard work of the Neos community.

Nexulan, Aegis Wolf, RueShejn, Lewis Snow, Ultranique and many others have poured hours of time and energy into this project and without them and the entire Neos community this would never have happened.

During the week of the festival, September 2nd-12th, we’ll be running live performances for festival pass holders and I will personally be inviting every artist and creator I meet at the fest to come tour Neos and see for themselves why it’s the best place on Earth to build, program, imagine and create.

Stay tuned to the Weekly Update for more information as we continue the coverage on this project and its entry into the La Biennale di Venezia Film Festival.

[previewyoutube][/previewyoutube]

[h2]Creator Jam’s Metaverse Maker Competition[/h2]
Medra and his group of creative friends are holding a massive, month-long competition with an equally large prize-pool, with about $1700 thousand in USD worth of NCR and may grow to be over $2000. Below is an excerpt from Medra’s Creator Jam discord, laying out the beginning announcement of the competition:

Originally posted by Medra
Super exciting news! Creator Jam will be holding it's first ever month long competition:

Metaverse Maker Competition
A date has been set:
September 1st-October 1st 2020.
Free entry. Anyone can participate.

We are still in the preparation stage and would like to raise as much prize money as possible. So far we have $1650 USD worth of NCR and a lot of CDFT to contribute. I'd like to see us raise at least $2000+ in NCR towards the prize pool.

Sponsors send NCR to the Creator Jam or Medra accounts. Any sponsor who wants to be recognized specify this in the NCR message details.
USD, EUR, etc... are accepted, but NCR is preferred.

Those of you Neos old timers remember the Neos Creator Contest and how much positive fervor surrounded that time. Let's help create another positive buzz in the community.

More details will be coming soon!


[previewyoutube][/previewyoutube]

It has been a while since we held our own Neos Creator Contest and the community has grown considerably since, so we’re very excited for this event, as we’re sure it’ll be way bigger than NCC and we’ll see even more amazing stuff.

We hope many of you will be able to participate, whether it’s to compete for the NCR and CDFT prizes, custom official badges or just the fun of collaborative creation! If you'd like to learn more, join the Creator Jam Discord.

[h2]Progress on World UI and custom persistent session ID / URL[/h2]
As part of the work on the new World UI, many related systems are being refactored and extended with new capabilities. The world/session discovery system has received many improvements and fixes and has been extended, so components in Neos can efficiently listen to updates to sessions.

Each hosted session now also includes information about which world it actually represents, which will allow the new UI to group the information and show all instances of each published world.

One of the major additions thanks to this refactoring is the ability to use a custom permanent session ID for your hosted worlds. Normally the ID is random and changes every time you restart the session, but with the new system you can configure your headless client to use a specific ID every time, in the format “:”.

We’ve also added a component SessionInfoSource, which will automatically populate its fields with live data from a session with given ID, such as whether the session is running, what is its Name, how many active users it has, thumbnail URL and more.

What this means in practice is that you can now create interactive portals in your worlds that will always link to a particular session. You could for example make the portal light up whenever the session is live, show a thumbnail inside of the portal and transition the user to the world when they walk through.

We’re curious to see how you’ll use this functionality to interlink the worlds inside of Neos and hope this enables some new interesting workflows. There’s still a lot more to come as we work on the new World UI piece by piece, so stay tuned!

[h2]Procedural Capsule Mesh, Small optimizations and more[/h2]
As usual, Neos has also received a bunch of smaller additions, tweaks and bugfixes. We have finally gotten a procedural capsule mesh, completing the set of basic primitives and providing visuals for the collider primitive as well.

[previewyoutube][/previewyoutube]

It’s now also easier to setup animations on imported 3D models when the model comes with the mesh and animations in separate files. Simply attach a new Animator component on the root of the mesh, drop in the animation clip from the imported animation file and click the “Setup fields by name”.

We patched up many bugs as well. The elusive bug with text rendering sometimes showing the wrong symbols has been patched up, as well as a hard to find race condition that would break UIX and prevent it from updating on certain machines. Another bug that would make the UI freeze for a long time was patched up as well.

If you’d like to read more, check out the #neos-updates channel on our Discord!

[h3]July Community Showcase[/h3]
This Friday we've done our regular end-of-the-month community showcase livestream, showing some of the amazing stuff you have created over the past month. If you've missed it, you can watch the archived footage here:

[previewyoutube][/previewyoutube]

[h2]What’s next?[/h2]
With a lot of preliminary parts in place, we’ve now started implementing the actual UI for the new world browser, so hopefully you’ll be able to see and play with it soon! There are still some underlying tasks that need to be done to support it, but they’ll provide other new features on the side as well.

Thank you very much for reading this weekly update and helping Neos to grow into a powerful mature platform!

2020.8.1.782 - Fix for increased server load, flash highlight improvements

A quick patch, fixing a bunch of issues, including one that caused the server to be recently hammered with too many requests, making cloud stuff randomly break. If you're running a headless, please update ASAP!

[h2]New Features:[/h2]
- Added "ExcludeColliders", "ExcludeMeshes" and "ExcludeDisabled" inputs to FlashHighlightHierarchy node (requested by @Zyzyl)

[h2]Tweaks:[/h2]
- Merged OpenLink and OpenWorld nodes into one, simplifying the usage
-- Existing instances of OpenLink are autoconverted
-- You can now use either URL or WorldLink as the source (WorldLink takes priority over URL, but generally you only want to use one)
-- It also fixes the WorldLink input not properly accepting all world links (reported by @Dante)
- When unexpected error occurs while processing mesh on StaticMesh or StaticTexture2D, the button will now indicate Error, rather than getting stuck on "Processing..." indefinitely
- CapsuleCollider is now highlightable (e.g. with the Flash Highlight Hierarchy node) thanks to the new CapsuleMesh

[h2]Bugfixes:[/h2]
- Fixed clients connecting to headless servers on LAN through NAT punchthrough rather than directly discovered local IP, preventing the user from joining headless on LAN on networks without support for loopback (reported by @Cyro and @Tekno Catron through @Shifty | Quality Control Lead)
- Fixed equality comparison for SessionInfo incorrectly considering identical session info data as different
-- This fixes session info being sent to the cloud every update rather than just on changes, causing heavily increased server load and making many requests fail (e.g. causing sync errors, reported by @MilkTheCow, @Enverex, @Dante, @Zane and @Shifty | Quality Control Lead)
- Fixed empty meshes with zero vertices breaking the Append mechanism, breaking any mesh processing that works on a copy of the mesh data (reported by @Enverex)