Conversation
Implementation Details - Added vertex data structures and shader logic for hardware skinning - Integrated bone and weight data extraction into the model loading process - Developed core components for bone interpolation and animation state management - Created helper functions for bone data population and matrix conversion - Implemented bone offset matrix normalization for proper vertex transformations Vertex Structure Updates - Extended ThreeDimension::Vertex with bone IDs and weights arrays - Support up to 4 bone influences per vertex (MAX_BONE_INFLUENCE) - Support up to 128 bones per mesh (MAX_BONES) - Added BoneInfo structure containing bone ID and offset matrix - Initialize bone IDs to -1 and weights to 0.0 by default Rendering Pipeline - Added bone IDs attribute at location 7 (ivec4) - Added bone weights attribute at location 8 (vec4) - Implemented skeletal data preservation during vertex quantization - Added finalBones array to vertex uniform buffer - Integrated with SkeletalAnimator component for runtime animation Issues - Skeletal animation loading is functional, but bone hierarchy display and mesh application are still in progress - Bone positions appear incorrect, resulting in abnormal poses
Implementation Details - Added vertex data structures and shader logic for hardware skinning - Integrated bone and weight data extraction into the model loading process - Developed core components for bone interpolation and animation state management - Created helper functions for bone data population and matrix conversion - Implemented bone offset matrix normalization for proper vertex transformations Vertex Structure Updates - Extended ThreeDimension::Vertex with bone IDs and weights arrays - Support up to 4 bone influences per vertex (MAX_BONE_INFLUENCE) - Support up to 128 bones per mesh (MAX_BONES) - Added BoneInfo structure containing bone ID and offset matrix - Initialize bone IDs to -1 and weights to 0.0 by default Rendering Pipeline - Added bone IDs attribute at location 7 (ivec4) - Added bone weights attribute at location 8 (vec4) - Implemented skeletal data preservation during vertex quantization - Added finalBones array to vertex uniform buffer - Integrated with SkeletalAnimator component for runtime animation Issues - Skeletal animation loading is functional, but bone hierarchy display and mesh application are still in progress - Bone positions appear incorrect, resulting in abnormal poses
Removed redundant GlobalInverseTransform multiplication. Keeping the formula as globalTransformation * offset ensures correct scaling and prevents mesh tearing, especially for FBX models.
…Engine into SkeletalAnimation # Conflicts: # Engine/shaders/glsl/3D.vert # Engine/source/BasicComponents/DynamicSprite.cpp # Engine/source/BasicComponents/SkeletalAnimator.cpp # Engine/source/ObjectManager.cpp # Engine/source/RenderManager.cpp
- Resolved the mesh explosion bug occurring during animation playback. - Fixed incorrect PreRotation transformations. - Note: Root Motion implementation is still a work in progress (WIP).
- Index caching for position/rotation/scale interpolation - Removed heavy string allocations by caching dummy node state - Reduced GetComponent and offset map lookups by passing encodeMatrix directly - Cleaned up unused variables and functions
- Implemented new skeletal animation demo scene with dynamic lighting effects - Replaced Physics3D debug meshes with ImGui line rendering
Implementation Details - Added vertex data structures and shader logic for hardware skinning - Integrated bone and weight data extraction into the model loading process - Developed core components for bone interpolation and animation state management - Created helper functions for bone data population and matrix conversion - Implemented bone offset matrix normalization for proper vertex transformations Vertex Structure Updates - Extended ThreeDimension::Vertex with bone IDs and weights arrays - Support up to 4 bone influences per vertex (MAX_BONE_INFLUENCE) - Support up to 128 bones per mesh (MAX_BONES) - Added BoneInfo structure containing bone ID and offset matrix - Initialize bone IDs to -1 and weights to 0.0 by default Rendering Pipeline - Added bone IDs attribute at location 7 (ivec4) - Added bone weights attribute at location 8 (vec4) - Implemented skeletal data preservation during vertex quantization - Added finalBones array to vertex uniform buffer - Integrated with SkeletalAnimator component for runtime animation Issues - Skeletal animation loading is functional, but bone hierarchy display and mesh application are still in progress - Bone positions appear incorrect, resulting in abnormal poses
Removed redundant GlobalInverseTransform multiplication. Keeping the formula as globalTransformation * offset ensures correct scaling and prevents mesh tearing, especially for FBX models.
Implementation Details - Added vertex data structures and shader logic for hardware skinning - Integrated bone and weight data extraction into the model loading process - Developed core components for bone interpolation and animation state management - Created helper functions for bone data population and matrix conversion - Implemented bone offset matrix normalization for proper vertex transformations Vertex Structure Updates - Extended ThreeDimension::Vertex with bone IDs and weights arrays - Support up to 4 bone influences per vertex (MAX_BONE_INFLUENCE) - Support up to 128 bones per mesh (MAX_BONES) - Added BoneInfo structure containing bone ID and offset matrix - Initialize bone IDs to -1 and weights to 0.0 by default Rendering Pipeline - Added bone IDs attribute at location 7 (ivec4) - Added bone weights attribute at location 8 (vec4) - Implemented skeletal data preservation during vertex quantization - Added finalBones array to vertex uniform buffer - Integrated with SkeletalAnimator component for runtime animation Issues - Skeletal animation loading is functional, but bone hierarchy display and mesh application are still in progress - Bone positions appear incorrect, resulting in abnormal poses
- Resolved the mesh explosion bug occurring during animation playback. - Fixed incorrect PreRotation transformations. - Note: Root Motion implementation is still a work in progress (WIP).
- Index caching for position/rotation/scale interpolation - Removed heavy string allocations by caching dummy node state - Reduced GetComponent and offset map lookups by passing encodeMatrix directly - Cleaned up unused variables and functions
- Implemented new skeletal animation demo scene with dynamic lighting effects - Replaced Physics3D debug meshes with ImGui line rendering
- Added finalBones array to shader uniform block and implemented skinning loop in 3D.slang. - Updated VKRenderManager to register boneIDs (loc 7) and weights (loc 8) attributes. - Wrapped shadow-related shader resources with #if defined(__hlsl__) to prevent validation errors on Vulkan. - Adjusted WorldToScreen calculation for Vulkan NDC to correctly orient ImGui debug lines.
…Engine into SkeletalAnimation # Conflicts: # Engine/source/ObjectManager.cpp # Engine/source/RenderManager.cpp
- Integrated skeletal animation skinning logic into Mesh Shaders (3D.slang, GBuffer.slang)
CubeBerry
requested changes
Apr 1, 2026
- Fixed an issue where specific mesh parts (ex:fingertips) would float in the air if they lacked animation tracks in the current clip. - Updated the logic to calculate final bone matrices using the rig's boneIDMap instead of relying solely on SkeletalBone animation channels. - This ensures all bones, including those without active animation data, correctly follow the skeletal hierarchy and offset transformations.
- Implemented dynamic root bone detection by traversing the skeleton hierarchy instead of relying on hardcoded name matching. - Added support for standard animation hierarchies (ex: glTF) by providing fallbacks for missing FBX-specific dummy nodes (_$AssimpFbx$_).
CubeBerry
approved these changes
Apr 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


SkeletalAnimator Component:
Animation State Machine:
Shader & Renderer Integration: