Skip to content

Commit 1ab1018

Browse files
everything is in the right place
1 parent 96cb5f8 commit 1ab1018

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

include/nbl/asset/utils/IMeshManipulator.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,13 @@ class IMeshManipulator : public virtual core::IReferenceCounted
403403
float weightRemainder = 1.f;
404404
for (auto i=0u; i<maxInfluences; i++)
405405
{
406-
if (jointIDs[i]<jointCount)
406+
const auto jointID = jointIDs[i];
407+
if (jointID<jointCount)
407408
if ((i<maxWeights ? weights[i]:weightRemainder)>FLT_MIN)
408409
{
409410
core::vectorSIMDf boneSpacePos;
410-
inverseBindPoses[i].transformVect(boneSpacePos,pos);
411-
jointAABBs[jointIDs[i]].addInternalPoint(boneSpacePos.getAsVector3df());
411+
inverseBindPoses[jointID].transformVect(boneSpacePos,pos);
412+
jointAABBs[jointID].addInternalPoint(boneSpacePos.getAsVector3df());
412413
noJointInfluence = false;
413414
}
414415
weightRemainder -= weights[i];

include/nbl/builtin/glsl/skinning/debug.vert

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ void main()
114114
const nbl_glsl_shapes_AABB_t aabb = nbl_glsl_shapes_CompressedAABB_t_decompress(debugAABB.data[dd.aabbOffset+jointID]);
115115

116116
const bvec3 mask = bvec3(gl_VertexIndex&0x1u,gl_VertexIndex&0x2u,gl_VertexIndex&0x4u);
117-
//pos = nbl_glsl_pseudoMul3x4with3x1(nodeGlobalTransforms.data[skeletonNode],mix(aabb.minVx,aabb.maxVx,mask));
118-
pos = nbl_glsl_pseudoMul3x4with3x1(skinningTransforms.data[dd.skinOffset+jointID],mix(aabb.minVx,aabb.maxVx,mask));
117+
pos = nbl_glsl_pseudoMul3x4with3x1(nodeGlobalTransforms.data[skeletonNode],mix(aabb.minVx,aabb.maxVx,mask));
119118

120119
outColor = pc.aabbColor.rgb;
121120
}

src/nbl/asset/interchange/CGLTFLoader.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -654,9 +654,9 @@ namespace nbl
654654
return bufferViewOffset + relativeAccessorOffset;
655655
}();
656656

657-
auto* inData = reinterpret_cast<core::matrix4SIMD*>(reinterpret_cast<uint8_t*>(cpuBuffer->getPointer()) + globalIBPOffset); //! glTF stores 4x4 IBP matrices
657+
auto* inData = reinterpret_cast<core::matrix4SIMD*>(reinterpret_cast<uint8_t*>(cpuBuffer->getPointer()) + globalIBPOffset); //! glTF stores 4x4 IBP column_major matrices
658658
for (uint32_t j=0u; j<jointCount; ++j)
659-
inverseBindPoseIt[j] = inData[j].extractSub3x4();
659+
inverseBindPoseIt[j] = core::transpose(inData[j]).extractSub3x4();
660660
}
661661
else
662662
std::fill_n(inverseBindPoseIt,jointCount,core::matrix3x4SIMD());
@@ -2365,9 +2365,7 @@ namespace nbl
23652365
for (uint32_t i = 0; i < matrixArray.size(); ++i)
23662366
*(tmpMatrix.pointer() + i) = matrixArray.at(i).get_double().value();
23672367

2368-
// TODO tmpMatrix (coulmn major) to row major (currentNode.matrix)
2369-
2370-
glTFnode.transformation.matrix = tmpMatrix.extractSub3x4();
2368+
glTFnode.transformation.matrix = core::transpose(tmpMatrix).extractSub3x4();
23712369
}
23722370
else
23732371
{

0 commit comments

Comments
 (0)