Core: Fix alpha-transparency issue in face color override. (#23532)

* Core: Fix alpha-transparency issue in face color override.

* Fix color picker opening wrongly with alpha reversed
This commit is contained in:
PaddleStroke
2025-09-08 17:46:05 +02:00
committed by GitHub
parent 9fceb4bf51
commit 66e636f40d
2 changed files with 14 additions and 5 deletions

View File

@@ -149,11 +149,19 @@ bool SoFCSelectionContextEx::setColors(
return true;
}
uint32_t SoFCSelectionContextEx::packColor(const Base::Color &c, bool &hasTransparency) {
float trans = std::max(trans0,c.a);
if(trans>0)
uint32_t SoFCSelectionContextEx::packColor(const Base::Color& c, bool& hasTransparency)
{
// Convert Base::Color's alpha (opacity) to transparency for Coin3D.
float transparency = 1.0f - c.a;
// Apply any external transparency override (e.g., from picking).
float final_transparency = std::max(trans0, transparency);
if (final_transparency > 0.0f) {
hasTransparency = true;
return SbColor(c.r,c.g,c.b).getPackedValue(trans);
}
return SbColor(c.r, c.g, c.b).getPackedValue(final_transparency);
}
bool SoFCSelectionContextEx::applyColor(int idx, std::vector<uint32_t> &packedColors, bool &hasTransparency) {