VAMLive

hazmhox

Moderator
Featured Contributor
Messages
1,504
Reactions
7,318
Points
173
hazmhox submitted a new resource:

VAMLive - It's alive!

⚠ PLEASE:
  • If you like this asset, consider liking and reviewing it for the community
  • Read the description, read the ingame help if you have any trouble. I will not answer private messages asking questions about things that are actually explained in the documentation/help.

View attachment 242470

How to use
  • Open or create a scene.
  • Create a two new empty atoms
  • On the first empty and go in the...

Read more about this resource...
 
Amazing so far. Is there a consistent way to trigger or recognize when a new camera/screen is added?

I've been able to get it working with 2 cam & 2 screen but I have to open and close the interface a few times before the new plugins/empty show as available in the screens.
 
Amazing so far. Is there a consistent way to trigger or recognize when a new camera/screen is added?

I've been able to get it working with 2 cam & 2 screen but I have to open and close the interface a few times before the new plugins/empty show as available in the screens.

I knew I had seen a case where the cam wasn't showing up in the list, but I couldn't reproduce the steps. As @CheesyFX mentionned in their review. I'll have to check it, this is nothing hard to fix.

Behind the scene, the screens are listing all the cameras available, and any new camera added sends a broadcast to the screens to update the camera list (or eventually if you rename a camera). I'm pretty sure there's a glitch happening somewhere that prevents the screen catching/listing a new camera added to the scene. I'll check it out : )

Obviously (we never know), the listing only happens if you have the camera plugin added to the empty. It won't show a basic empty without plugin.
 
hazmhox updated VAMLive with a new update entry:

Bug fixes and features

  • Fixed a bug where adding the camera first would prevent selecting it in the screen. Thank you @CheesyFX !
  • Added a new material/shader screenglitch01
Side notes:
  • I'm gonna add new shaders in the future, add an "offline mode" for the screen (which would be some kind of black screen with a big "offline" word).
  • I'm thinking of a way to handle the performances better when the camera are not in use. Either dynamically or by trigger...

Read the rest of this update entry...
 
Hi @hazmhox as someone who records VAM to make videos all the time, this is very exciting to me. Question though. I render 4K and use Nvidia to record that screen. To my knowledge there isn't a way to record two screens at once, at least not with the built in Nvidia recorder (I am using the ray tracing mod as well.) Is it possible to write a recording 'directly to disk' using your plugin? What would be amazing would be to setup 2 or 3 cameras and record the scene from 3 angles all at once in 4k directly to disk. Hopefully I'm explaining my question clearly, apologies if I'm not.
 
Very interesting! A quick question, is the performance from this better than the default window display camera (Assuming 1 display?)
 
Very interesting! A quick question, is the performance from this better than the default window display camera (Assuming 1 display?)

Assuming you're on the default settings, yup! The resolution is lower than the window camera. If you stick to the exact same resolution (which should be 4096 if I'm not mistaken), the overhead is pretty much the same : )

Hi @hazmhox as someone who records VAM to make videos all the time, this is very exciting to me. Question though. I render 4K and use Nvidia to record that screen. To my knowledge there isn't a way to record two screens at once, at least not with the built in Nvidia recorder (I am using the ray tracing mod as well.) Is it possible to write a recording 'directly to disk' using your plugin? What would be amazing would be to setup 2 or 3 cameras and record the scene from 3 angles all at once in 4k directly to disk. Hopefully I'm explaining my question clearly, apologies if I'm not.

hey! First, you should know that any mod is out of the question. If you'd render an image from a camera inside the game, it's straight from the rendering buffer of the engine, so pretty much any post processing like nvidia's mod will not "appear" on the final image.

Now, for 3 cams at 4K, I haven't tested a pure realtime save of the buffer for a camera... but knowing that super high end GPUs ( 3080Ti, 3090, 4080, 4090 ) have a maximum output resolution of 7680x4320, I highly doubt you could hope for a simultaneous 4096x4096 times 3 at proper performances from an engine. You could actually test it yourself just by adding three cams, three screens and seeing what perfs do you get.

We could compare VAM at high settings (with the physics and everything) to a super heavy game like Cyberpunk. If we're struggling to keep a game like that running at 60fps with all the fancy feature WITH DLSS, it's highly improbable that you could have three instances of the game running at once on a single computer.

