diff --git a/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.cpp b/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.cpp index aca59c824f..9cffa2e931 100644 --- a/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.cpp +++ b/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.cpp @@ -82,6 +82,10 @@ void EllipsoidJoint::constructProperties() setAuthors("Ajay Seth"); SimTK::Vec3 radii(NaN); constructProperty_radii_x_y_z(radii); + + Appearance appearance; + appearance.set_visible(true); + constructProperty_Appearance(appearance); } //============================================================================= @@ -176,6 +180,7 @@ void EllipsoidJoint::generateDecorations // since this method is called with fixed={true, false} if (!fixed) return; // Construct the visible Ellipsoid + if (!get_Appearance().get_visible()) return; SimTK::DecorativeEllipsoid ellipsoid(get_radii_x_y_z()); const OpenSim::PhysicalFrame& frame = getParentFrame(); ellipsoid.setColor(Vec3(0.0, 1.0, 1.0)); diff --git a/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.h b/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.h index 135221b89d..49946e4343 100644 --- a/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.h +++ b/OpenSim/Simulation/SimbodyEngine/EllipsoidJoint.h @@ -79,6 +79,9 @@ OpenSim_DECLARE_CONCRETE_OBJECT(EllipsoidJoint, Joint); Rotation3Z = 2u ///< 2 }; + OpenSim_DECLARE_UNNAMED_PROPERTY(Appearance, + "Default appearance attributes for this EllipsoidJoint"); + private: /** Specify the Coordinates of the EllipsoidJoint */ CoordinateIndex rx{ constructCoordinate(Coordinate::MotionType::Rotational, @@ -120,6 +123,11 @@ OpenSim_DECLARE_CONCRETE_OBJECT(EllipsoidJoint, Joint); //Set properties void setEllipsoidRadii(const SimTK::Vec3& radii); + /** Turn on/off the ellipsoid drawn by generateDecorations(). */ + void setEllipsoidVisible(bool visible) { + upd_Appearance().set_visible(visible); + }; + /** Exposes getCoordinate() method defined in base class (overloaded below). @see Joint */ using Joint::getCoordinate;