Add support for displayColor/Opacity (convert to rgba)
PiperOrigin-RevId: 776488857 Change-Id: I34713748ac553b5fdfad736801cdaa7dc2b7f1b0
This commit is contained in:
committed by
Copybara-Service
parent
24789f8fe5
commit
8f6a13aa8f
@@ -49,6 +49,8 @@
|
|||||||
#include <pxr/usd/usdGeom/gprim.h>
|
#include <pxr/usd/usdGeom/gprim.h>
|
||||||
#include <pxr/usd/usdGeom/mesh.h>
|
#include <pxr/usd/usdGeom/mesh.h>
|
||||||
#include <pxr/usd/usdGeom/plane.h>
|
#include <pxr/usd/usdGeom/plane.h>
|
||||||
|
#include <pxr/usd/usdGeom/primvar.h>
|
||||||
|
#include <pxr/usd/usdGeom/primvarsAPI.h>
|
||||||
#include <pxr/usd/usdGeom/sphere.h>
|
#include <pxr/usd/usdGeom/sphere.h>
|
||||||
#include <pxr/usd/usdGeom/tokens.h>
|
#include <pxr/usd/usdGeom/tokens.h>
|
||||||
#include <pxr/usd/usdGeom/xformCache.h>
|
#include <pxr/usd/usdGeom/xformCache.h>
|
||||||
@@ -742,6 +744,32 @@ void ParseUsdPhysicsCollider(mjSpec* spec,
|
|||||||
ParseMjcPhysicsCollisionAPI(geom, pxr::MjcPhysicsCollisionAPI(prim));
|
ParseMjcPhysicsCollisionAPI(geom, pxr::MjcPhysicsCollisionAPI(prim));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert displayColor and displayOpacity to rgba.
|
||||||
|
// We want to support primvar inheritance, hence FindPrimvarWithInheritance.
|
||||||
|
pxr::UsdGeomPrimvarsAPI primvarsAPI(prim);
|
||||||
|
pxr::UsdGeomPrimvar displayColorPrimvar =
|
||||||
|
primvarsAPI.FindPrimvarWithInheritance(
|
||||||
|
pxr::UsdGeomTokens->primvarsDisplayColor);
|
||||||
|
pxr::UsdGeomPrimvar displayOpacityPrimvar =
|
||||||
|
primvarsAPI.FindPrimvarWithInheritance(
|
||||||
|
pxr::UsdGeomTokens->primvarsDisplayOpacity);
|
||||||
|
if (displayColorPrimvar.HasAuthoredValue()) {
|
||||||
|
pxr::VtArray<pxr::GfVec3f> display_color;
|
||||||
|
displayColorPrimvar.Get(&display_color);
|
||||||
|
if (!display_color.empty()) {
|
||||||
|
geom->rgba[0] = display_color[0][0];
|
||||||
|
geom->rgba[1] = display_color[0][1];
|
||||||
|
geom->rgba[2] = display_color[0][2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (displayOpacityPrimvar.HasAuthoredValue()) {
|
||||||
|
pxr::VtArray<float> display_opacity;
|
||||||
|
displayOpacityPrimvar.Get(&display_opacity);
|
||||||
|
if (!display_opacity.empty()) {
|
||||||
|
geom->rgba[3] = display_opacity[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SetLocalPoseFromPrim(prim, parent_prim, geom, xform_cache);
|
SetLocalPoseFromPrim(prim, parent_prim, geom, xform_cache);
|
||||||
|
|
||||||
if (!MaybeParseGeomPrimitive(prim, geom, xform_cache)) {
|
if (!MaybeParseGeomPrimitive(prim, geom, xform_cache)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user