So now, imagine VAM running FOUR instances (because 3 render to texture + main camera = 4), I'm pretty sure you can forget about a smooth render to a video :p
 
Wonderful, thanks for the reply, gonna implement it across all my MetaChat scenes. I also really appreciate all the controls you put on there :)
 
Wonderful, thanks for the reply, gonna implement it across all my MetaChat scenes. I also really appreciate all the controls you put on there :)

As mentionned in the update notes, I'm looking for a solution to improve the "sleeping cameras" to take less performances while inactive. Knowing your super fancy controls in MetaChat, this could improve the final impact if you're doing some screen switching or stuffs like that.

Also, as I was mentionning in the documentation. You could use the masked screens to fake "quality" at a distance, and for anything tiny (tablets, phones, camera screens), I would use super low resolution cameras. The fun factor of an interactable realtime camera/screen is way above having a 4K quality image in a tiny asset :p
 
Assuming you're on the default settings, yup! The resolution is lower than the window camera. If you stick to the exact same resolution (which should be 4096 if I'm not mistaken), the overhead is pretty much the same : )



hey! First, you should know that any mod is out of the question. If you'd render an image from a camera inside the game, it's straight from the rendering buffer of the engine, so pretty much any post processing like nvidia's mod will not "appear" on the final image.

Now, for 3 cams at 4K, I haven't tested a pure realtime save of the buffer for a camera... but knowing that super high end GPUs ( 3080Ti, 3090, 4080, 4090 ) have a maximum output resolution of 7680x4320, I highly doubt you could hope for a simultaneous 4096x4096 times 3 at proper performances from an engine. You could actually test it yourself just by adding three cams, three screens and seeing what perfs do you get.

We could compare VAM at high settings (with the physics and everything) to a super heavy game like Cyberpunk. If we're struggling to keep a game like that running at 60fps with all the fancy feature WITH DLSS, it's highly improbable that you could have three instances of the game running at once on a single computer.

So now, imagine VAM running FOUR instances (because 3 render to texture + main camera = 4), I'm pretty sure you can forget about a smooth render to a video :p
How about rendering 2 cameras directly to disk with 4k widescreen resolution (3840 x 2160)? I'm running a 4090. I'll play with the plugin and see what I can find.
 
How about rendering 2 cameras directly to disk with 4k widescreen resolution (3840 x 2160)? I'm running a 4090. I'll play with the plugin and see what I can find.

I'm gonna boost several options in the next patch:
- screen quality up to 8192
- anti-aliasing

You can in the meantime test with two 4096² textures and see what framerate you get. From there, imagine this + the overhead of writing let's say 60times per second (60fps) two textures of that size.

You're gonna get an idea if or if not, this might be doable.
 
Spoiler: I think it's not remotely possible due to the heavy lifting the PC has to do, on the GPU, CPU, RAM AND SSD. That's (almost) exactly the same case has wanting to run two games and run Geforce Experience recordings at 4k 60fps.
 
I'm gonna boost several options in the next patch:
- screen quality up to 8192
- anti-aliasing

You can in the meantime test with two 4096² textures and see what framerate you get. From there, imagine this + the overhead of writing let's say 60times per second (60fps) two textures of that size.

You're gonna get an idea if or if not, this might be doable.
I actually just got a PCI Gen 5 NVME, so 10Gbit per second throughput on the disk IO. We'll see how that turns out in real world.
 
As mentionned in the update notes, I'm looking for a solution to improve the "sleeping cameras" to take less performances while inactive. Knowing your super fancy controls in MetaChat, this could improve the final impact if you're doing some screen switching or stuffs like that.

Also, as I was mentionning in the documentation. You could use the masked screens to fake "quality" at a distance, and for anything tiny (tablets, phones, camera screens), I would use super low resolution cameras. The fun factor of an interactable realtime camera/screen is way above having a 4K quality image in a tiny asset :p

Hi hazmhox,

I had an opportunity to poke around in the Plugin, very promising! I liked that the display scales and maintains a high quality to the screens. People like to look at themselves in MetaChat after all :)

I even created a smaller display on my little camcorder prop, and it looks great! Do you recommend I put two cameras then? One for the HQ display and one for the Low Quality Displays?

Although, when I was switching things over from the original built-in WindowCamera a thought occurred to me. Player wouldn't be able record their Monitor anymore from the PoV of the Camera from this plugin

