1. Neos VR
  2. News

Neos VR News

2020.8.23.867 - Progress on World UI, UIX additions, tweaks, bugfixes and more

Some more progress on the new World UI and a bunch of related things to it - some additions, tweaks and bugfixes to UIX. Some other unrelated additions, tweaks and bugfixes as well, so they don't get held up by the work on the new World UI.

[h2]New Features:[/h2]
- Added "IsHostAccessAllowed" LogiX node (under Network) which indicates whether a given host is allowed to be accessed or not, without prompting the user with the dialog (based on request by @InnocentThief)
- Added Perspective360Panner which provides configurable panning behavior for the Perspective projection with the Projection 360 material
-- This is separated behavior from the 360 preview panning that the new World UI uses, making it usable for your own behaviors
-- It requires a button component on the same Slot that sends hover events
- Added "RectTransformLerp" which allows lerping a RectTransform in UIX canvas to the location and size of another
-- The lerped RectTransform must come after the rect it's being lerped to (that is either be deeper in hierarchy or later in sequence in the hierarchy). Otherwise the behavior is undefined.
-- Lerped RectTransform must also not be driven as part of UIX
- Added "HideWithNoMaterial" property to RawGraphic, which will skip generating the graphic geometry if the material is not assigned
- Added Avatar LogiX Transfer Wizard, which helps transfer some LogiX setups across avatars
-- Currently this is very rudimentary and will only transfer blendshape drive targets to blendshapes of the same name on another avatar
-- It will be expanded to support transferring more things in the future as needed/requested
- Added MockupMouthTrackingSource which allows testing the mouth/lip tracking drivers and systems by providing raw values (under Input/Mockup Devices)

[h2]Work in progress features:[/h2]
- Generalized WorldItem to be abstract item without any visual representation, but just providing the data fetching and combining
- Added "WorldItemTemplate" and "WoldItemType" to WorldListManager to specify which type of world item will it generate
- Added WorldThumbnailItem, which is a specialization of the world item that show the world thumbnail with basic info (the one previously shown as WorldItem)
- Added WorldDetail, which shows up a compact information about world when clicked on, allowing to focus the represented world, join session or start a new one. This has an expanded mode as well which will display detailed information about the world and list all active sessions

