FiniteSingularity / obs-stroke-glow-shadow

An OBS plugin to provide efficient Stroke, Glow, and Shadow effects on masked sources.
GNU General Public License v2.0
96 stars 7 forks source link

[FEATURE] - Inner and outer stroke simultaneously #37

Open dnaka91 opened 5 months ago

dnaka91 commented 5 months ago

Is your feature request related to a problem? Please describe.

I was trying to combine a stroke + glow around my camera, then further animate it with the obs-noise plugin to make it constantly move withe the noise displacement filter.

When doing that it basically works, but the noise displacement creates gaps between the camera input and the border when using an outer stroke.

Describe the solution you'd like

It would be great to have some "on the border" stroke option, which places it right at the edge of the source.

For example, given a stroke width of 2, it would draw the stroke both 1px outside and inside the edge of the source.

Describe alternatives you've considered

I tried getting this to work by creating 2 stroke sources, one for outside and one for inside the base source. This still created a gap because the inner stroke needs a positive offset to draw an actual stroke or it fills up the entire source.

Additional context

dnaka91 commented 5 months ago

Here is a small screenshot of how that effect looks like. It is currently an outer stroke and wiggles too much, thus sometimes moving to far away from the camera source and creating gaps. Or even sometimes moving too much inside (but that's probably fixable by adjusting the strength of the noise displacement accordingly).

The goal is to avoid those gaps and make the animated frame always fully overlay the edge of the camera source without any gaps

image

FiniteSingularity commented 5 months ago

Ahh, that makes sense. Alternatively, would it make sense to allow a single instance of the source or filter to draw both an inside and outside effect? That way it would be one solid source, that could be filtered together. (Please let me know if I'm incorrectly interpreting what you want to do)

As a workaround (until something like this is implemented) you could try the following:

  1. Create an inner glow source of your facecam.
  2. Create an outer glow source of your facecam.
  3. Put both sources in a group.
  4. Apply the noise displacement to the group.

you could also do this by putting the two glow sources in a scene, and applying the noise displace to the scene.

dnaka91 commented 5 months ago

Thanks for the quick answer. I already tried doing that but the inner stroke works differently and doesn't allow me to create it without any space between the outer stroke.

This is outer + inner stroke, but due to the inner stroke only working properly with a non-zero offset, I end up with this space between the strokes: image

FiniteSingularity commented 5 months ago

Got it. This is a known (by me) bug that will be fixed when I update the rendering pipeline to the new version I wrote for the other three plugins (the line). Zero offset on inner stroke shouldn't be filling the entire source, so I'll look into that as well.

I'm currently working on a release for the Advanced Masks plugin, and will likely look at least at a bug-fix release for stroke-glow-shadow this week at some point, which at least should get you up and running with the currently non-working workaround. Then I'll add the option to do both inner and outer effects in a single pass for the next feature release.