Skip to content

feat(GLTFImporter): add extensions & animations support#3513

Open
daker wants to merge 11 commits into
Kitware:masterfrom
daker:gltf-anim-ext
Open

feat(GLTFImporter): add extensions & animations support#3513
daker wants to merge 11 commits into
Kitware:masterfrom
daker:gltf-anim-ext

Conversation

@daker

@daker daker commented May 19, 2026

Copy link
Copy Markdown
Collaborator

Context

Fixes #3501

  1. GLTF Extensions:

    • KHR_materials_pbrSpecularGlossiness
    • KHR_materials_clearcoat
    • KHR_materials_anisotropy
    • KHR_materials_emissive_strength
    • KHR_materials_transmission
    • KHR_materials_volume
    • KHR_materials_iridescence
    • KHR_materials_sheen
    • KHR_materials_diffuse_transmission
    • KHR_materials_dispersion
  2. New animation framework in core/data model

    • Introduced AnimationScene, AnimationMixer, AnimationCue, AnimationClip, AnimationTrack, Armature, plus ArmatureSource.
  3. PBR debugging

    • Added PBR debug channels to Mapper.

Results

Enregistrement.2026-05-20.012513.mp4

Changes

  • Documentation and TypeScript definitions were updated to match those changes

PR and Code Checklist

  • semantic-release commit messages
  • Run npm run reformat to have correctly formatted code

Testing

  • This change adds or fixes unit tests
  • Tested environment:
    • vtk.js:
    • OS:
    • Browser:

@daker daker force-pushed the gltf-anim-ext branch 4 times, most recently from b446b96 to bf42e55 Compare May 20, 2026 12:14
@daker

daker commented May 25, 2026

Copy link
Copy Markdown
Collaborator Author

@sankhesh mind also looking at this PR when you have time ?

@daker

daker commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator Author

@sankhesh any chance to get a review ?

daker added 3 commits July 1, 2026 16:55
- traverse armature bones parents-first so out of order glTF joints
  compute correct world matrices
- insert placeholder bones for null joints to keep bone indices aligned
  with JOINTS_0 and the inverse bind matrices accessor
- expose animation clips from all skins instead of only the first
- dequantize normalized integer accessors (colors, weights, quantized
  animation outputs) per spec
- honor textureInfo.texCoord as fallback with KHR_texture_transform and
  stop hijacking the mesh active tcoords for emissive UVs
- default KHR_materials_ior to 1.5 per spec (also for the reset path)
- position punctual lights with the node world matrix and deduplicate
  light map keys so unnamed lights are not dropped
- decompose node.matrix into rest TRS for node transform animations
…root skins

- drop the intensity / PI conversion: the PBR light loop already follows
  the Khronos reference (radiance = color * intensity, 1/PI lives in the
  lambertian BRDF), so the division dimmed glTF lights by PI
- honor an explicit light intensity of 0
- compute the skeleton root transform per root joint and warn when root
  joints require different ancestor transforms
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Support weight and joint animations

1 participant