On further investigation, this only seems to happen when the material
is created - if the channel that I bind doesn't exist in the original
image map, RS chooses the R channel for some reason.

If the material that initially gets assignes to the "Texture" object
has an alpha channel, I can later change the image to one with no
alpha chanell and have the binding intact. Still, since I have to
invert the values of the alpha channel, I get bad results from this.
The channel aparently always return 0.0 if it doesn't exist. This
makes the surface 100% transparent. :(

I would like to know if there is a way to test for the prescence of an
alpha channel through VSL. I'm not talking about testing the values of
the alpha channel - the question is if the image file _has_ an alpha
channel or not.

Regards,
Fredrik Bergholtz


On 29/04/06, Matthias Kappenberg <[EMAIL PROTECTED]> wrote:
Why don't use an image without alpha, instead of no image?

Matthias

> > Now, some materials will have an image map set in the image map
> > attribute some will not. The materials that has no image map must
> > still function, i.e. the prescence of an image map must be tested by
> > the "code" in the vsl material. For materials that do have an image
> > map assigned to the image map attribute of the material the material
> > must test if the image it is currently set to has an alpha channel or
> > not. If it has an alpha channel, these values will be mapped to
> > Surfacs:Transparency with a Texture VSL object. If the image that is
> > currently assigned to the image map property does not have an alpha
> > channel, transparency will not be modified by this material. The thing
> > is that, when the user, or the object loader, assigns an image to the
> > attribute, no changes to the VSL "code" should be done. Just the value
> > of the attribute should have to be changed.
> >
> > The reason for this material is that I want to have a standard
> > material that has all of the features of the game engine I'm making
> > this stuff for. The key thing is to make sure that the materials used
> > doesn't have any features that are not supported by the game engine.
> > When IU have a VSL material that works, the plan is to encapsulate
> > this material in a new material class defined by my plugin. This class
> > would completely restrict modification of the VSL code. Think of how
> > v3materials are used in RS today. I guess that they too are
> > implemented as regular VSL objects, just that the VSL code is hidden
> > from the users and instad a more simple user interface is presented.
> >
> > Does this help, or am I just making stuff even more complicated? ;)
> >
> > Regards,
> > Fredrik Bergholtz
> >
> >
> > On 29/04/06, Matthias Kappenberg <[EMAIL PROTECTED]> wrote:
> > > Something like this?
> > >
> > > Matthias
> > >
> > >
> > > ----- Original Message -----
> > > Wrom: VZCMHVIBGDADRZFSQH
> > > To: <user-list@light.realsoft3d.com>
> > > Sent: Saturday, April 29, 2006 1:59 PM
> > > Subject: Re: Testing an image for an alpha channel
> > >
> > >
> > > Oh, I think that my description may not have been fully clear. (Bad
> > > pun, sorry :) )
> > >
> > > I do all this, the thing is that I want to be able to use the same
> > > material even if the actual image map has no alpha channel. When I try
> > > this, loading an image map with no alpha channel, the bindings get
> > > messed up and the red channel will be sent to transparency. This is
> > > what I want to avoid. Think of it like a special kind of material, I
> > > want to set up a bunch of user editable attributes, one of which is an
> > > image map. If this image map contains an alpha channel, that would be
> > > sent to transparency, but if it doesn't have an alpha channel,
> > > transparency won't be affected by the material.
> > >
> > > What I want is to make sure that the last three VSL objects in the
> > > material shown in the attached image are only evaluated if the image
> > > has an alpha channel.
> > >
> > > Regards,
> > > Fredrik Bergholtz
> > >
> > >
> > > On 29/04/06, David Coombes <[EMAIL PROTECTED]> wrote:
> > > > Yes, you can do that, but you're thinking about it wrong. What you want 
to
> > > > do is output to the surface transparency the value held in an images 
Alpha
> > > > channel.
> > > >
> > > > In your Surface Properties shader add a Texture object.
> > > > Load your texture with Alpha channel.
> > > > Set the output of the texture object (In/Out tab) to 
Surface:Transparency
> > > > In the Bindings tab, click the Edit checkbox and set the bindings so the
> > > > Transparency's RG and B channels (destination) are set from the source
> > > > image's A channel
> > > >
> > > > At this point I'll mention I can't actually do this because RS's window 
is
> > > > busted and has been as long as I've known the software. When I click 
Edit
> > > > Binding the Source panel extends to below the bottom of the window and 
I see
> > > > no destination panel. No amount of opening and closing  windows and 
panels
> > > > and Ctrl left right shift click and dragging will expose the rest of the
> > > > interface for me. The way panels auto scale and such I've always found
> > > > awkward as they invariably produce a window far longer than my 768 pixel
> > > > height display, and often don't terminate at the bottom of the window
> > > > anyway.
> > > >
> > > > Anyway, what you are doing is selecting a picture that has Red, Green, 
Blue
> > > > and Alpha components, and saying 'For each pixel, take the images Alpha
> > > > value and set that as the transparency value of the Red, Green and Blue
> > > > colour components of the surface.' You can just as easily create a 
black and
> > > > white image and set the value of surface transparency to the red 
component
> > > > of the image, using it as a mask.
> > > >
> > > > David Coombes
> > > > [EMAIL PROTECTED]
> > > >
> > > > ...
> > > > ----- Original Message -----
> > > > From: <[EMAIL PROTECTED]>
> > > > To: <user-list@light.realsoft3d.com>
> > > > Sent: Saturday, April 29, 2006 11:56 AM
> > > > Subject: VSL: Testing an image for an alpha channel
> > > >
> > > >
> > > > > Hi, is it possible to test for the prescence of an alpha channel in a
> > > > > given image map inside a VSL material?
> > > > >
> > > > > Something like:
> > > > >
> > > > > Surface properties
> > > > > {
> > > > >    do stuff
> > > > >
> > > > >    if (image has alpha)
> > > > >    {
> > > > >         Apply alpha channel of image to surface transparency
> > > > >    }
> > > > > }
> > > > >
> > > > > I want to use the same structure of the VSL material for all my
> > > > > objects to let users simply change the possible parameters that match
> > > > > the in-game material properties without having to modify the actual
> > > > > VSL code.
> > > > >
> > > > > Regards,
> > > > > Fredrik Bergholtz
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> >


Reply via email to