Class SoftBodySharedSettings

java.lang.Object
com.github.stephengold.joltjni.JoltPhysicsObject
com.github.stephengold.joltjni.SoftBodySharedSettings
All Implemented Interfaces:
ConstJoltPhysicsObject, ConstSoftBodySharedSettings, RefTarget, AutoCloseable, Comparable<JoltPhysicsObject>

public class SoftBodySharedSettings extends JoltPhysicsObject implements ConstSoftBodySharedSettings, RefTarget
Properties of a soft body that may be shared among multiple bodies.
  • Constructor Details

    • SoftBodySharedSettings

      public SoftBodySharedSettings()
      Instantiate with the default settings.
  • Method Details

    • addEdgeConstraint

      public void addEdgeConstraint(Edge edge)
      Add the specified edge constraint.
      Parameters:
      edge - the edge to add (not null, unaffected)
    • addFace

      public void addFace(ConstFace face)
      Add the specified face.
      Parameters:
      face - the face to add (not null, unaffected)
    • addInvBindMatrix

      public void addInvBindMatrix(InvBind invBind)
      Append the specified inverse-bind matrix. (native property: mInvBindMatrices)
      Parameters:
      invBind - the matrix to add (not null)
    • addSkinnedConstraint

      public void addSkinnedConstraint(Skinned skinned)
      Append the specified skinning constraint. (native property: mSkinnedConstraints)
      Parameters:
      skinned - the constraint to add (not null)
    • addVertex

      public void addVertex(Vertex vertex)
      Add the specified vertex. (native attribute: mVertices)
      Parameters:
      vertex - the vertex to add (not null, unaffected)
    • addVolumeConstraint

      public void addVolumeConstraint(Volume volume)
      Add the specified volume constraint.
      Parameters:
      volume - the constraint to add (not null, unaffected)
    • calculateEdgeLengths

      public void calculateEdgeLengths()
      Calculate the initial lengths of all edges in the body.
    • calculateSkinnedConstraintNormals

      public void calculateSkinnedConstraintNormals()
      Calculate the information needed for skinned constraint normals.
    • calculateVolumeConstraintVolumes

      public void calculateVolumeConstraintVolumes()
      Calculate the initial volumes of all tetrahedra in the body.
    • createConstraints

      public void createConstraints(ConstVertexAttributes vertexAttributes, int numAttributes, EBendType bendType)
      Automatically generate constraints based on the faces.
      Parameters:
      vertexAttributes - the desired attributes (one for each vertex)
      numAttributes - the number of attributes provided (≥0)
      bendType - the desired type of bend constraint (not null, default=Distance)
    • createConstraints

      public void createConstraints(ConstVertexAttributes[] vertexAttributes, EBendType bendType)
      Automatically generate constraints based on the faces.
      Parameters:
      vertexAttributes - the desired attributes (one for each vertex)
      bendType - the desired type of bend constraint (not null, default=Distance)
    • createConstraints

      public void createConstraints(ConstVertexAttributes[] vertexAttributes, EBendType bendType, float angleTolerance)
      Automatically generate constraints based on the faces.
      Parameters:
      vertexAttributes - the desired attributes (one for each vertex)
      bendType - the desired type of bend constraint (not null, default=Distance)
      angleTolerance - the desired tolerance for creating shear edges (in radians, default=2*Pi/45)
    • getEdgeConstraints

      public Edge[] getEdgeConstraints()
      Enumerate all edge constraints in the settings. (native attribute: mEdgeConstraints)
      Returns:
      a new array of new JVM objects with the pre-existing native objects assigned
    • getVertex

      public Vertex getVertex(int index)
      Access the specified vertex.
      Parameters:
      index - the index of the vertex (≥0)
      Returns:
      a new JVM object with the pre-existing native object assigned
    • getVertices

      public Vertex[] getVertices()
      Enumerate all vertices in the settings. (native attribute: mVertices)
      Returns:
      a new array of new JVM objects with pre-existing native objects assigned
    • optimize

      public void optimize()
      Optimize the settings without writing any results.
    • sCreateCube

      public static SoftBodySharedSettingsRef sCreateCube(int gridSize, float gridSpacing)
      Create a cube with edge constraints, volume constraints, and faces.
      Parameters:
      gridSize - the desired number of points on each axis (≥1)
      gridSpacing - the distance between adjacent points
      Returns:
      a counted reference to new settings
    • setMaterials

      public void setMaterials(PhysicsMaterial material)
      Replace the materials. (native attribute: mMaterials)
      Parameters:
      material - the desired material, or null
    • setVertexRadius

      public void setVertexRadius(float radius)
      Alter the size of every particle.
      Parameters:
      radius - the desired radius (≥0, default=0)
    • countEdgeConstraints

      public int countEdgeConstraints()
      Count the edge constraints. The settings are unaffected. (native attribute: mEdgeConstraints)
      Specified by:
      countEdgeConstraints in interface ConstSoftBodySharedSettings
      Returns:
      the count (≥0)
    • countFaces

      public int countFaces()
      Count the faces. The settings are unaffected. (native attribute: mFaces)
      Specified by:
      countFaces in interface ConstSoftBodySharedSettings
      Returns:
      the count (≥0)
    • countPinnedVertices

      public int countPinnedVertices()
      Count the pinned vertices. The settings are unaffected.
      Specified by:
      countPinnedVertices in interface ConstSoftBodySharedSettings
      Returns:
      the count (≥0)
    • countVertices

      public int countVertices()
      Count the vertices. The settings are unaffected. (native attribute: mVertices)
      Specified by:
      countVertices in interface ConstSoftBodySharedSettings
      Returns:
      the count (≥0)
    • countVolumeConstraints

      public int countVolumeConstraints()
      Count the volume constraints. The settings are unaffected. (native attribute: mVolumeConstraints)
      Specified by:
      countVolumeConstraints in interface ConstSoftBodySharedSettings
      Returns:
      the count (≥0)
    • getVertexRadius

      public float getVertexRadius()
      Return the radius of each particle. The settings are unaffected. (native attribute: mVertexRadius)
      Specified by:
      getVertexRadius in interface ConstSoftBodySharedSettings
      Returns:
      the radius (in meters)
    • putEdgeIndices

      public void putEdgeIndices(IntBuffer storeIndices)
      Write the vertex indices of all edges to the specified buffer and advance the buffer's position. The settings are unaffected.
      Specified by:
      putEdgeIndices in interface ConstSoftBodySharedSettings
      Parameters:
      storeIndices - the destination buffer (not null, modified)
    • putFaceIndices

      public void putFaceIndices(IntBuffer storeIndices)
      Write the vertex indices of all faces to the specified buffer and advance the buffer's position. The settings are unaffected.
      Specified by:
      putFaceIndices in interface ConstSoftBodySharedSettings
      Parameters:
      storeIndices - the destination buffer (not null, modified)
    • getRefCount

      public int getRefCount()
      Count the active references to the native SoftBodySharedSettings. The settings are unaffected.
      Specified by:
      getRefCount in interface RefTarget
      Returns:
      the count (≥0)
    • setEmbedded

      public void setEmbedded()
      Mark the native SoftBodySharedSettings as embedded.
      Specified by:
      setEmbedded in interface RefTarget
    • toRef

      public SoftBodySharedSettingsRef toRef()
      Create a counted reference to the native SoftBodySharedSettings.
      Specified by:
      toRef in interface RefTarget
      Returns:
      a new JVM object with a new native object assigned