mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 06:53:01 +02:00
started cleanup of pr
This commit is contained in:
parent
8256c652fc
commit
80ebde1036
7 changed files with 3 additions and 39 deletions
|
@ -38,16 +38,13 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) {
|
||||||
localCluster.jointIndex = cluster.jointIndex;
|
localCluster.jointIndex = cluster.jointIndex;
|
||||||
localCluster.inverseBindMatrix = cluster.inverseBindMatrix;
|
localCluster.inverseBindMatrix = cluster.inverseBindMatrix;
|
||||||
localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.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
|
// we make a copy of the inversebindMatrices in order to prevent mutating the model bind pose
|
||||||
// rendering, with no runtime overhead.
|
|
||||||
if (hfmModel.jointRotationOffsets.contains(cluster.jointIndex)) {
|
if (hfmModel.jointRotationOffsets.contains(cluster.jointIndex)) {
|
||||||
AnimPose localOffset(hfmModel.jointRotationOffsets[cluster.jointIndex], glm::vec3());
|
AnimPose localOffset(hfmModel.jointRotationOffsets[cluster.jointIndex], glm::vec3());
|
||||||
if ((hfmModel.clusterBindMatrixOriginalValues.size() > i) && (hfmModel.clusterBindMatrixOriginalValues[i].size() > j)) {
|
if ((hfmModel.clusterBindMatrixOriginalValues.size() > i) && (hfmModel.clusterBindMatrixOriginalValues[i].size() > j)) {
|
||||||
localCluster.inverseBindMatrix = (glm::mat4)localOffset.inverse() * hfmModel.clusterBindMatrixOriginalValues[i][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);
|
localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix);
|
||||||
}
|
}
|
||||||
dummyClustersList.push_back(localCluster);
|
dummyClustersList.push_back(localCluster);
|
||||||
|
@ -220,7 +217,6 @@ void AnimSkeleton::buildSkeletonFromJoints(const std::vector<HFMJoint>& joints,
|
||||||
// build relative and absolute default poses
|
// build relative and absolute default poses
|
||||||
glm::mat4 relDefaultMat = glm::translate(_joints[i].translation) * preRotationTransform * glm::mat4_cast(_joints[i].rotation) * postRotationTransform;
|
glm::mat4 relDefaultMat = glm::translate(_joints[i].translation) * preRotationTransform * glm::mat4_cast(_joints[i].rotation) * postRotationTransform;
|
||||||
AnimPose relDefaultPose(relDefaultMat);
|
AnimPose relDefaultPose(relDefaultMat);
|
||||||
qCDebug(animation) << "relative default pose for joint " << i << " " << relDefaultPose.trans() << " " << relDefaultPose.rot();
|
|
||||||
|
|
||||||
int parentIndex = getParentIndex(i);
|
int parentIndex = getParentIndex(i);
|
||||||
if (parentIndex >= 0) {
|
if (parentIndex >= 0) {
|
||||||
|
|
|
@ -78,7 +78,6 @@ protected:
|
||||||
std::vector<int> _nonMirroredIndices;
|
std::vector<int> _nonMirroredIndices;
|
||||||
std::vector<int> _mirrorMap;
|
std::vector<int> _mirrorMap;
|
||||||
QHash<QString, int> _jointIndicesByName;
|
QHash<QString, int> _jointIndicesByName;
|
||||||
// std::vector<std::vector<glm::mat4>> _clusterBindMatrixOriginalValues;
|
|
||||||
|
|
||||||
// no copies
|
// no copies
|
||||||
AnimSkeleton(const AnimSkeleton&) = delete;
|
AnimSkeleton(const AnimSkeleton&) = delete;
|
||||||
|
|
|
@ -56,7 +56,6 @@ void SkeletonModel::setTextures(const QVariantMap& textures) {
|
||||||
void SkeletonModel::initJointStates() {
|
void SkeletonModel::initJointStates() {
|
||||||
const HFMModel& hfmModel = getHFMModel();
|
const HFMModel& hfmModel = getHFMModel();
|
||||||
glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset);
|
glm::mat4 modelOffset = glm::scale(_scale) * glm::translate(_offset);
|
||||||
|
|
||||||
_rig.initJointStates(hfmModel, modelOffset);
|
_rig.initJointStates(hfmModel, modelOffset);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
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;
|
return hfmModelPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,6 @@ void CauterizedModel::updateClusterMatrices() {
|
||||||
const HFMModel& hfmModel = getHFMModel();
|
const HFMModel& hfmModel = getHFMModel();
|
||||||
|
|
||||||
for (int i = 0; i < (int)_meshStates.size(); i++) {
|
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];
|
Model::MeshState& state = _meshStates[i];
|
||||||
const HFMMesh& mesh = hfmModel.meshes.at(i);
|
const HFMMesh& mesh = hfmModel.meshes.at(i);
|
||||||
for (int j = 0; j < mesh.clusters.size(); j++) {
|
for (int j = 0; j < mesh.clusters.size(); j++) {
|
||||||
|
@ -121,19 +120,11 @@ void CauterizedModel::updateClusterMatrices() {
|
||||||
auto jointPose = _rig.getJointPose(cluster.jointIndex);
|
auto jointPose = _rig.getJointPose(cluster.jointIndex);
|
||||||
Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans());
|
Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans());
|
||||||
Transform clusterTransform;
|
Transform clusterTransform;
|
||||||
Transform clusterTransform2;
|
|
||||||
//Transform::mult(clusterTransform, jointTransform, cluster.inverseBindTransform);
|
|
||||||
Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].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] = Model::TransformDualQuaternion(clusterTransform);
|
||||||
state.clusterDualQuaternions[j].setCauterizationParameters(0.0f, jointPose.trans());
|
state.clusterDualQuaternions[j].setCauterizationParameters(0.0f, jointPose.trans());
|
||||||
} else {
|
} else {
|
||||||
auto jointMatrix = _rig.getJointTransform(cluster.jointIndex);
|
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]);
|
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, state.clusterMatrices[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +157,6 @@ void CauterizedModel::updateClusterMatrices() {
|
||||||
} else {
|
} else {
|
||||||
Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans());
|
Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans());
|
||||||
Transform clusterTransform;
|
Transform clusterTransform;
|
||||||
//Transform::mult(clusterTransform, jointTransform, cluster.inverseBindTransform);
|
|
||||||
Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindTransform);
|
Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindTransform);
|
||||||
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform);
|
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform);
|
||||||
state.clusterDualQuaternions[j].setCauterizationParameters(1.0f, cauterizePose.trans());
|
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.
|
// not cauterized so just copy the value from the non-cauterized version.
|
||||||
state.clusterMatrices[j] = _meshStates[i].clusterMatrices[j];
|
state.clusterMatrices[j] = _meshStates[i].clusterMatrices[j];
|
||||||
} else {
|
} else {
|
||||||
// glm_mat4u_mul(cauterizeMatrix, cluster.inverseBindMatrix, state.clusterMatrices[j]);
|
|
||||||
glm_mat4u_mul(cauterizeMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].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) {
|
if (useDualQuaternionSkinning) {
|
||||||
data.updateClusterBuffer(meshState.clusterDualQuaternions,
|
data.updateClusterBuffer(meshState.clusterDualQuaternions,
|
||||||
cauterizedMeshState.clusterDualQuaternions);
|
cauterizedMeshState.clusterDualQuaternions);
|
||||||
//qCDebug(renderutils) << "mesh cluster transform " << meshState.clusterDualQuaternions[0];
|
|
||||||
//qCDebug(renderutils) << "cauterized mesh cluster transform " << cauterizedMeshState.clusterDualQuaternions[0];
|
|
||||||
} else {
|
} else {
|
||||||
data.updateClusterBuffer(meshState.clusterMatrices,
|
data.updateClusterBuffer(meshState.clusterMatrices,
|
||||||
cauterizedMeshState.clusterMatrices);
|
cauterizedMeshState.clusterMatrices);
|
||||||
|
|
|
@ -237,10 +237,6 @@ void Model::updateRenderItems() {
|
||||||
bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex);
|
bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex);
|
||||||
bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning();
|
bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning();
|
||||||
|
|
||||||
if (useDualQuaternionSkinning) {
|
|
||||||
qCDebug(renderutils) << "use dual quats value " << useDualQuaternionSkinning;
|
|
||||||
}
|
|
||||||
|
|
||||||
transaction.updateItem<ModelMeshPartPayload>(itemID, [modelTransform, meshState, useDualQuaternionSkinning,
|
transaction.updateItem<ModelMeshPartPayload>(itemID, [modelTransform, meshState, useDualQuaternionSkinning,
|
||||||
invalidatePayloadShapeKey, isWireframe, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) {
|
invalidatePayloadShapeKey, isWireframe, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) {
|
||||||
if (useDualQuaternionSkinning) {
|
if (useDualQuaternionSkinning) {
|
||||||
|
|
|
@ -61,7 +61,6 @@ void SoftAttachmentModel::updateClusterMatrices() {
|
||||||
}
|
}
|
||||||
|
|
||||||
glm::mat4 m;
|
glm::mat4 m;
|
||||||
//glm_mat4u_mul(jointMatrix, cluster.inverseBindMatrix, m);
|
|
||||||
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, m);
|
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, m);
|
||||||
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(m);
|
state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(m);
|
||||||
} else {
|
} else {
|
||||||
|
@ -71,7 +70,6 @@ void SoftAttachmentModel::updateClusterMatrices() {
|
||||||
} else {
|
} else {
|
||||||
jointMatrix = _rig.getJointTransform(cluster.jointIndex);
|
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]);
|
glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->_clusterBindMatrixOriginalValues[i][j].inverseBindMatrix, state.clusterMatrices[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue