// Copyright 2025 DeepMind Technologies Limited // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // DO NOT EDIT. THIS FILE IS AUTOMATICALLY GENERATED. #ifndef MJCPHYSICS_GENERATED_COLLISIONAPI_H #define MJCPHYSICS_GENERATED_COLLISIONAPI_H /// \file mjcPhysics/collisionAPI.h #include #include #include #include #include #include #include #include #include #include #include #include PXR_NAMESPACE_OPEN_SCOPE class SdfAssetPath; // -------------------------------------------------------------------------- // // MJCCOLLISIONAPI // // -------------------------------------------------------------------------- // /// \class MjcPhysicsCollisionAPI /// /// API describing a MuJoCo collider. /// class MjcPhysicsCollisionAPI : public UsdAPISchemaBase { public: /// Compile time constant representing what kind of schema this class is. /// /// \sa UsdSchemaKind static const UsdSchemaKind schemaKind = UsdSchemaKind::SingleApplyAPI; /// Construct a MjcPhysicsCollisionAPI on UsdPrim \p prim . /// Equivalent to MjcPhysicsCollisionAPI::Get(prim.GetStage(), prim.GetPath()) /// for a \em valid \p prim, but will not immediately throw an error for /// an invalid \p prim explicit MjcPhysicsCollisionAPI(const UsdPrim& prim = UsdPrim()) : UsdAPISchemaBase(prim) {} /// Construct a MjcPhysicsCollisionAPI on the prim held by \p schemaObj . /// Should be preferred over MjcPhysicsCollisionAPI(schemaObj.GetPrim()), /// as it preserves SchemaBase state. explicit MjcPhysicsCollisionAPI(const UsdSchemaBase& schemaObj) : UsdAPISchemaBase(schemaObj) {} /// Destructor. MJCPHYSICS_API virtual ~MjcPhysicsCollisionAPI(); /// Return a vector of names of all pre-declared attributes for this schema /// class and all its ancestor classes. Does not include attributes that /// may be authored by custom/extended methods of the schemas involved. MJCPHYSICS_API static const TfTokenVector& GetSchemaAttributeNames( bool includeInherited = true); /// Return a MjcPhysicsCollisionAPI holding the prim adhering to this /// schema at \p path on \p stage. If no prim exists at \p path on /// \p stage, or if the prim at that path does not adhere to this schema, /// return an invalid schema object. This is shorthand for the following: /// /// \code /// MjcPhysicsCollisionAPI(stage->GetPrimAtPath(path)); /// \endcode /// MJCPHYSICS_API static MjcPhysicsCollisionAPI Get(const UsdStagePtr& stage, const SdfPath& path); /// Returns true if this single-apply API schema can be applied to /// the given \p prim. If this schema can not be a applied to the prim, /// this returns false and, if provided, populates \p whyNot with the /// reason it can not be applied. /// /// Note that if CanApply returns false, that does not necessarily imply /// that calling Apply will fail. Callers are expected to call CanApply /// before calling Apply if they want to ensure that it is valid to /// apply a schema. /// /// \sa UsdPrim::GetAppliedSchemas() /// \sa UsdPrim::HasAPI() /// \sa UsdPrim::CanApplyAPI() /// \sa UsdPrim::ApplyAPI() /// \sa UsdPrim::RemoveAPI() /// MJCPHYSICS_API static bool CanApply(const UsdPrim& prim, std::string* whyNot = nullptr); /// Applies this single-apply API schema to the given \p prim. /// This information is stored by adding "MjcCollisionAPI" to the /// token-valued, listOp metadata \em apiSchemas on the prim. /// /// \return A valid MjcPhysicsCollisionAPI object is returned upon success. /// An invalid (or empty) MjcPhysicsCollisionAPI object is returned upon /// failure. See \ref UsdPrim::ApplyAPI() for conditions /// resulting in failure. /// /// \sa UsdPrim::GetAppliedSchemas() /// \sa UsdPrim::HasAPI() /// \sa UsdPrim::CanApplyAPI() /// \sa UsdPrim::ApplyAPI() /// \sa UsdPrim::RemoveAPI() /// MJCPHYSICS_API static MjcPhysicsCollisionAPI Apply(const UsdPrim& prim); protected: /// Returns the kind of schema this class belongs to. /// /// \sa UsdSchemaKind MJCPHYSICS_API UsdSchemaKind _GetSchemaKind() const override; private: // needs to invoke _GetStaticTfType. friend class UsdSchemaRegistry; MJCPHYSICS_API static const TfType& _GetStaticTfType(); static bool _IsTypedSchema(); // override SchemaBase virtuals. MJCPHYSICS_API const TfType& _GetTfType() const override; public: // --------------------------------------------------------------------- // // GROUP // --------------------------------------------------------------------- // /// Integer MuJoCo group to which the collider belongs. /// /// | || /// | -- | -- | /// | Declaration | `uniform int mjc:group = 0` | /// | C++ Type | int | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Int | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetGroupAttr() const; /// See GetGroupAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateGroupAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // SHELLINERTIA // --------------------------------------------------------------------- // /// Enables handling of the inertia assuming mass is concentrated on the /// surface. /// /// | || /// | -- | -- | /// | Declaration | `uniform bool mjc:shellinertia = 0` | /// | C++ Type | bool | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Bool | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetShellInertiaAttr() const; /// See GetShellInertiaAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateShellInertiaAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // PRIORITY // --------------------------------------------------------------------- // /// Priority determining how the properties of two colliders are combined to /// form the properties of the contact. /// /// | || /// | -- | -- | /// | Declaration | `uniform int mjc:priority = 0` | /// | C++ Type | int | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Int | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetPriorityAttr() const; /// See GetPriorityAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreatePriorityAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // CONDIM // --------------------------------------------------------------------- // /// The dimensionality of the contact space for a dynamically generated /// contact pair is set to the maximum of the condim values of the two /// participating geoms. /// /// | || /// | -- | -- | /// | Declaration | `uniform int mjc:condim = 3` | /// | C++ Type | int | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Int | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetConDimAttr() const; /// See GetConDimAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateConDimAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // SOLMIX // --------------------------------------------------------------------- // /// Specifies the weight used for averaging of contact parameters, and /// interacts with the priority attribute. /// /// | || /// | -- | -- | /// | Declaration | `uniform double mjc:solmix = 1` | /// | C++ Type | double | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetSolMixAttr() const; /// See GetSolMixAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateSolMixAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // SOLREF // --------------------------------------------------------------------- // /// Specifies the weight used for averaging of contact parameters, and /// interacts with the priority attribute. /// /// | || /// | -- | -- | /// | Declaration | `uniform double[] mjc:solref = [0.02, 1]` | /// | C++ Type | VtArray | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->DoubleArray | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetSolRefAttr() const; /// See GetSolRefAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateSolRefAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // SOLIMP // --------------------------------------------------------------------- // /// Specifies the weight used for averaging of contact parameters, and /// interacts with the priority attribute. /// /// | || /// | -- | -- | /// | Declaration | `uniform double[] mjc:solimp = [0.9, 0.95, 0.001, 0.5, 2]` /// | | C++ Type | VtArray | | \ref Usd_Datatypes "Usd Type" | /// SdfValueTypeNames->DoubleArray | | \ref SdfVariability "Variability" | /// SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetSolImpAttr() const; /// See GetSolImpAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateSolImpAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // MARGIN // --------------------------------------------------------------------- // /// DEPRECATED: Use newton:contactMargin and newton:contactGap instead. /// /// Geometric inflation of the geom surface for the purpose of contact force /// generation. /// /// | || /// | -- | -- | /// | Declaration | `uniform double mjc:margin = 0` | /// | C++ Type | double | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetMarginAttr() const; /// See GetMarginAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateMarginAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // --------------------------------------------------------------------- // // GAP // --------------------------------------------------------------------- // /// DEPRECATED: Use newton:contactGap instead. /// /// Additional contact detection buffer beyond margin. Contacts are detected /// at distance margin + gap but forces are only generated at distance margin. /// /// | || /// | -- | -- | /// | Declaration | `uniform double mjc:gap = 0` | /// | C++ Type | double | /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | MJCPHYSICS_API UsdAttribute GetGapAttr() const; /// See GetGapAttr(), and also /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. /// If specified, author \p defaultValue as the attribute's default, /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - /// the default for \p writeSparsely is \c false. MJCPHYSICS_API UsdAttribute CreateGapAttr(VtValue const& defaultValue = VtValue(), bool writeSparsely = false) const; public: // ===================================================================== // // Feel free to add custom code below this line, it will be preserved by // the code generator. // // Just remember to: // - Close the class declaration with }; // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE // - Close the include guard with #endif // ===================================================================== // // --(BEGIN CUSTOM CODE)-- }; PXR_NAMESPACE_CLOSE_SCOPE #endif