Renderer/src/main/java/electrosphere/renderer/model/Bone.java
2024-03-09 20:05:47 -05:00

53 lines
1.3 KiB
Java

package electrosphere.renderer.model;
import java.util.HashMap;
import java.util.Map;
import org.joml.Matrix4d;
import org.lwjgl.assimp.AIBone;
/**
* Keeps track of bone data
*/
public class Bone {
public String boneID;
int numWeights;
Map<Integer,Float> weights = new HashMap<Integer,Float>();
public Matrix4d inverseBindPoseMatrix;
public Matrix4d deform;
public Matrix4d transform;
public Matrix4d final_transform;
public AIBone raw_data;
public Bone(){
transform = new Matrix4d();
deform = new Matrix4d();
final_transform = new Matrix4d();
}
public Bone(AIBone raw_data){
transform = new Matrix4d();
deform = new Matrix4d();
final_transform = new Matrix4d();
boneID = raw_data.mName().dataString();
inverseBindPoseMatrix = electrosphere.util.Utilities.convertAIMatrixd(raw_data.mOffsetMatrix());
numWeights = raw_data.mNumWeights();
this.raw_data = raw_data;
}
/**
* Stores a bone weight
* @param index the index of the bone in the bone array in shader
* @param weight the weight for the given bone
*/
public void putWeight(int index, float weight){
weights.put(index,weight);
}
/**
* Returns the weight map
*/
public Map<Integer,Float> getWeights(){
return weights;
}
}