By Monitor, I am referring to the M Key Toggle.
1683788859596.png


As you probably know, when it is disabled, playing in VR the screen is normally black, unless the WIndowCamera is on, which people can use for recording using OBS/nVidia Experience/etc

Would it be impossible or too far out of scope to be able to display the camera's feed from your plugin to the Monitor?

The goal is to give people a way to make movies in VAM/MetaChat. Thoughts?
 
The goal is to give people a way to make movies in VAM/MetaChat. Thoughts?

Hi Moose!

I'd simply recommend to be creative!
From my point of view, I would add a secondary screen if and only if the angle is different. If you're for instance making a handled camera and displaying it on a big screen with a medium resolution to keep performance nice and smooth. If you display it on another screen, you will have better perf keeping only one camera and using the same source.

If you're adding a secondary camera even if the texture resolution is low, you're still adding another render texture on top of the first one. The overhead cost of adding another screen that relies on the same texture on the other hand is quite low.
You can confirm that by putting a single camera and, I don't know, 5 or 10 screens... you should see a really low impact compared to more lower resolution screens + the same amount of cams.

Exemple stress test I did: one cam at 2048², one character, 12 screens, the average did not even drop two frames per sec and is around 198fps. 100fps in 4096²
vamlive-12screens.jpg


As for the Monitor cam, my goal was never to replace the Window Camera, but simply to ground some camera/screens in the scene as an interactive/fun mechanic. I don't know what I could achieve with the monitor (since it is a vanilla feature and I'm not sure what I could and could not override).

But even tho you know way better than me what people do with MetaChat, I'm suspecting they might do something else than recording their monitor when they have their headset on :p

I'm not saying it's not interesting, just that the potential use for this purpose might be extremely niche. I prefer to stay focus on bringing new shaders and new features or performances optimization right now.

I could change my mind if suddenly dozens of people asked for that... but at the same time, I could argue that: why would you try to use a more complex setup ( several empties + plugins ), if the window camera does that for you natively.

Which makes me think of one alternate possibility: maybe the solution for a use case like that would be to grab the window camera texture instead as a potential source for a screen : )
 
Hi Moose!

I'd simply recommend to be creative!
From my point of view, I would add a secondary screen if and only if the angle is different. If you're for instance making a handled camera and displaying it on a big screen with a medium resolution to keep performance nice and smooth. If you display it on another screen, you will have better perf keeping only one camera and using the same source.

If you're adding a secondary camera even if the texture resolution is low, you're still adding another render texture on top of the first one. The overhead cost of adding another screen that relies on the same texture on the other hand is quite low.
You can confirm that by putting a single camera and, I don't know, 5 or 10 screens... you should see a really low impact compared to more lower resolution screens + the same amount of cams.

Exemple stress test I did: one cam at 2048², one character, 12 screens, the average did not even drop two frames per sec and is around 198fps. 100fps in 4096²

As for the Monitor cam, my goal was never to replace the Window Camera, but simply to ground some camera/screens in the scene as an interactive/fun mechanic. I don't know what I could achieve with the monitor (since it is a vanilla feature and I'm not sure what I could and could not override).

But even tho you know way better than me what people do with MetaChat, I'm suspecting they might do something else than recording their monitor when they have their headset on :p

I'm not saying it's not interesting, just that the potential use for this purpose might be extremely niche. I prefer to stay focus on bringing new shaders and new features or performances optimization right now.

I could change my mind if suddenly dozens of people asked for that... but at the same time, I could argue that: why would you try to use a more complex setup ( several empties + plugins ), if the window camera does that for you natively.

Which makes me think of one alternate possibility: maybe the solution for a use case like that would be to grab the window camera texture instead as a potential source for a screen : )

Thank you so much for your detailed response! Yeah I think I may use VAMLive to create a dynamic backdrop to a concert stage or something :)

The use cases I've seen are:
  • Recording a movie from the display monitor as described earlier.
  • As a simple in-scene display, to show other angles of interests that otherwise would be obscured if playing from a Person's PoV. Such as a wider angle.
  • Similar to above, a pseudo-mirror, where the Camera and display is facing the player, but in the same side the display is. Camera texture displays have noticeably much better performance than Vanilla Mirrors with the exception with a lack of depth in the texture.
