mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 17:41:12 +02:00
Update after merge changes to NetworkGeometry.
Also cleaned up API for ModelMeshPartPayload::updateTransformForSkinnedMesh() to pass a QVector const ref, instead of a raw pointer and a size.
This commit is contained in:
parent
940f3e636d
commit
24ca5b3d60
3 changed files with 7 additions and 9 deletions
|
@ -354,15 +354,14 @@ void ModelMeshPartPayload::notifyLocationChanged() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const glm::mat4* clusterMatrices, size_t numClusterMatrices) {
|
void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const QVector<glm::mat4>& clusterMatrices) {
|
||||||
ModelMeshPartPayload::updateTransform(transform, offsetTransform);
|
ModelMeshPartPayload::updateTransform(transform, offsetTransform);
|
||||||
|
|
||||||
if (numClusterMatrices > 0) {
|
if (clusterMatrices.size() > 0) {
|
||||||
|
|
||||||
_worldBound = AABox();
|
_worldBound = AABox();
|
||||||
for (size_t i = 0; i < numClusterMatrices; i++) {
|
for (auto& clusterMatrix : clusterMatrices) {
|
||||||
AABox clusterBound = _localBound;
|
AABox clusterBound = _localBound;
|
||||||
clusterBound.transform(clusterMatrices[i]);
|
clusterBound.transform(clusterMatrix);
|
||||||
_worldBound += clusterBound;
|
_worldBound += clusterBound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ public:
|
||||||
typedef Payload::DataPointer Pointer;
|
typedef Payload::DataPointer Pointer;
|
||||||
|
|
||||||
void notifyLocationChanged() override;
|
void notifyLocationChanged() override;
|
||||||
void updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const glm::mat4* clusterMatrices, size_t numClusterMatrices);
|
void updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const QVector<glm::mat4>& clusterMatrices);
|
||||||
|
|
||||||
// Render Item interface
|
// Render Item interface
|
||||||
render::ItemKey getKey() const override;
|
render::ItemKey getKey() const override;
|
||||||
|
|
|
@ -151,7 +151,7 @@ void Model::enqueueLocationChange() {
|
||||||
modelTransform.setRotation(self->_rotation);
|
modelTransform.setRotation(self->_rotation);
|
||||||
|
|
||||||
Transform modelMeshOffset;
|
Transform modelMeshOffset;
|
||||||
if (self->_geometry && self->_geometry->isLoaded()) {
|
if (self->isLoaded()) {
|
||||||
// includes model offset and unitScale.
|
// includes model offset and unitScale.
|
||||||
modelMeshOffset = Transform(self->_rig->getGeometryToRigTransform());
|
modelMeshOffset = Transform(self->_rig->getGeometryToRigTransform());
|
||||||
} else {
|
} else {
|
||||||
|
@ -171,8 +171,7 @@ void Model::enqueueLocationChange() {
|
||||||
|
|
||||||
// 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);
|
||||||
size_t numClusterMatrices = data._model->getGeometry()->getFBXGeometry().meshes.at(data._meshIndex).clusters.size();
|
data.updateTransformForSkinnedMesh(modelTransform, modelMeshOffset, state.clusterMatrices);
|
||||||
data.updateTransformForSkinnedMesh(modelTransform, modelMeshOffset, &state.clusterMatrices[0], numClusterMatrices);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue