1. Neos VR
  2. News

Neos VR News

Physical Fly & Noclip locomotion, CTAA Antialiasing, Xiexe Toon blend modes

Physical Fly, No-Clip, CTAA AntiAliasing, Xiexe toon feature parity with Flat-lit Toon, MetaMovie Additions, bugfixes

Hello, and welcome back to the Neos Weekly Update! We’ve got quite a lineup of new smaller features to talk about this week. We’ve renamed Fly to Noclip and have added in a new physical fly locomotion as the “proper” Fly.

CTAA Antialiasing has been added and Xiexe toon is now up to par with Flat-lit toon with its feature set! We’ve also got some smaller additions for the upcoming Metamovie project to keep things moving along nicely for it’s feature in the Biennale de Venezia film festival.



[h2]Physical Fly and Noclip[/h2]
We’ve got a new locomotion that will be installed automatically in newly created worlds (older worlds will have to upgrade their locomotion modules). Physical Fly works similar to our old Fly locomotion module, except your avatar will physically interact with objects instead of moving right through them. In this new locomotion mode, you have access to climbing, a feature not available in the old Fly locomotion module.

Fly has been renamed to Noclip (short for No Clipping) and has all of the original features of the original Fly locomotion. The new name better represents what it’s intended purpose is, as it’s primarily used for editing and easily moving through terrain and other structures.

[h2]Cinematic Temporal Anti Aliasing (CTAA)[/h2]
After many community requests, we’ve finally added Cinematic Temporal Anti Aliasing (CTAA) to Neos. Currently it’s an optional mode that needs to be enabled through a launch flag, but once all the bugs have been ironed out we can switch to it by default in place of the simpler FXAA.

Shifty, our Quality Control lead, has prepared some notes on CTAA below:

Originally posted by Shift
CTAA, or 'Cinematic Temporal Anti-Aliasing' is a post-processing effect that greatly reduces the amount of aliasing, or 'jaggies' that a user will see.

Aliasing is usually present at the edges of objects where there is a lot of contrast, but can also be seen on the inside surfaces of objects too. Generally speaking, it is a visually distracting 'shimmering'.

Being a temporal anti-aliasing solution, CTAA makes use of motion vectors (information about the positional change of the object each frame) in order to smooth the resulting image the user sees.

Users that wish to try out CTAA can do so by using the command line argument -CTAA. This command can be added to the launch options in Steam by right clicking on Neos VR in their Steam library, selecting properties, then setting launch options, and entering -CTAA.

There are additional command line arguments that allow you to control a few properties of CTAA.
-CTAATemporalEdgePower which has a range from 1.0 to 4.0, and is defaulted to 4.0.
-CTAASharpnessEnabled which can be set to either False, or True, and is defaulted to False.
-CTAAAdaptiveSharpness which has a range from 0.0 to 0.5, and is defaulted to 0.2.

The defaults were tuned to provide the greatest reduction in aliasing without introducing other distracting visual effects.


[h2]Xiexe Toon feature parity with Flat Lit Toon[/h2]
We’ve been working hard over time to bring Xiexe Toon up to par with all of the features that Flat-lit Toon have, so that we will eventually be able to remove Flat Lit and replace it entirely with Xiexe. Xiexe now supports transparency and other blending options, so now it can be fully transitioned to from Flat Lit Toon Toon.

We’re keeping Flat-Lit around just a little longer, so our community can let us know of any bugs they find with converting their Flat lit materials to Xiexe. This is everyone’s LAST CHANCE to let us know of bugs they encounter, so please, if your avatar or world is utilizing Flat Lit Toon, we highly encourage you to convert it to Xiexe toon before the forced conversion, so we can weed out and fix any last-minute bugs. We will fix any remaining bugs after, but you would need to live with the converted bugged materials until they’re ironed out.

[h2]MetaMovie Additions[/h2]
We’ve added some new features for a specific MetaMovie build of Neos, to ensure it’s an easy entry for the viewers of the MetaMovie. These new features won’t be accessible to the general population however, but were important for keeping things moving along nicely during the Venice film festival.

The reason we’re bringing it up here is we’ll be doing a test run of the MetaMovie itself, so keep a look out because we might have a need for testers!

[h2]Physics, UIX and other bugfixes[/h2]
As usual, Neos has also received many bugfixes, tweaks and other small improvements over the week. Notably we have fixed a bug where jumping would send collision end event from triggers, even if the player has remained completely within the trigger volume. This should make behaviors that depend on this (like parenting user to a vehicle) much more stable and reliable.

UIX and text rendering has also received various bugfixes, improving their reliability and ease of use. One of the major changes to text rendering was implementing missing support for tab characters, which would be previously completely ignored and reworked positioning of the text cursor, which previously would ignore the last space at the end of the text.

[h2]Community Highlights[/h2]
[h3]Music Visualizer World, by Orange[/h3]
This world is more like an immersive music video, as all of the objects within pulsate and move to the music! It’s a great place to show someone the potential of how music can affect a world. Great job, Orange!



[h3]Streamer Showcase: Snow SOS[/h3]
Snow has shown Neos off to thousands of viewers! Their sense of humor and comedic timing are amazing! If you watch Snow’s streams, I’m certain you’ll have a few laughs! Thank you, Snow SOS!

[previewyoutube][/previewyoutube]

[h3]Animated Dance Floor, by QueenHidi[/h3]
QueenHidi has made a fantastic dance world where the floor and lighting utilizes the pixels in a video of your choosing! Great for raves and parties! Nice world, QueenHidi!



[h2]What’s Next?[/h2]
We’re continuing to rework and extend the underlying subsystems for world and session management to support the new World UI and design new systems. The individual pieces are slowly coming together, so hopefully there will be much more to show within the upcoming days.

[previewyoutube][/previewyoutube]

Thank you for checking out our Weekly Update. We’d like to wish our new users a happy time with learning Neos and hope they make some great new friends!

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!