My only grief with vanilla WindowCamera: Display is it's resolution of the texture stays the same when you scale up the node itself.
Compare the jagged texture of the planet in the display versus in-world below. Your cameras thankfully don't have this problem :)
(Pardon for the large screenshots to emphasize anti-alias and resolution)
1683915841196.png


However, the output to the Monitor itself is quite clear
1683915109200.png


ALTHOUGH, I did just have a good idea, a two-camera system. I would still use the vanilla WindowCamera to maintain the features it provides. Then simply "remove" that WindowCamera: Display, and use your VAM live for the in-scene display :). That should do it for now unless you come up with a more robust feature :)
 
Hi Hazmhox,

Great plugin as always; Definitely a must-have, the masks and size changes make this very versatile.

Echoing one question in the Reviews and that's if it's possible to turn off the user headset icon from being rendered? (the green pill thing with the two eyeballs) All of the camera plugins seem to render this and I've tried everything inside the game to hide it to no avail, including turning off the WindowCamera which... Yeah didn't work at all lol...

If there's an easy fix that I've missed, would appreciate any pointers; but as this is something common to all camera plugins, do you think there's a way to change this in the future update?
 
Hi Hazmhox,

Great plugin as always; Definitely a must-have, the masks and size changes make this very versatile.

Echoing one question in the Reviews and that's if it's possible to turn off the user headset icon from being rendered? (the green pill thing with the two eyeballs) All of the camera plugins seem to render this and I've tried everything inside the game to hide it to no avail, including turning off the WindowCamera which... Yeah didn't work at all lol...

If there's an easy fix that I've missed, would appreciate any pointers; but as this is something common to all camera plugins, do you think there's a way to change this in the future update?
Still hoping for a solution to this. ?
 
i followed the tutorial but my screen only shows a total white image. I created two empty atoms and the plugin even recongnizes the camera...but only white screen shows up. Any help?

edit: after trying many things, just after typing this comment I tried to just "unpause the scene" and the plugin worked. Sorry to bother you.
 
Hi Hazmhox,

Great plugin as always; Definitely a must-have, the masks and size changes make this very versatile.

Echoing one question in the Reviews and that's if it's possible to turn off the user headset icon from being rendered? (the green pill thing with the two eyeballs) All of the camera plugins seem to render this and I've tried everything inside the game to hide it to no avail, including turning off the WindowCamera which... Yeah didn't work at all lol...

If there's an easy fix that I've missed, would appreciate any pointers; but as this is something common to all camera plugins, do you think there's a way to change this in the future update?
I guess you haven't figured it out, have you?:/
 
Cool plugin! I was looking at doing something similar until Juno told me about this...

However, on initial load of the plugins I just get a blank white screen. This happens no matter which order I add the plugins. The screen plugin has the camera in it's list, but it never renders it's output to the screen.

If I save and load the scene, it starts working...

It also seems to break if I reload either plugin. Save/Load fixes this too.
Just saw the comment above about unpausing the scene to fix this. It's really not clear that this needs to be done, and although it's not a major issue maybe a note in the plugin UI to explain this would be useful...

As a suggestion, you might consider adding an option to hide the UI from the created cameras output. This can be done with the following:

C#:
protected void OnBundleLoaded(Request aRequest)
        {
            try
            {
                // Reading my UI bundle
                bundleRequest = aRequest;
                GameObject tmp = bundleRequest.assetBundle.LoadAsset<GameObject>("assets/vamlive/prefabs/vamlive_camera.prefab");
                VAMLIVECAMERAGO = Instantiate(tmp);
              
                // Parenting to my current Empty
                VAMLIVECAMERAGO.transform.SetParent(containingAtom.reParentObject.GetChild(0).transform, false);
                VAMLIVECAMERAGO.transform.localPosition = new Vector3(0, 0, 0);
                VAMLIVECAMERAGO.transform.localRotation = Quaternion.Euler(0f, 0f, 0f);
              
                // Grabbing the camera
                _TRVAMLCamera = Utils.GetChildNamed(VAMLIVECAMERAGO.transform, "screen_camera");
                _VAMLCamera = _TRVAMLCamera.GetComponent<Camera>();
              
                // Create a culling mask from just the UI layers by bitshifting their indexes
                int uiCullingMask = 1 << LayerMask.NameToLayer("UI") | 1 << LayerMask.NameToLayer("LoadUI") | 1 << LayerMask.NameToLayer("ScreenUI") | 1 << LayerMask.NameToLayer("GUI");
              
                // Merge the UI mask into the cameras existing mask to ensure we don't unmask anything that was already masked
                _VAMLCamera.cullingMask &= ~uiCullingMask;
            
                SuperController.singleton.onAtomUIDRenameHandlers += OnAtomRename;
              
                _isBundleLoaded = true;
            }
            catch (Exception e)
            {
                SuperController.LogError(EXCEPTION_PREFIX + e);
            }
        }

