mirror of
https://github.com/overte-org/overte.git
synced 2025-06-15 20:39:07 +02:00
don't blend animations for otherAvatars
This commit is contained in:
parent
4bbbcb61be
commit
faa272c67c
4 changed files with 45 additions and 39 deletions
|
@ -95,12 +95,6 @@ void CauterizedModel::createCollisionRenderItemSet() {
|
||||||
Model::createCollisionRenderItemSet();
|
Model::createCollisionRenderItemSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called within Model::simulate call, below.
|
|
||||||
void CauterizedModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
|
|
||||||
Model::updateRig(deltaTime, parentTransform);
|
|
||||||
_needsUpdateClusterMatrices = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CauterizedModel::updateClusterMatrices() {
|
void CauterizedModel::updateClusterMatrices() {
|
||||||
PerformanceTimer perfTimer("CauterizedModel::updateClusterMatrices");
|
PerformanceTimer perfTimer("CauterizedModel::updateClusterMatrices");
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ public:
|
||||||
void createVisibleRenderItemSet() override;
|
void createVisibleRenderItemSet() override;
|
||||||
void createCollisionRenderItemSet() override;
|
void createCollisionRenderItemSet() override;
|
||||||
|
|
||||||
virtual void updateRig(float deltaTime, glm::mat4 parentTransform) override;
|
|
||||||
virtual void updateClusterMatrices() override;
|
virtual void updateClusterMatrices() override;
|
||||||
void updateRenderItems() override;
|
void updateRenderItems() override;
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
|
||||||
_rig->computeMotionAnimationState(deltaTime, position, velocity, orientation, ccState);
|
_rig->computeMotionAnimationState(deltaTime, position, velocity, orientation, ccState);
|
||||||
|
|
||||||
// evaluate AnimGraph animation and update jointStates.
|
// evaluate AnimGraph animation and update jointStates.
|
||||||
CauterizedModel::updateRig(deltaTime, parentTransform);
|
Model::updateRig(deltaTime, parentTransform);
|
||||||
|
|
||||||
Rig::EyeParameters eyeParams;
|
Rig::EyeParameters eyeParams;
|
||||||
eyeParams.worldHeadOrientation = headParams.worldHeadOrientation;
|
eyeParams.worldHeadOrientation = headParams.worldHeadOrientation;
|
||||||
|
@ -179,7 +179,9 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
|
||||||
|
|
||||||
_rig->updateFromEyeParameters(eyeParams);
|
_rig->updateFromEyeParameters(eyeParams);
|
||||||
} else {
|
} else {
|
||||||
CauterizedModel::updateRig(deltaTime, parentTransform);
|
// no need to call Model::updateRig() because otherAvatars get their joint state
|
||||||
|
// copied directly from AvtarData::_jointData (there are no Rig animations to blend)
|
||||||
|
_needsUpdateClusterMatrices = true;
|
||||||
|
|
||||||
// This is a little more work than we really want.
|
// This is a little more work than we really want.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1274,7 +1274,14 @@ void Rig::copyJointsIntoJointData(QVector<JointData>& jointDataVec) const {
|
||||||
void Rig::copyJointsFromJointData(const QVector<JointData>& jointDataVec) {
|
void Rig::copyJointsFromJointData(const QVector<JointData>& jointDataVec) {
|
||||||
PerformanceTimer perfTimer("copyJoints");
|
PerformanceTimer perfTimer("copyJoints");
|
||||||
PROFILE_RANGE(simulation_animation_detail, "copyJoints");
|
PROFILE_RANGE(simulation_animation_detail, "copyJoints");
|
||||||
if (_animSkeleton && jointDataVec.size() == (int)_internalPoseSet._relativePoses.size()) {
|
if (!_animSkeleton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (jointDataVec.size() != (int)_internalPoseSet._relativePoses.size()) {
|
||||||
|
// animations haven't fully loaded yet.
|
||||||
|
_internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses();
|
||||||
|
}
|
||||||
|
|
||||||
// make a vector of rotations in absolute-geometry-frame
|
// make a vector of rotations in absolute-geometry-frame
|
||||||
const AnimPoseVec& absoluteDefaultPoses = _animSkeleton->getAbsoluteDefaultPoses();
|
const AnimPoseVec& absoluteDefaultPoses = _animSkeleton->getAbsoluteDefaultPoses();
|
||||||
std::vector<glm::quat> rotations;
|
std::vector<glm::quat> rotations;
|
||||||
|
@ -1306,7 +1313,11 @@ void Rig::copyJointsFromJointData(const QVector<JointData>& jointDataVec) {
|
||||||
_internalPoseSet._relativePoses[i].trans() = relativeDefaultPoses[i].trans();
|
_internalPoseSet._relativePoses[i].trans() = relativeDefaultPoses[i].trans();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// build absolute poses and copy to externalPoseSet
|
||||||
|
buildAbsoluteRigPoses(_internalPoseSet._relativePoses, _internalPoseSet._absolutePoses);
|
||||||
|
QWriteLocker writeLock(&_externalPoseSetLock);
|
||||||
|
_externalPoseSet = _internalPoseSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rig::computeAvatarBoundingCapsule(
|
void Rig::computeAvatarBoundingCapsule(
|
||||||
|
|
Loading…
Reference in a new issue