Live Link FreeD doesn’t return the correct focal length for Panasonic UE-100 and UE-150

Greetings to all of you, we are using LiveLinkFreeD and UE 4.27 to build a virtual studio for broadcasting. In order to do that we are trying to control our virtual cameras with LiveLinkFreeD so that they behave in the same way as our real PTZ cameras (Panasonic UE-100 and UE-150) do. The pan and tilt work fine but we can’t get the zoom to work properly.

It seems like Epics FreeD plugin doesn’t support zoom and focus out of the box so we tried two different ways:

  • Add the LiveLinkCamera plugin which activates the option to add a Camera Role to the Role Controllers of the LiveLinkComponentController
  • Create a small blueprint which handles zoom and focus by evaluating the LiveLink frames

Both ways change the focal length of our virtual CineCam based on the lens parameters of the FreeD package.

Furthermore, we found out that the FreeD protocol returns the zoom as a float between 0 (tele) and 1 (wide), which is why we use lerp to interpolate between our actual min and max focal length based on this number.

Our problem is that the virtual camera zooms in a different speed compared to the real one and therefore makes the zoom unusable.

We did some testing and came to the conclusion that the PTZ cams of Panasonic don’t zoom linear between min and max but instead use some kind of exponential lens curve in order to make the zoom feel more intuitive. Sadly, Panasonic doesn’t add this lens curve to FreeD which is why our virtual and non-virtual cameras don’t behave equally.

Things we tried and didn’t solve anything:

  • Make sure that CineCam has the same lens and filmback settings as the PTZ cameras
  • Disable ‘Speed with zoom Position’ in PTZ camera controls
  • Replace lerp with typical functions (exponential, logarithmic, etc.)
  • Replace lerp with an a^x function and changing a until the zoom is neither to fast nor to slow (not possible it’s always one of both)
  • Changing the LiveLinkFreeD Panasonic Preset properties in LiveLink window

At this point we don’t know any further and would very much appreciate any advice you guys could give us!!!

1 Like

Sounds like you might have to calibrate the zoom curve since it’s non-linear.
Make a table with a number of samples. Example: .1 = 25mm, .2 = 38mm, etc.
Use this as a form of Lookup table and lerp between the closest steps or curve fit the data so you simply end up with 100 steps (or whatever resolution you need) so that a value of .25 provides you 31mm output.

1 Like

That sounds like a really good idea and we are going to try it today. Thanks!

If this doesn’t work we are also going to try this Plugin from DisruptAR:

It worked with 4.26 and they published the 4.27 version on their download page a few days ago.

1 Like

Thanks again @scottunreal we tested your idea and it worked!

1 Like

Hi Luis and scottunreal, i was reading this post searching same solution for Sony PTZ camera problem with zoom lens curve.

Can I contact you to solve it? I don’t know how to add a table on the lerp blueprint function. It would be so great if you can give an idea. thanks very much

I’ll try to get back to this in a few days but it sounds like @LuisRP actually coded it so it might be best for him to post if possible.

thanks scottunreal, i’m new in this forum. can i contact directly to a member? i din’t see any email .

Hi @Jan_Boria11, hi everybody here is how my solution works:

You have two float Arrays (both the same length)

  • FreeD_Steps: The Focal Length values which FreeD returns when you change the Zoom of your PTZ (e.g. 0; 0.1; 0.2; 0.3; … ; 1)
  • Virtual_FLength_Steps: The correct Focal Lenth values which the virtual camera should have at the FreeD values from the other array(e.g. 3.8; 5.34; 7.5; 9.89; … ; 92.82)

=> The more FreeD / FocalLength value pairs you have the more accurate is going to be your zoom.

Now to the Blueprint:

  1. Get the Focal Length from the Live Link Frame and save it in a variable (Free D Cur Value)

  2. Check for each value in ‘FreeD_Steps’ if your ‘FreeD Cur Value’ is greater, equal or less

  • If its greater continue with the next index of the array
  • If its equal set the focal length of the virtual camera to the value at the same index in Virtual_FLength_Steps and break the loop
  • If its less map the range between the current and the last FreeD_Step to the range between the current and the last Virtual_FLength_Step (This is done in the collapsed graph ‘Map Range from FreeD to virtual FL’) and break the loop

If you don’t know what Map Range Clamped does, here you go:

@Jan_Boria11 if you or anyone else needs more help feel free to contact me (Just click on the Profile symbole next to my name and select Message :wink: )

1 Like

Nice work!

@Jan_Boria11 yes just reply to the Email I sent you

Hi guys,

sorry for pushing this old topic, but I have the same problem here. We work with Panasonic UE100 and UE150, just like you. Maybe I’m missing something very simple here, but I actually have no clue how to get those value pairs Zoom->Focal Length. The Camera doesn’t show its Focal Length anywhere - not in the web user interface nore in the camera controller (as far as i know). I don’t have any problems in programming the blueprints to use those values, but first I need to HAVE those values… it’s really frustrating!

Does anyone has a tip on how to get those values? How am I supposed to know, what focal length equals a zoom value of “0.5”? :frowning:

I really appreciate any help!
Thanks in advance,

Micha

1 Like

Having same issue, can’t seem to get the math right to get a clean zoom curve anyone else have luck with the panasonic ue150 also have access to proper sensor size and focal length info Im finding mixed results on the web.

they have the sensor size and focal length values in DisruptARFreeDLiveLinkPlugin_UG.pdf

Did anyone get their ue100s to calibrate correctly? I am using the disrupt AR plug-in and my zoom looks gods, but it seems like my nodal or axis information is off as I slide around on pan and tilt. Any thoughts?

can you make a video tutorial for this :slightly_smiling_face:

[quote=“LuisRP, post:1, topic:510697, full:true, username:LuisRP”]
Greetings to all of you, we are using LiveLinkFreeD and UE 4.27 to build a virtual studio for broadcasting. In order to do that we are trying to control our virtual cameras with LiveLinkFreeD so that they behave in the same way as our real PTZ cameras (Panasonic UE-100 and UE-150) do. The pan and tilt work fine but we can’t get the zoom to work properly.

It seems like Epics FreeD plugin doesn’t support zoom and focus out of the box so we tried two different ways:

  • Add the LiveLinkCamera plugin which activates the option to add a Camera Role to the Role Controllers of the LiveLinkComponentController
  • Create a small blueprint which handles zoom and focus by evaluating the LiveLink frames

Both ways change the focal length of our virtual CineCam based on the lens parameters of the FreeD package.

Furthermore, we found out that the FreeD protocol returns the zoom as a float between 0 (tele) and 1 (wide), which is why we use lerp to interpolate between our actual min and max focal length based on this number.

Our problem is that the virtual camera zooms in a different speed compared to the real one and therefore makes the zoom unusable.

We did some testing and came to the conclusion that the PTZ cams of Panasonic don’t zoom linear between min and max but instead use some kind of exponential lens curve in order to make the zoom feel more intuitive. Sadly, Panasonic doesn’t add this lens curve to FreeD which is why our virtual and non-virtual cameras don’t behave equally.

Things we tried and didn’t solve anything:

  • Make sure that CineCam has the same lens and filmback settings as the PTZ cameras
  • Disable ‘Speed with zoom Position’ in PTZ camera controls
  • Replace lerp with typical functions (exponential, logarithmic, etc.)
  • Replace lerp with an a^x function and changing a until the zoom is neither to fast nor to slow (not possible it’s always one of both)
  • Changing the LiveLinkFreeD Panasonic Preset p