As a secondary option you may also want to include the 'Player' layer in the culling mask, otherwise the player's CameraRig will also show up in the camera (looks like three semi-transparent capsule colliders). I think this would also hide teh player's hands, etc if someone is using them, so this might want to be optional. Maybe one toggle for 'Hide UI' and another for 'Hide Player'...

I'd also love to see some camera options available like iso, aperture, focus distance.
 
Last edited:
Cool plugin! I was looking at doing something similar until Juno told me about this...

Yeah I need to make a couple of videos to "sell it" a bit more on the description page :']

Thank you for the suggestions, I'll dig into it when I'm back and update the plugin.

For the ISO / aperture and focus distance, this is not possible. We're not on UE5 :p

The base setup of a camera in our current Unity is FOV, clipping plane and the rect. Most of the rest is handle through shaders... and this goes far beyond the initial goal of the plugin.

Bear with me: the system is simply at best, a way to make some phone cameras and TVs or security monitors. Having ISO, aperture and focus (so depth of field) would mean you could use it as a simulated camera for let's say... a cinematic TV showing a dude filming something "realistically".
It's unlikely anyone will make a big use of that... so I'm not gonna spend days on that kind of feature.

A shader like that needs to be a post process for the camera so it's not simple to do. But if you can achieve a post process for the camera, I might be able to add it to the plugin.

I'm saying that knowing that with VAM, post process are not easy to handle, especially since you can have the main post process of the camera on top of the rest. So it's easy to enter a realm where you get crazy trying to figure out the render queue and all that jazz. Hence why I did the materials on the screens :p
 
Yeah I need to make a couple of videos to "sell it" a bit more on the description page :']

Thank you for the suggestions, I'll dig into it when I'm back and update the plugin.

For the ISO / aperture and focus distance, this is not possible. We're not on UE5 :p

The base setup of a camera in our current Unity is FOV, clipping plane and the rect. Most of the rest is handle through shaders... and this goes far beyond the initial goal of the plugin.

Bear with me: the system is simply at best, a way to make some phone cameras and TVs or security monitors. Having ISO, aperture and focus (so depth of field) would mean you could use it as a simulated camera for let's say... a cinematic TV showing a dude filming something "realistically".
It's unlikely anyone will make a big use of that... so I'm not gonna spend days on that kind of feature.

A shader like that needs to be a post process for the camera so it's not simple to do. But if you can achieve a post process for the camera, I might be able to add it to the plugin.

I'm saying that knowing that with VAM, post process are not easy to handle, especially since you can have the main post process of the camera on top of the rest. So it's easy to enter a realm where you get crazy trying to figure out the render queue and all that jazz. Hence why I did the materials on the screens :p
Fair enough. I saw those properties on the Camera class in the Unity docs (https://docs.unity3d.com/ScriptReference/Camera.html) and thought it would be interesting to have them but if you think it wouldn't work in VAM. I understand they're not necessarily that commonly used, but I think iso would be useful to change the exposure, at least.

Hopefully you find the culling mask suggestion useful. I've tested it locally and it works for me, as does masking the Player layer to hide the CameraRig.
 
Fair enough. I saw those properties on the Camera class in the Unity docs (https://docs.unity3d.com/ScriptReference/Camera.html) and thought it would be interesting to have them but if you think it wouldn't work in VAM. I understand they're not necessarily that commonly used, but I think iso would be useful to change the exposure, at least.

Hopefully you find the culling mask suggestion useful. I've tested it locally and it works for me, as does masking the Player layer to hide the CameraRig.

Thank you very much btw : )

Yeap, you're linking Unity's 202x documentation there :p
You always need to swap to 2018.1 on the top left when looking at the doc for VAM.

I would have made it in the plugin if it was on the vanilla cameras :3
 
Back
Top Bottom