Model normals not updated every model frame

Bugs that have been investigated and resolved somehow.

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.
Post Reply
User avatar
Nash
 
 
Posts: 17439
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Model normals not updated every model frame

Post by Nash »

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.
User avatar
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

Post by Marisa the Magician »

dpJudas
 
 
Posts: 3040
Joined: Sat May 28, 2016 1:01 pm

Re: Model normals not updated every model frame

Post by dpJudas »

I can't remember what I pushed back then. But whatever it was, seems it broke again (or was never fully repaired).
User avatar
Nash
 
 
Posts: 17439
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Re: Model normals not updated every model frame

Post by Nash »




@MK: not sure if what you reported is the same problem but take a look at these. Door closed and door open. Notice that in the opened one, the normals of the swinging part of the door is completely wrong.
User avatar
Nash
 
 
Posts: 17439
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Re: Model normals not updated every model frame

Post by Nash »

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.
Last edited by Nash on Thu May 16, 2019 5:28 pm, edited 1 time in total.
User avatar
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

Post by Marisa the Magician »

Oh...
Post Reply

Return to “Closed Bugs [GZDoom]”