gazebosim/gz-common

Collada <transparency> setting

Offen

#229 geöffnet am 12.07.2021

 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C++ (59 Forks)auto 404
bughelp wanted

Repository-Metriken

Stars
 (28 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 9T 6h) (30 gemergte PRs in 30 T)

Beschreibung

Environment

  • OS Version: Ubuntu 18.04
  • Source or binary build? both - all versions

Description

The transparency result is different between Ignition ColladaLoader and threejs's CollaLoader if <transparency> tag is present, and <transparent> tag is missing, e.g. the follow tag produces an opaque mesh in Ignition but a transparent mesh in threejs:

            <transparency>
              <float sid="transparency">0.000000</float>
            </transparency>

Looking at the collada spec (pdf) spec, the default mode should be A_ONE. The current code sets transparency in the following way:

      dstFactor = 1.0 - color.A() * transparency;
      srcFactor = color.A() * transparency;
      _mat->SetTransparency(dstFactor);

This should produce a transparency value of 1.0 which means fully transparent.

Other notes

_mat->SetTransparency(dstFactor); is a bit confusing since srcFactor is the one that corresponds to the object's material opacity. However, the math works out to be correct because:

transparency = 1.0 - opacity
             = 1.0 - srcFactor
             = dstFactor

Contributor Guide