Hi Mark,

I wondered if that transparent setting had anything to do with things. Does it make sense to have this for a material that is a simple non-transparent phong material ? I'm thinking the exporter is being overly general in this case, we don't really need to set up blending for a simple material like this ?

BTW I'm searching for the definition of the "opaque" attribute for <transparent> and it doesn't seem to be documented in the 1.4.1 specification. Any pointers ?

Looking at daeRMaterials.cpp, it seems that a bit of refactoring is necessary to handle this cleanly. And I guess this particular situation needs to be treated as a special case, to obviate the need for a blending state. I notice there is a daeReader::processTransparentType() method that is going some way towards this.

-Drew

[EMAIL PROTECTED] wrote:

On Tue, 2006-10-10 at 19:45 -0700, Farshid Lashkari wrote:
Hi Drew,

On 10/10/06, Drew Whitehouse <[EMAIL PROTECTED]> wrote:
Can someone knowledgeable take a look at this collada file and it's .osg
equivalent and tell me why nothing is showing up in osgviewer ? It looks
like it should, and osgviewer is reporting the existence of 800+
primitives. The .dae file is being exported from 3DSMax, and converted
using osgconv/OSG1.2.
The material's alpha is set to 0 in the osg file, so it is 100%
transparent. Change the alpha values to 1 and it should show up fine.
It worked here.

I think that points to a bug in the OSG importer since the test file has
RGB_ZERO opacity set:

<diffuse>
        <color> 0.988235 0.909804 0.019608 0 </color>
</diffuse>

<transparent opaque="RGB_ZERO">
        <color> 1.000000 1.000000 1.000000 1.000000 </color>
</transparent>
<transparency>
        <float> 0 </float>
</transparency>

Looking at the code, I see that the function
daeReader::processColorOrTextureType() doesn't handle the opaque
attribute.

~~~

In RGB_ZERO opaque mode you compute per component transparency blending:

result.r = fb.r * (transparent.r * transparency) + mat.r *
          (1.0f - transparent.r * transparency)
result.g = fb.g * (transparent.g * transparency) + mat.g *
          (1.0f - transparent.g * transparency)
result.b = fb.b * (transparent.b * transparency) + mat.b *
          (1.0f - transparent.b * transparency)

Plugging in the mat values for the diffuse component we get:

result.rgb = [ 0.988235 0.909804 0.019608 ]

... the material color replaces the framebuffer (fb) color opaquely.

Regards,
Marcus


_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to