Question / Help Virtual sets and perspective

Tangential

Member
I'm new to OBS and am using the 21.0.2 bits on a MBP. I'm experimenting with virtual sets and I'm trying to figure out how to create perspective on videos that show up at an angle to the presenter. An example would be the video that goes in the large player C on the right in this set...


I've done this in the past with Tricasters and I'm sure it's probably obvious in OBS, but after several hours of searching/googling I haven't found it.

Can someone point me in the right direction?

Thanks!
 
Keep in mind, OBS is not trying to be a Tricaster, and does not have any features built in that support that type of visual adjustment to sources...

HOWEVER, there is a plugin that will get you closer to that. Try using the Stream Effects plugin for OBS Studio, which adds a number of filters, one of which is a 3D Transform filter which should do exactly what you need. The plugin can be found here : https://obsproject.com/forum/threads/stream-effects.76619/

Keep in mind that the Filter, when applied to a source, will apply that filter to all copies of that source. If you want the source to work both non-filtered as well as filtered in different scenes, create a new scene containing JUST the source you want to adjust, and then apply the filter to that scene when it is added to the scene above. If that makes sense.

Step By Step : Say you want to have a Video (Media Source) appear in the BIG display marked "C" on the above image (not the smaller ones).

1 - Create new source called "Adjusted Video - Monitor C", and put your Video in that scene. Make the video take up the whole scene.
2 - Add that scene, "Adjusted Video - Monitor C", to your scene above with the different monitors.
3 - Add a filter to that scene/source (after installing the Stream Effects plugin). THe filter will be called "3D Transform" and it will appear at the very top of the Add FIlters menu.
4 - Adjust the many options in that filter config to get the scene/source in the right position.

The biggest issue you will have if you want to do this for a lot of scenes, especially duplicates, assuming in your image above, each of the C displays would show the exact same video/image/source. Since each needs its own, unique, 3D Transform applied to it, you would need to make a Scene for each one, since applying the filter to the original source video would force that transform to be used across all copies of it. Putting the video in multiple Scenes on its own allows you to basically have unique duplicates that can have their own filters applied that never effects the original video.

This is especially handy for cameras since you can only pull a single stream of video from a camera.

Its complex and crazy, but its the best we have at the moment.
 

Tangential

Member
Thanks for the info. I see that it is a windows only plug-in. I have only macOS and linux so I'll have to keep looking. I doubt I'd want to run OBS in a vm and I don't think I can justify a windows notebook solely for this.
 

Tangential

Member
@Tangential
Hi!
Did you find any solution?
I mostly switched to windows for this. The only solution I found on a Mac was to manually adjust background images for perspective using other apps. This was unsatisfactory because I couldn’t adjust perspective on live elements in the scenes.
 

Brandomanmods

New Member
Keep in mind, OBS is not trying to be a Tricaster, and does not have any features built in that support that type of visual adjustment to sources...

HOWEVER, there is a plugin that will get you closer to that. Try using the Stream Effects plugin for OBS Studio, which adds a number of filters, one of which is a 3D Transform filter which should do exactly what you need. The plugin can be found here : https://obsproject.com/forum/threads/stream-effects.76619/

Keep in mind that the Filter, when applied to a source, will apply that filter to all copies of that source. If you want the source to work both non-filtered as well as filtered in different scenes, create a new scene containing JUST the source you want to adjust, and then apply the filter to that scene when it is added to the scene above. If that makes sense.

Step By Step : Say you want to have a Video (Media Source) appear in the BIG display marked "C" on the above image (not the smaller ones).

1 - Create new source called "Adjusted Video - Monitor C", and put your Video in that scene. Make the video take up the whole scene.
2 - Add that scene, "Adjusted Video - Monitor C", to your scene above with the different monitors.
3 - Add a filter to that scene/source (after installing the Stream Effects plugin). THe filter will be called "3D Transform" and it will appear at the very top of the Add FIlters menu.
4 - Adjust the many options in that filter config to get the scene/source in the right position.

The biggest issue you will have if you want to do this for a lot of scenes, especially duplicates, assuming in your image above, each of the C displays would show the exact same video/image/source. Since each needs its own, unique, 3D Transform applied to it, you would need to make a Scene for each one, since applying the filter to the original source video would force that transform to be used across all copies of it. Putting the video in multiple Scenes on its own allows you to basically have unique duplicates that can have their own filters applied that never effects the original video.

This is especially handy for cameras since you can only pull a single stream of video from a camera.

Its complex and crazy, but its the best we have at the moment.

That's great and all but how in the hell do you install this? I downloaded a zip file but there's absolutely no instructions on how to install!
 

LBeaton

New Member
Hi all,

I do apologise for ressurecting this thread, I hope I'm not in breach of protocol. New to the likes of OBS sStudio (loving it so far!) but have some experience in post-production. The feature referenced here is one I too am missing, and although the mentioned plugin works it is quite finnicky to get "aligned". Mind you, I am not complaining. It just seems to me that the easiest solution to this issue is to add functionality, through plugins or in core, to allow ctrl+dragging of the corners of the resize-border to move the corner individually. It makes it dead simple to fake perspective for this purpose, by simply aligning the edges in paralell to the plane you're "on". I use words as "easiest" and "simply", having no idea how easy or simple it would be to implement in code... Is there anywhere one can suggest this?

In any event, thanks to all involved, devs, users, and all - I am quite impressed so far!

Cheers,

//Leif
 

Protagorus

New Member
I agree with you, Leif. Being able to drag the corners individually would be the easiest way. The 3D Transform in StreamFX can do a lot, but the final result is always a parallelogram. Opposite sides are always equal in length. the 3D Transform needs one more feature, the ability to lengthen any one side independently, keeping it parallel to the opposite side. Then the problem described in the very first post in this thread could be solved with a combination of the new feature and the Y Shear feature.

But if you have found another solution to this problem, one that actually has been implemented, I'd love to hear about it.

Thanks.
 
Top