29 if (
auto boundable = pxr::UsdGeomBoundable(prim)) {
30 pxr::VtArray<pxr::GfVec3f> extent;
31 pxr::UsdGeomBoundable::ComputeExtentFromPlugins(boundable, time, &extent);
32 boundable.CreateExtentAttr().Set(extent, time);
45 const Light *light =
static_cast<const Light *
>(context.object->data);
46 pxr::UsdLuxLightAPI usd_light_api;
48 switch (light->
type) {
52 pxr::UsdLuxRectLight rect_light = pxr::UsdLuxRectLight::Define(stage,
usd_path);
53 rect_light.CreateWidthAttr().Set(light->
area_size, timecode);
54 rect_light.CreateHeightAttr().Set(light->
area_sizey, timecode);
55 usd_light_api = rect_light.LightAPI();
59 pxr::UsdLuxRectLight rect_light = pxr::UsdLuxRectLight::Define(stage,
usd_path);
60 rect_light.CreateWidthAttr().Set(light->
area_size, timecode);
61 rect_light.CreateHeightAttr().Set(light->
area_size, timecode);
62 usd_light_api = rect_light.LightAPI();
66 pxr::UsdLuxDiskLight disk_light = pxr::UsdLuxDiskLight::Define(stage,
usd_path);
67 disk_light.CreateRadiusAttr().Set(light->
area_size / 2.0f, timecode);
68 usd_light_api = disk_light.LightAPI();
73 pxr::UsdLuxDiskLight disk_light = pxr::UsdLuxDiskLight::Define(stage,
usd_path);
76 usd_light_api = disk_light.LightAPI();
84 pxr::UsdLuxSphereLight sphere_light = pxr::UsdLuxSphereLight::Define(stage,
usd_path);
85 sphere_light.CreateRadiusAttr().Set(light->
radius, timecode);
86 if (light->
radius == 0.0f) {
87 sphere_light.CreateTreatAsPointAttr().Set(
true, timecode);
91 pxr::UsdLuxShapingAPI shaping_api = pxr::UsdLuxShapingAPI::Apply(sphere_light.GetPrim());
93 shaping_api.CreateShapingConeAngleAttr().Set(
RAD2DEGF(light->
spotsize) / 2.0f, timecode);
94 shaping_api.CreateShapingConeSoftnessAttr().Set(light->
spotblend, timecode);
98 usd_light_api = sphere_light.LightAPI();
102 pxr::UsdLuxDistantLight distant_light = pxr::UsdLuxDistantLight::Define(stage,
usd_path);
103 distant_light.CreateAngleAttr().Set(
RAD2DEGF(light->
sun_angle / 2.0f), timecode);
104 usd_light_api = distant_light.LightAPI();
115 intensity = light->
energy / 4.0f;
122 usd_light_api.CreateIntensityAttr().Set(intensity, timecode);
123 usd_light_api.CreateExposureAttr().Set(0.0f, timecode);
124 usd_light_api.CreateColorAttr().Set(pxr::GfVec3f(light->
r, light->
g, light->
b), timecode);
125 usd_light_api.CreateDiffuseAttr().Set(light->
diff_fac, timecode);
126 usd_light_api.CreateSpecularAttr().Set(light->
spec_fac, timecode);
127 usd_light_api.CreateNormalizeAttr().Set(
true, timecode);
129 auto prim = usd_light_api.GetPrim();