Trouble with transparency

Oct 4, 2009 at 7:05pm

Trouble with transparency

Hello all,

I’m not new to Max but quite new to Jitter, and this current problem has me going batty.

The attached patch attempts to load a map in layer 2 and overlay a set of icons in layer 1 of jit.gl.videoplane, loading the images via a set of jit.qt.movie objects.

The trouble arises when I try to combine the icons, which are .png and contain transparency, into layer 1 of jit.gl.videoplane. As they have to be scaled to proper size using dstrect into jit.qt.movie, the transparency is only applied to the specified area; the rest of jit.pwindow remains black.

Since I will be using a good number of icons, the [jit.op +] method may not be optimal either.

Does anyone know how to ensure layer 1 remains transparent wherever the dstrect does not apply?

Many many thanks,

– Pasted Max Patch, click to expand. –
#45724
Oct 13, 2009 at 6:22am

There are a number of ways to do it depending on the final effect you want. In your current patch, you could set @blend_mode 6 1 for additive blending. Anything black will seem to be transparent.

wes

#164872
Oct 15, 2009 at 7:19pm

Wesley,

Thanks for the tip, however the blend_mode you propose yields semi transparent icons. Also, possibly due to the jit.op setup, the ‘frontmost’ icon’s position ends up defining the only visible space for the other icons – they disappear when they are moved outside of that zone.

Still stumped…

Here’s an updated patch with ability to change blend_mode, and a sample icon attached to see things in context…

– Pasted Max Patch, click to expand. –
#164873
Oct 15, 2009 at 7:49pm

if the dstrect attributes of the qt.movies are set *after* the icon image is read in and banged out once, then the patch works as expected.
index.php?t=getfile&id=3463&private=0

if you need a more flexible solution, you might want to do your image scaling/positioning with gl.videoplanes or gl.meshes

#164874
Oct 15, 2009 at 10:01pm

Hello,
Here is a patch that uses OpenGL for the alpha blending. This is a more robust and efficient way to do what you are doing, and actually respects the image transparency.

Andrew B.

– Pasted Max Patch, click to expand. –
#164875
Oct 16, 2009 at 7:24pm

Thank you Andrew and Rob, both good points and solutions. But if I have, say, 10 icons to place on the map, is there no more efficient solution than to create a gl.videoplane layer for each and every one? Is there a kind of video equivalent to poly~?

Also, I’m noticing that when the icon is scaled to around 0.1, it gets grainy. Is this an interpolation issue, or am I hitting some sort of limit on screen resolution?

Thanks,

#164876
Oct 17, 2009 at 6:06pm

a few different options available to solve this problem.

first off, yes there is a poly~ object for video. it’s called poly~. you can encapsulate anything you wish in a poly~ object. search the jitter forum for several different examples.

second, if you are using the same image texture, you don’t necessarily have to use a separate videoplane for each icon. you can simply tell the videoplane to redraw itself in several different positions, each draw call. check out andrew’s Dancing Sprites recipe 06:
http://www.cycling74.com/story/2006/2/6/114353/4118

last, gl.mesh might be the most efficient way to go, but also a bit trickier to learn. once again andrew illuminates. check out recipe 36 and 37:
http://www.cycling74.com/story/2006/2/17/153427/406

#164877

You must be logged in to reply to this topic.