Test file sent via PM to dpJudas.
Steps to reproduce:
Just walk up to a door and press +use to open it. The doors are actually Actors with an animated model (2 frames). Using gl_ssao_debug 4, you can clearly see that the model normals are only correct for its initial frame - as the model animates, the normals aren't updated.
Note that the model only has 2 frames - opened and closed. Interpolation is taken advantage of here to make the door look like it's opening and closing smoothly. If you disable model interpolation (gl_interpolate_model_frames 0) you can see the true nature of the model animation. :) I am only mentioning this detail because if this ticket were to be fixed, the model normal recalculation would have to take interpolation into account.
Same in OpenGL and Vulkan.
Model normals not updated every model frame
Moderator: GZDoom Developers
Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
- Marisa the Magician
- Posts: 3886
- Joined: Fri Feb 08, 2008 9:15 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): (btw I use) Arch
- Graphics Processor: nVidia with Vulkan support
- Location: Vigo, Galicia
- Contact:
Re: Model normals not updated every model frame
I can't remember what I pushed back then. But whatever it was, seems it broke again (or was never fully repaired).
Re: Model normals not updated every model frame
Conclusion: this is a fault of the Blender MD3 exporter I'm using. It seems that normals in an animated MD3 has to be recalculated per-frame (???????????) and the exporter currently only writes the correct normals for the first frame.
I was wrong. It's not the exporter's fault. Here's the real cause of this problem:
I parented the door mesh to the door bone without an Armature modifier (just plain object parenting) - this will NOT work because even though it LOOKS like your animation is working, Blender doesn't really "see" the transform, therefore you won't get the correct normals for every frame.
I fixed this by properly parenting the door mesh to the bone with an Armature modifier, be sure it had the correct weight painting (it's just one bone, basically select the entire mesh and give every vertex a weight of 1.0), and now the normals are exported correctly every frame.
Can be closed I suppose.
I was wrong. It's not the exporter's fault. Here's the real cause of this problem:
I parented the door mesh to the door bone without an Armature modifier (just plain object parenting) - this will NOT work because even though it LOOKS like your animation is working, Blender doesn't really "see" the transform, therefore you won't get the correct normals for every frame.
I fixed this by properly parenting the door mesh to the bone with an Armature modifier, be sure it had the correct weight painting (it's just one bone, basically select the entire mesh and give every vertex a weight of 1.0), and now the normals are exported correctly every frame.
Can be closed I suppose.
Last edited by Nash on Thu May 16, 2019 5:28 pm, edited 1 time in total.
- Marisa the Magician
- Posts: 3886
- Joined: Fri Feb 08, 2008 9:15 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): (btw I use) Arch
- Graphics Processor: nVidia with Vulkan support
- Location: Vigo, Galicia
- Contact: