started cleanup of pr

This commit is contained in:
amantley 2018-11-14 17:27:45 -08:00
parent 8256c652fc
commit 80ebde1036
7 changed files with 3 additions and 39 deletions

View file

@ -33,21 +33,18 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) {
std::vector<glm::mat4> bindMatrices;
// cast into a non-const reference, so we can mutate the FBXCluster
HFMCluster& cluster = const_cast<HFMCluster&>(mesh.clusters.at(j));
HFMCluster localCluster;
localCluster.jointIndex = cluster.jointIndex;
localCluster.inverseBindMatrix = cluster.inverseBindMatrix;
localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix);
//dummyClustersList.push_back(localCluster);
// AJT: mutate bind pose! this allows us to oreint the skeleton back into the authored orientaiton before
// rendering, with no runtime overhead.
// we make a copy of the inversebindMatrices in order to prevent mutating the model bind pose
if (hfmModel.jointRotationOffsets.contains(cluster.jointIndex)) {
AnimPose localOffset(hfmModel.jointRotationOffsets[cluster.jointIndex], glm::vec3());
if ((hfmModel.clusterBindMatrixOriginalValues.size() > i) && (hfmModel.clusterBindMatrixOriginalValues[i].size() > j)) {
localCluster.inverseBindMatrix = (glm::mat4)localOffset.inverse() * hfmModel.clusterBindMatrixOriginalValues[i][j];
//cluster.inverseBindMatrix = (glm::mat4)localOffset.inverse() * hfmModel.clusterBindMatrixOriginalValues[i][j];
}
//cluster.inverseBindTransform.evalFromRawMatrix(cluster.inverseBindMatrix);
localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix);
}
dummyClustersList.push_back(localCluster);
@ -220,7 +217,6 @@ void AnimSkeleton::buildSkeletonFromJoints(const std::vector<HFMJoint>& joints,
// build relative and absolute default poses
glm::mat4 relDefaultMat = glm::translate(_joints[i].translation) * preRotationTransform * glm::mat4_cast(_joints[i].rotation) * postRotationTransform;
AnimPose relDefaultPose(relDefaultMat);
qCDebug(animation) << "relative default pose for joint " << i << " " << relDefaultPose.trans() << " " << relDefaultPose.rot();
int parentIndex = getParentIndex(i);
if (parentIndex >= 0) {

View file

@ -78,7 +78,6 @@ protected:
std::vector<int> _nonMirroredIndices;
std::vector<int> _mirrorMap;
QHash<QString, int> _jointIndicesByName;
// std::vector<std::vector<glm::mat4>> _clusterBindMatrixOriginalValues;
// no copies
AnimSkeleton(const AnimSkeleton&) = delete;

View file

@ -56,7 +56,6 @@ void SkeletonModel::setTextures(const QVariantMap& textures) {
void SkeletonModel::initJointStates() {
const HFMModel& hfmModel = getHFMModel();
glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset);
_rig.initJointStates(hfmModel, modelOffset);
{

View file

@ -2028,17 +2028,6 @@ HFMModel* FBXReader::extractHFMModel(const QVariantHash& mapping, const QString&
qCDebug(modelformat) << "Joint Rotation Offset added to Rig._jointRotationOffsets : " << " jointName: " << jointName << " jointIndex: " << jointIndex << " rotation offset: " << rotationOffset;
}
// create a backup copy of the bindposes,
// these are needed when we recompute the bindpose offsets in the AnimSkeleton constructor on mySkeleton->reset()
for (int i = 0; i < (int)hfmModel.meshes.size(); i++) {
const HFMMesh& mesh = hfmModel.meshes.at(i);
vector<glm::mat4> meshBindMatrices;
for (int j = 0; j < mesh.clusters.size(); j++) {
const HFMCluster& cluster = mesh.clusters.at(j);
meshBindMatrices.push_back(cluster.inverseBindMatrix);
}
hfmModel.clusterBindMatrixOriginalValues.push_back(meshBindMatrices);
}
return hfmModelPtr;
}

View file

@ -112,7 +112,6 @@ void CauterizedModel::updateClusterMatrices() {
const HFMModel& hfmModel = getHFMModel();
for (int i = 0; i < (int)_meshStates.size(); i++) {
qCDebug(renderutils) << "mesh states size " << _meshStates.size() << " mesh size " << hfmModel.meshes.size();
Model::MeshState& state = _meshStates[i];
const HFMMesh& mesh = hfmModel.meshes.at(i);
for (int j = 0; j < mesh.clusters.size(); j++) {
@ -121,19 +120,11 @@ void CauterizedModel::updateClusterMatrices() {
auto jointPose = _rig.getJointPose(cluster.jointIndex);
Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans());
Transform clusterTransform;
Transform clusterTransform2;
//Transform::mult(clusterTransform, jointTransform, cluster.inverseBindTransform);
Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindTransform);
Transform::mult(clusterTransform2, jointTransform, cluster.inverseBindTransform);
//qCDebug(renderutils) << "the animskel matrix i " << i << " j " << j << _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindTransform;
qCDebug(renderutils) << "the mesh state cluster matrix " << state.clusterMatrices[j];
//qCDebug(renderutils) << "cluster transform old way " << clusterTransform2;
//qCDebug(renderutils) << "cluster transform new way " << clusterTransform;
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform);
state.clusterDualQuaternions[j].setCauterizationParameters(0.0f, jointPose.trans());
} else {
auto jointMatrix = _rig.getJointTransform(cluster.jointIndex);
//glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]);
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, state.clusterMatrices[j]);
}
}
@ -166,7 +157,6 @@ void CauterizedModel::updateClusterMatrices() {
} else {
Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans());
Transform clusterTransform;
//Transform::mult(clusterTransform, jointTransform, cluster.inverseBindTransform);
Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindTransform);
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform);
state.clusterDualQuaternions[j].setCauterizationParameters(1.0f, cauterizePose.trans());
@ -176,7 +166,6 @@ void CauterizedModel::updateClusterMatrices() {
// not cauterized so just copy the value from the non-cauterized version.
state.clusterMatrices[j] = _meshStates[i].clusterMatrices[j];
} else {
// glm_mat4u_mul(cauterizeMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]);
glm_mat4u_mul(cauterizeMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, state.clusterMatrices[j]);
}
}
@ -242,8 +231,6 @@ void CauterizedModel::updateRenderItems() {
if (useDualQuaternionSkinning) {
data.updateClusterBuffer(meshState.clusterDualQuaternions,
cauterizedMeshState.clusterDualQuaternions);
//qCDebug(renderutils) << "mesh cluster transform " << meshState.clusterDualQuaternions[0];
//qCDebug(renderutils) << "cauterized mesh cluster transform " << cauterizedMeshState.clusterDualQuaternions[0];
} else {
data.updateClusterBuffer(meshState.clusterMatrices,
cauterizedMeshState.clusterMatrices);

View file

@ -237,10 +237,6 @@ void Model::updateRenderItems() {
bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex);
bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning();
if (useDualQuaternionSkinning) {
qCDebug(renderutils) << "use dual quats value " << useDualQuaternionSkinning;
}
transaction.updateItem<ModelMeshPartPayload>(itemID, [modelTransform, meshState, useDualQuaternionSkinning,
invalidatePayloadShapeKey, isWireframe, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) {
if (useDualQuaternionSkinning) {

View file

@ -61,7 +61,6 @@ void SoftAttachmentModel::updateClusterMatrices() {
}
glm::mat4 m;
//glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, m);
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, m);
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(m);
} else {
@ -71,7 +70,6 @@ void SoftAttachmentModel::updateClusterMatrices() {
} else {
jointMatrix = _rig.getJointTransform(cluster.jointIndex);
}
//glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]);
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, state.clusterMatrices[j]);
}
}