[h2]Tweaks:[/h2]
- "Protect Avatar" is now enabled by default in the avatar creator (based on feedback by @Enkiko and @Enverex)
- Registration process now requires confirmation that the user is 13 years or older
- Tweaked UIX interaction mechanism to ignore any blank RectTransforms (ones that don't have any graphic on them or certain UI controllers like NestedCanvas or ScrollRect)
-- This fixes confusing cases, where a completely empty RectTransform (one without any visuals) would block interactions with Rects under it, when there's UI interactable in its parent hierarchy
-- IMPORTANT!!! This is a potentially breaking change, as it changes behavior of UIX user interactions. It should only affect very atypical corner cases, but if you are affected, let me know and I'll provide a solution to update your setup
- Some more security improvements

[h2]Bugfixes:[/h2]
- Fixed "CreateFieldUndoStep" not working correctly (reported by @Zyzyl)
- Fixed bright flashes when opening modal dialogs in UIX in some situations
- Fixed Rect clip versions of the Projection360 shader being corrupt
- Fixed LogiX display node showing "null" instead of formatting it properly (reported by @0utsider | Programmer)
- Fixed typo in "LipLowerLeftRaise" on mouth tracking data

2020.8.20.234 - UIX Modal Dialog system, saving screenshots, MipMap bias, fixes

Another new subsystem was added for the new World UI - modal dialog system for UIX. I've switched over the Login page to it if you'd like to see it in action.

This build also has a bunch of other smaller additions, like ability to save photos captured by others as you local screenshots or exposed MipMap bias property on textures, as well as several bugfixes (e.g. making the new LogiX wire grabbing work with multitools).

[h2]New Features:[/h2]
- Added ModalOverlayManager component (UIX/Interaction) which will take care of instantiating modal dialogs for any elements under its hierarchy that requests them
-- It allow configuring the root where the modal dialog is spawned and the modal UI template
- Added ModalOverlay component which is the base behavior for the modal overlays, exposing ShowLerp property which allows animating the modal overlay in and out (you can use this to build your custom visuals)
- Added RadiantModalOverlay component which is a programmatic ModalOverlay template that blurs and partially fades the background and displays the content on top
- Added "InteractionBlock" component (under UIX/Interaction) which allows explicitly blocking any UIX interactions from passing through the graphic it's on (it will respect the Enabled state)
- Added "FillRect" to RawGraphic, which allows controlling the relative size of the generated quad to the RectTransform it's on
- Added a diagnostic of unread notifications by pressing the F9 key, which will print out where the number is coming from to the log (based on report by @Faolan (RAD))
- Added ability to save photos captured by other users as own screenshots, by grabbing them and selecting "Save as screenshot" in the context menu (requested by @orange)
-- This will save the screenshot to all locations (Steam Screenshots, "Pictures" folder in Documents and any other future locations) as if it was photo captured by you
- Added "MipMap Bias" property to Static Texture 2D and procedural textures (requested by @H3BO3)
-- Negative values will make the textures sharper (at cost of performance impact), while positive ones will make them blurrier
-- Asset variant system will automatically combine texture requests to use the lowest bias requested. If there is a request for texture with lower bias, it will affect all textures

[h2]Tweaks:[/h2]
- The login dialog now uses the new modal overlay system instead of a separate dash screen
- RTF tags are now stripped from world name when generating debugging strings (this is mostly internal change, will improve readability of logs and other debugging information)
- Additional security improvements (based on report from @Rue Shejn | Artist 3D)
- Upgraded Oculus SDK to 19.1 (this includes OVRPlugin upgrade to 1.51.0 from 1.48.0)
- Neos will now auto-initialize SR Anipal (HTC Vive Eye & Lip tracking) if it finds it installed in default location ("C:\Program Files\VIVE\SRanipal") (based on feedback from @フリック)

[h2]Bugfixes:[/h2]
- Fixed TooltipMultiplexer not passing through grabbing events
-- This fixes the LogiX tooltip grab to create new relays not working with multitools (reported by @Alex from Alaska)
- Fixed LogiX tip breaking when trying to drag-grab wires on some wires with missing targets (reported by @Gunnar0 and @Shifty | Quality Control Lead)
- Added guard to prevent user from getting respawned due to errors in OnGrabbing event in ToolTips (based on report by @Gunnar0)
- InteractiveCamera will cleanup itself on startup if it's corrupted (missing main or secondary camera) (found in a log from @Enverex)
- Fixed potential bugs in the cloud message fetching mechanism due to local system timezone issues due to not using UTC time
- Fixed "Recieved" typo when receiving tokens (NCR, CDFT, KFC) in the friends list (reported by @Blaze)

2020.8.18.447 - Dynamic Variables, LogiX wire shaping, security fixes and more

Some more progress on the World UI! The WorldListManager is now pretty much complete, with full support for filtering, searching and sorting. Now I'm building things around it to actually provide UI for that functionality too, which led to a brand new system Dynamic Variable System!

First bits of the new Dynamic Variable System have been added, which allows you to automatically and efficiently link/sync values within the hierarchy based on their name and type. This is going to be used to dynamically link values between Facets in a Facet Container (e.g. for the new World UI), but it's a general system, so it can be used for anything! It will be extended to be easily usable with LogiX and add a lot of other behaviors on top.

WARNING: You can play with it, but I might still change some of the core things with it, so stuff you make can break. I'd recommend giving it about a week to stabilize, until then I don't guarantee compatibility. See #🎥devlog for more.

You can now easily shape LogiX wires with relays by simply pointing at them with the tooltip and holding grip! The FlatLitToon is now finally officially deprecated and removed, all existing instances will be autoconverted to Xiexe! This build also has a bunch of security improvements based on various independent reports and some other bugfixes.

[h2]New Features:[/h2]
- Added "DynamicVariableSpace" (under Data/Dynamic) which creates a shared space for named variables within the child hierarchy
-- Variables are identified both by their name and type. This means variable of type "int" named "MyVariable" and variable of type "float" also named "MyVariable" are separate independent variables
-- If you parent new dynamic variables under the DynamicVariableSpace, they will automatically sync to that space
-- The GridContainer on the Home screen is now a DynamicVariableSpace, making any dynamic variables within the grid sync up
- Added DynamicField (under Data/Dynamic) which links a target field to a named variable under DynamicVariableSpace
- Impelemented efficient mechanism for hierarchy changed events, which makes sure only parts of hierarchy that are subscribed will be updated (this is mostly internal right now, but will be used and exposed in various ways through other functions and systems)
- Added ability to quickly insert relays and shape LogiX wires by pointing the laser at them and holding grip (implemented by @Coffee | Programmer, requested by ykgamma on GitHub (sorry don't know your Discord handle!))

[h2]Work in progress Features:[/h2]
- World List Manager is mostly complete now for its initial functionality. It has full filtering/searching support and sorting support.

[h2]Tweaks:[/h2]
- Deprecrated FlatLitToon material, all existing instances are autoconverted to equivalent Xiexe Toon
-- Most references to fields should be auto-remapped as well to equivalents, so any LogiX animating them should still work
-- If conversion doesn't handle something correctly on your objects or worlds, DO NOT SAVE and report the issue. As long as the original is still saved, a tweaked autoconversion process can be re-run
- Several security improvements (based on report by @Earthmark, @Turk and others)
- The pick node and pack actions on the Logix tip now use the bendy lasers (fixed by @Coffee | Programmer)
- Categorized TextField under UIX/Interaction, which is necessary to setup editable text field with UIX
- Some last Metamovie-related additions to the headless

[h2]Bugfixes:[/h2]
- When syncing worlds/items, the cloud server will now return 429 error code when the sync ends up database throttled rather than BadRequest
-- This will trigger automatic retry logic on the client and hide random transient database spikes, rather than showing a Sync Error to the user (based on report by @Earthmark)
- Categorized "VirtualParent" under Transform/Drivers
- Fixed potential memory leak in VirtualParent component
- Fixed external assets on saved objects running their OnAttach behavior when they're loaded, potentially corrupting the state of the asset and causing loading errors

Metaverse Maker Competition with over $2000 in prizes, Sep. 1st to Oct. 1st 2020

Hello everyone and welcome back to the Neos Weekly Update!

This week we’re talking about the Metaverse Maker Competition, hosted by Medra and the Creator Jam. It’s coming up in about 2 weeks and there’s a huge prize pot for contestants, with over $2000 worth of NCR and more in CDFT!

We have included the official announcement and information below by Medra. Make sure to check out the new #mmc-2020 channel on our official Discord as well for any updates and discussion. You can also join the Creator Jam Discord server here.

We’ve also got some information on updates to the world menu and more below.



Metaverse Maker Competition
[h3]presented by Creator Jam[/h3]

[h2]Introduction[/h2]
Come take part in the excitement with the biggest contest in Neos ever—Metaverse Maker Competition. More prizes, More categories More fun. Work collaboratively or alone. Create whatever you wish: worlds, games, avatars, effects, code, gadgets, tools…

Since the last contest Neos’ community has tripled, more features have been added, more documentation is available, and lot’s more talented people are here. We’re super excited to see the crazy stuff you all will make!

Special thanks to our sponsors Neos(Solirax), ViARsys, Sirkitree, Jason Moore, Medra, Anomalous, Earthmark, ProbablePrime, Orange, A Monsoon of Babies, and Creator Jam for making this contest possible.

[previewyoutube][/previewyoutube]

[h2]Quick Info[/h2]
[h3]Requirements[/h3]
Free entry. Anyone can participate. Individual or groups allowed.
[h3]Date[/h3]
September 1st-October 1st 2020.

[h3]Prizes[/h3]
20,000 NCR (~$2000) Total
30,000 CDFT Total
Official Badges (supported by Neos)
Digital Trophies
Neos Swag

Prizes are split by category and placement (1st, 2nd, 3rd, and honorable mention).

[h3]Categories[/h3]
  • World – Social, game, narrative, interior/exterior environments, etc...
  • Avatars – If the avatar is equippable, it counts
  • Gadget/Tools+ - Various equippable(grabbable) objects, utilities, code, effects, anything that doesn’t fit into the World or Avatars category


[h3]Rules[/h3]
Check details for a listing of rules.

[h3]Timeline[/h3]
Start Date – Begin Creating.
End Date – Submitted as a world orb with a TAG name MMC and category.
Voting/Judging Period – Explore submission. Participate in the audience vote.
Winners Announcement – Participants gather together. Winners are announced and prizes awarded on the Creator Jam Twitch Stream inside Neos.

[h3]Details[/h3]
Important Dates Start Date: September 1, 2020 14:00 EST(UTC 18:00) Tuesday
End Date: October 1, 2020 14:00 EST(UTC 18:00) Thursday

Audience Voting Begins: October 2, 2020 14:00 EST(UTC 18:00) Friday
Audience Voting Ends: October 4, 2020 14:00 EST(UTC 18:00) Sunday

Winner’s Announced: October 10, 2020 14:00 EST(UTC 18:00) Saturday

[h3]Prizes Breakdown[/h3]
Each category has a First, Second, and Third Place winners:

First Place winners will receive:
4000 NCR(~$400)
5000 CDFT
3D MMC diamond trophy
Unique custom name badge.

Second Place winners will receive:
2000 NCR(~$200)
3000 CDFT,
3D MMC golden trophy,
Unique custom name badge.

Third Place winners receive:
670 NCR(~$67)
2000 CDFT
3D MMC silver trophy
Unique custom name badge.

Honorable Mentions will receive Neos swag.

All participants will receive a custom name badge.

[h3]Rules[/h3]
  • In the spirit of the competition participants start creating on the Start Date. Thinking of ideas and formulating a team is fine beforehand.
  • Multiple entries are allowed.
  • Teams are allowed. Participants can be on multiple teams.
  • Sponsors can participate. Judges cannot participate.
  • All submissions are in the form of a submitted World Orb properly tagged.
  • All world orb submissions must be tagged with "MMC". When opening the world browser they should have an "MMC" tag to be considered for the competition. You can add this by editing the world through its world orb or by adding "MMC" to the name.
  • All world orbs should have a tag of which category they wish to participate “World”, “Avatar”, or “Gadgets/Tools+”
  • Do not make any edits submitted worlds after the end during the judging period.
  • Credits should be displayed somewhere easily seen or able to be found easily in world.
  • Any assets used must be credited properly with appropriate licensing stated. Note: Turbosquid and CGTrader licenses do not allow use in Neos.
  • No Unauthorized copyright material. Fair use is allowed but major caution is advised. Fair use is a very misunderstood subject.
  • Winners that are part of a group will receive prize evenly split unless requested differently before judging begins.


[h3]Considerations[/h3]
Factors that will be preferred but not required.
  • Original works
  • Open source
  • Building “from scratch”
  • Entry and all assets within are public domain or Creative Commons Attribution 4.0 International (CC BY 4.0) license https://creativecommons.org/licenses/by/4.0/


[h3]Voting/Judging[/h3]
Audiences vote will add up to 49% of the voting and 51% judges. Any registered Neos user can vote during the 3 day audience voting period. Each registered user gets one vote per category.

Works will be judged on creativity, skill, uniqueness, usefulness, and many other qualities.

[h3]Questions?[/h3]
If you have questions feel free to:
  • message @Medra#4918
  • post in Creator Jam discord’s #jampionship channel https://discord.gg/z8KjeAx
  • NeosVR discord’s #mmc-2020 channel https://discord.gg/QaGRvew


------------------------------------------------------------------------------------------------------------

[h2]Progress on the new World UI[/h2]
We’ve made quite some progress on the core of the new world browsing UI. This involves not only the UI itself, but a lot of the supporting background and cloud services.

The cloud backend for searching and filtering has been refactored to support proper pagination with efficient caching, making the system faster and more elegant and flexible as a result. On the client side the new browsing UI will always filter existing results locally when the search or filtering criteria change, while fetching new data from the cloud in parallel.

[previewyoutube][/previewyoutube]

As a result this makes the browsing and searching experience much more responsive and works not only with published worlds, but also currently running sessions or your opened worlds.

The WorldListManager component now fully supports merged browsing of opened worlds, active sessions and published worlds with a single unified interface, with all filtering and sorting options. All the heavy lifting is done on background threads as well, reducing stutters and improving responsiveness. During the testing, we made it display all of the published Neos worlds at once as a stress test and still maintained a stable framerate.

[previewyoutube][/previewyoutube]

There’s still a lot to do to finish the whole UI, but this component serves as a backbone of the new UI and was the hardest part of the system. It’s designed to be highly flexible as well, so you can easily customize it to build your own Facets. For example it can be configured to only display currently opened worlds or active sessions of your friends for quick access on your dash or on your avatar (once you can place facets there).

[h2]LogiX debugging visuals, UI freezing bugfix and more[/h2]
As usual, we have done some other smaller, but important changes to Neos. LogiX now has a bunch of new nodes for quickly rendering various debugging visuals, like vectors, lines, spheres, triangles or text. Similarly the Raycast node can visualize any performed raycasts to make the debugging process much easier.

We have also significantly mitigated Neos’ UI freezing for seconds even minutes at the time due to poorly handled multithreading in the Twitch API library. So far this seems to have gotten rid of the problems plaguing some of our users, particularly Twitch streamers, but let us know if this is still an issue for you!

In preparation for the Metamovie presentation at the La Biennale di Venezia Film Festival we have finished some temporary additions to Neos and published a build at a special “metamovie” branch. Same build will also be available at Viveport for the festival.

If you’d like to know more about the changes done over the week, check out the #neos-updates channel on Discord or the patch notes on Steam.

[h2]What’s Next?[/h2]
With the core of the new World UI done, we’ll be now building other systems around it to finish it off. There are two major general additions that will be added to support it, one of them being a modal dialog system for UIX and the other dynamic parameter binding across facets.

These changes will allow us to build the overall UI in a modular manner, having the searching and filtering options as separate pieces of UI that will dynamically link to the properties of the WorldListManager. We’ll keep you updated in the #devlog channel on our official Discord, so check it out if you’d like to see the latest development progress.

Thanks again for reading this week’s edition of the Neos Weekly Update! We really hope many of you join in on the Metaverse Maker Competition and make this the best Neos Competition yet! Get your game faces on and your building tools ready!

2020.8.15.474 - LogiX Debuging Visual Nodes, Raycast debug visual, bugfixes

Smaller build again, most of the work goes into the new World UI, it now has proper implementation of filtering, with various filtering options for both worlds and live sessions (and some shared), with a few more to come.

For some new additions that you can use right now, there are now Debug visual nodes and visualizing raycasts! This should make building things with LogiX a fair bit easier!

[h2]New Features:[/h2]
- Added a set of Debug nodes for easily drawing various debug visuals
-- You can draw: Text, Vector, Line, Triangle, Sphere, Box and Axes
-- Each visual supports a "Duration" parameter, which indicates how long it will linger after drawing (default is 0, it's in seconds)
-- These are FOR LOGIX DEBUGGING PURPOSES ONLY. I strongly discourage using them for any graphics and rendering visuals, they're very heavy on network and performance. Remove them from your setup after you're done.
- Added "DebugDuration" input to the RaycastOne node, which will render a debug visuals from the raycast (use 0 to display for a single frame, larger value for it to linger, negative for off) (requested by @Castle)
-- It will draw the raycast line (yellow) and all hits (red sphere for position, blue arrow representing the hit normal and green triangle if mesh collider was hit)
-- Same as above, only for debugging purposes only, using them for actual visuals is very inefficient
- ValueEqualityDriver now has "UseApproximateComparison" toggle, which will use approximate equality comparison for floating point datatypes (based on request by @Rue Shejn | Artist 3D)

[h2]Work in progress features:[/h2]
- World List Manager now has various world and session filtering options, which will filter out both the local list immediatelly for responsiveness and run a new search query on the cloud in the backgrounds to load more records
- Numerous bugfixes and tweaks for the World List Manager to get it closer to ready to use state

[h2]Tweaks:[/h2]
- GridLayout will no longer make items too large when there's not enough of them to fill a whole row (it will act as if the whole row is filled when calculating the adjusted size)
- When creating new empty object, it will automatically be selected in the inspector (requested by @guillefix)

[h2]Bugfixes:[/h2]
- Compiled missing Linux variants of Xiexe Toon shader (based on report by @RoxyBoxxy)
- Fixed Cloud-generated records not being deletable (based on report by @Enkiko)
- Fixed issues when navigating records at particular paths on Linux
-- This would incorrectly parse the records paths, affected some cloud functionality as well, like ensuring that synced records have containing folders generated and don't end up orphaned