Clean Keyer on 2 zoom values (one wide and another tighter)

Studio Operators Composer Node System 2D Compositing SDI Camera Tracking

 

Hello Aximmetry users,

I have a question about the keyer on a fixed tracked camera that makes 2 different shots (a framed zoom on the faces of 2 people and a framed zoom out that takes the whole scene, example: the 2 people full length with real sofa-type decorative elements.

If we use the clean plate generator on the zoomed frame (the axis of the tracked camera does not move), we manage to make a clean keyer.

But if we zoom out to have a larger frame, the keyer no longer works, we see the defects around the 2 people.

How to get a clean Keyer on 2 zoom values (one wide and another tighter) of a tracked fixed camera? Is it possible ?

Thanks for your help.

   Igor Bortnowski

 
Profile Image
Igor Bortnowski
  -  

Anyone ?

 
Profile Image
Igor Bortnowski
  -  

UP !!

 
Profile Image
EricWest
  -  

Hi Igor.

In your case you would need to dynamically switch between two different Cleanplates.
I think the only way to do this is to edit your Virtual_Cam_AB_..... compound and dive down to the actual keyer:

The CleanplateGenerator Compound has a CleanPlate Pin, 
which you could then use to switch cleanplates depending on your FOV


 
Profile Image
Igor Bortnowski
  -  

Thank you for this feedback.


We will test this.

 
Profile Image
TwentyStudios
  -  

The generated Clean Plate is actually just a png, so a simpler solution would be to just add a image switcher module where you import the png images, switch between them and feed the output of the Switcher module into the Clean Plate input of the keyer module. This would only work if you can recall your different zoom positions exactly.

Aximmetry has a beta version of their keyer that supports moving cameras with variable zoom, but I don’t know when it will be released. It looked very good at IBC.

 
Profile Image
cm-aximmetry
  -  

We're actually facing the same issue. We have the Panasonic AW-UE150 PTZ's and work with presets, so we could use exact zoom positions like TwentyStudios mentioned. But I am having problems building the logic. I've created a Text Switcher, connected to the Clean Plate input.  But how do I make the logic that zoom position 0.543 = Value 1?  Etc. In so, triggering the correct clean plate? A sample would be great.


Thanks.

 
Profile Image
cm-aximmetry
  -  

Solved it, works as expected now!

I still need to learn a lot, so I'm sharing for others.

I used the Copy Double, as in our case the preset of the Panasonic PTZ's had a lot of digits and Aximmetry didn't show the full amount of decimals when peaking, so my initial value of 4.8687 wasn't equal, therefor it never triggered. I then saw the Double precision module, and the exact number was 4.8687479298726. When I entered that in the B-value of the 'Equal', it worked.



 
Profile Image
TwentyStudios
  -  

@cm-aximmetry: I recommend trying to round the values and feed that to the Equal module, since there are no guarantees that the camera will hit the exact same value every time. Don’t know the correct way to do that, but hopefully someone else can provide some insight. Alternatively, maybe there’s a way to use Equal or Higher and Equal or lower to set a value range where for which each Cleanplate switch is triggered?

 
Profile Image
Eifert@Aximmetry
  -  

Hi,

I would suggest using Greater and Less modules too.
You can check if it is between two values like this:


There is also a Round module. Which rounds values to whole numbers.
If you don't want whole numbers but for example round to the first decimal, like 1.1111 -> 1.1
Then you can first multiply by 10, then round, and then divide by 10:

Note, the above Multiply, Round and Divive modules are vectors, and vectors have the same precision as scalar data type.

Warmest regards,

 
Profile Image
TwentyStudios
  -  

@Eifert: Using the Equal or Less parameter like that seems so obvious when you explain it. I would have expected it to be a bit more complicated. I hope you can do some more documentation on working practically with the math and logical modules. So much cool functionality goes unnoticed and unused just because it’s not documented. Just seems like a waste to leave all this cool stuff on the table due to a lack of documentation and awareness. 

 
Profile Image
Eifert@Aximmetry
  -  

Hi,

We have on our list to make detailed tutorials on the learn page: https://aximmetry.com/learn/welcome/ 

However, there are other shortcomings in the documentation that have higher priority.

Warmest regards,

 
Profile Image
cm-aximmetry
  -  

I've implemented the Multiply, Round, Divide and Greater/Less, and technically it works good.
However, it seems to have a serious impact on CPU performance? As when I zoom the PTZ, you can see a 'hiccup' or lag, each time it switches the CleanPlate, and a large spike in CPU.


As if the continuous evaluation of this is too taxing? Running on a very beefy workstation (RTX 3090 + 128 GB +AMD Ryzen Threadripper 3960X 24-Core. Project settings in UHD (25p), and GPU normally sits between 64 and 72%. So fairly safe right? The hiccup is also there when I only zoom and view the keyed view, so not even with the UE background.

The CPU however, goes crazy during the zoom and changing of the CleanPlate and goes from 39% to 366% or anywhere in between
The clean plate itself is on a very fast SSD (2500 Mb/sec) so, that's not the reason. Power mode is set correctly to high-performance, with no throttling.

Any clue?







 
Profile Image
cm-aximmetry
  -  

Update, I don't think the evaluation is hurting the system, but the actual switching of the CleanPlate.
Because if I disconnect the 'out' from the CleanPlate Switcher, it ofc still evaluates the whole ZoomFactor etc. 
And while disconnected, the GPU/CPU hardly moves while zooming the PTZ. Only when it actually switches the CleanPlate it lags.

The SSD also isn't to blame:




 
Profile Image
Eifert@Aximmetry
  -  

Hi,

You don't need the rounding:

Just connect the double directly into the Greater and Less modules.
I mentioned rounding as an alternative way instead of the Greater and Less modules. As TwentyStudios suggested doing it like that.


The additional load is probably from loading in the images, even if your drive is fast enough, the images still need to be converted afterward into a format that Aximmetry uses.

If you look inside the Clean Plate Generator compound, it just uses one image module after you captured the image:

So, instead of using a Switch Text module and the Clean Plate Generator compound, you could use a Switch Video module. Note, it doesn't matter that you use image file types with video modules, it will handle them as images. This way all the images in the Switch Video module will be loaded into the memory.
So once you add Switch Video, disconnect the video connection from the
Clean Plate Generator compound's Out pin, and connect it to the Switch Video module. Similar to this:

Quick tip to use here,
Changing a connection's start can be done by pressing down SHIFT before dragging the connection:

More tips like this here:
https://aximmetry.com/learn/virtual-production-workflow/preparation-of-the-production-environment-phase-i/scripting-in-aximmetry/flow-editor/flow-editor/#disconnecting-and-changing-pins-connection

One more thing you could consider, there is also a Switch Video Smooth module, with it, you could make switching between the clean plate images more smooth visually.

Warmest regards,