USD: Add Capsule_1 and Cylinder_1 Shapes to USD importer
This PR adds support for 2 additional USD Prim Shape Schemas :
* Cylinder_1
* Capsule_1
Additional tests will be added afterwards but a simple test is simply to
import the resulting file:
```python
from pxr import Usd, UsdGeom
stage = Usd.Stage.CreateNew('shapes.usda')
UsdGeom.Xform.Define(stage, '/world')
UsdGeom.Cylinder_1.Define(stage, '/world/cylinder_1')
UsdGeom.Capsule_1.Define(stage, '/world/capsule_1')
stage.GetRootLayer().Save()
```
Linked issue : https://projects.blender.org/blender/blender/issues/134138
Co-authored-by: Nig3l <nig3lpro@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/134944
This commit is contained in:
committed by
Jesse Yurkovich
parent
8fef9214a7
commit
92aab7c3db
@@ -17,9 +17,11 @@
|
||||
#include "usd_reader_shape.hh"
|
||||
|
||||
#include <pxr/usd/usdGeom/capsule.h>
|
||||
#include <pxr/usd/usdGeom/capsule_1.h>
|
||||
#include <pxr/usd/usdGeom/cone.h>
|
||||
#include <pxr/usd/usdGeom/cube.h>
|
||||
#include <pxr/usd/usdGeom/cylinder.h>
|
||||
#include <pxr/usd/usdGeom/cylinder_1.h>
|
||||
#include <pxr/usd/usdGeom/plane.h>
|
||||
#include <pxr/usd/usdGeom/sphere.h>
|
||||
#include <pxr/usdImaging/usdImaging/capsuleAdapter.h>
|
||||
@@ -89,13 +91,13 @@ bool USDShapeReader::read_mesh_values(double motionSampleTime,
|
||||
pxr::VtIntArray &face_indices,
|
||||
pxr::VtIntArray &face_counts) const
|
||||
{
|
||||
if (prim_.IsA<pxr::UsdGeomCapsule>()) {
|
||||
if (prim_.IsA<pxr::UsdGeomCapsule>() || prim_.IsA<pxr::UsdGeomCapsule_1>()) {
|
||||
read_values<pxr::UsdImagingCapsuleAdapter>(
|
||||
motionSampleTime, positions, face_indices, face_counts);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (prim_.IsA<pxr::UsdGeomCylinder>()) {
|
||||
if (prim_.IsA<pxr::UsdGeomCylinder>() || prim_.IsA<pxr::UsdGeomCylinder_1>()) {
|
||||
read_values<pxr::UsdImagingCylinderAdapter>(
|
||||
motionSampleTime, positions, face_indices, face_counts);
|
||||
return true;
|
||||
@@ -284,6 +286,14 @@ bool USDShapeReader::is_time_varying()
|
||||
geom.GetRadiusAttr().ValueMightBeTimeVarying());
|
||||
}
|
||||
|
||||
if (prim_.IsA<pxr::UsdGeomCapsule_1>()) {
|
||||
pxr::UsdGeomCapsule_1 geom(prim_);
|
||||
return (geom.GetAxisAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetHeightAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetRadiusTopAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetRadiusBottomAttr().ValueMightBeTimeVarying());
|
||||
}
|
||||
|
||||
if (prim_.IsA<pxr::UsdGeomCylinder>()) {
|
||||
pxr::UsdGeomCylinder geom(prim_);
|
||||
return (geom.GetAxisAttr().ValueMightBeTimeVarying() ||
|
||||
@@ -291,6 +301,14 @@ bool USDShapeReader::is_time_varying()
|
||||
geom.GetRadiusAttr().ValueMightBeTimeVarying());
|
||||
}
|
||||
|
||||
if (prim_.IsA<pxr::UsdGeomCylinder_1>()) {
|
||||
pxr::UsdGeomCylinder_1 geom(prim_);
|
||||
return (geom.GetAxisAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetHeightAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetRadiusTopAttr().ValueMightBeTimeVarying() ||
|
||||
geom.GetRadiusBottomAttr().ValueMightBeTimeVarying());
|
||||
}
|
||||
|
||||
if (prim_.IsA<pxr::UsdGeomCone>()) {
|
||||
pxr::UsdGeomCone geom(prim_);
|
||||
return (geom.GetAxisAttr().ValueMightBeTimeVarying() ||
|
||||
|
||||
@@ -24,9 +24,11 @@
|
||||
#include <pxr/usd/usd/primRange.h>
|
||||
#include <pxr/usd/usdGeom/camera.h>
|
||||
#include <pxr/usd/usdGeom/capsule.h>
|
||||
#include <pxr/usd/usdGeom/capsule_1.h>
|
||||
#include <pxr/usd/usdGeom/cone.h>
|
||||
#include <pxr/usd/usdGeom/cube.h>
|
||||
#include <pxr/usd/usdGeom/cylinder.h>
|
||||
#include <pxr/usd/usdGeom/cylinder_1.h>
|
||||
#include <pxr/usd/usdGeom/mesh.h>
|
||||
#include <pxr/usd/usdGeom/metrics.h>
|
||||
#include <pxr/usd/usdGeom/nurbsCurves.h>
|
||||
@@ -221,7 +223,8 @@ bool USDStageReader::valid() const
|
||||
|
||||
bool USDStageReader::is_primitive_prim(const pxr::UsdPrim &prim) const
|
||||
{
|
||||
return (prim.IsA<pxr::UsdGeomCapsule>() || prim.IsA<pxr::UsdGeomCylinder>() ||
|
||||
return (prim.IsA<pxr::UsdGeomCapsule>() || prim.IsA<pxr::UsdGeomCapsule_1>() ||
|
||||
prim.IsA<pxr::UsdGeomCylinder>() || prim.IsA<pxr::UsdGeomCylinder_1>() ||
|
||||
prim.IsA<pxr::UsdGeomCone>() || prim.IsA<pxr::UsdGeomCube>() ||
|
||||
prim.IsA<pxr::UsdGeomSphere>() || prim.IsA<pxr::UsdGeomPlane>());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user