mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 12:08:54 +02:00
fix cauterization hack
This commit is contained in:
parent
95aad3140d
commit
fd28457807
3 changed files with 21 additions and 5 deletions
|
@ -359,8 +359,11 @@ void ModelMeshPartPayload::notifyLocationChanged() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform, const QVector<glm::mat4>& clusterMatrices) {
|
void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform,
|
||||||
|
const QVector<glm::mat4>& clusterMatrices,
|
||||||
|
const QVector<glm::mat4>& cauterizedClusterMatrices) {
|
||||||
_transform = transform;
|
_transform = transform;
|
||||||
|
_cauterizedTransform = transform;
|
||||||
|
|
||||||
if (clusterMatrices.size() > 0) {
|
if (clusterMatrices.size() > 0) {
|
||||||
_worldBound = AABox();
|
_worldBound = AABox();
|
||||||
|
@ -373,6 +376,11 @@ void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transf
|
||||||
_worldBound.transform(transform);
|
_worldBound.transform(transform);
|
||||||
if (clusterMatrices.size() == 1) {
|
if (clusterMatrices.size() == 1) {
|
||||||
_transform = _transform.worldTransform(Transform(clusterMatrices[0]));
|
_transform = _transform.worldTransform(Transform(clusterMatrices[0]));
|
||||||
|
if (cauterizedClusterMatrices.size() != 0) {
|
||||||
|
_cauterizedTransform = _cauterizedTransform.worldTransform(Transform(cauterizedClusterMatrices[0]));
|
||||||
|
} else {
|
||||||
|
_cauterizedTransform = _transform;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -527,9 +535,14 @@ void ModelMeshPartPayload::bindTransform(gpu::Batch& batch, const ShapePipeline:
|
||||||
} else {
|
} else {
|
||||||
batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::SKINNING, state.clusterBuffer);
|
batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::SKINNING, state.clusterBuffer);
|
||||||
}
|
}
|
||||||
|
batch.setModelTransform(_transform);
|
||||||
|
} else {
|
||||||
|
if (canCauterize && _model->getCauterizeBones()) {
|
||||||
|
batch.setModelTransform(_cauterizedTransform);
|
||||||
|
} else {
|
||||||
|
batch.setModelTransform(_transform);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
batch.setModelTransform(_transform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshPartPayload::startFade() {
|
void ModelMeshPartPayload::startFade() {
|
||||||
|
|
|
@ -85,7 +85,9 @@ public:
|
||||||
typedef Payload::DataPointer Pointer;
|
typedef Payload::DataPointer Pointer;
|
||||||
|
|
||||||
void notifyLocationChanged() override;
|
void notifyLocationChanged() override;
|
||||||
void updateTransformForSkinnedMesh(const Transform& transform, const QVector<glm::mat4>& clusterMatrices);
|
void updateTransformForSkinnedMesh(const Transform& transform,
|
||||||
|
const QVector<glm::mat4>& clusterMatrices,
|
||||||
|
const QVector<glm::mat4>& cauterizedClusterMatrices);
|
||||||
|
|
||||||
// Entity fade in
|
// Entity fade in
|
||||||
void startFade();
|
void startFade();
|
||||||
|
@ -106,6 +108,7 @@ public:
|
||||||
|
|
||||||
Model* _model;
|
Model* _model;
|
||||||
|
|
||||||
|
Transform _cauterizedTransform;
|
||||||
int _meshIndex;
|
int _meshIndex;
|
||||||
int _shapeID;
|
int _shapeID;
|
||||||
|
|
||||||
|
|
|
@ -238,7 +238,7 @@ void Model::updateRenderItems() {
|
||||||
|
|
||||||
// update the model transform and bounding box for this render item.
|
// update the model transform and bounding box for this render item.
|
||||||
const Model::MeshState& state = data._model->_meshStates.at(data._meshIndex);
|
const Model::MeshState& state = data._model->_meshStates.at(data._meshIndex);
|
||||||
data.updateTransformForSkinnedMesh(modelTransform, state.clusterMatrices);
|
data.updateTransformForSkinnedMesh(modelTransform, state.clusterMatrices, state.cauterizedClusterMatrices);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue