From 2f77c5b06086c54c641563c28cc1dec443d141b6 Mon Sep 17 00:00:00 2001 From: QuantumCoderQC Date: Mon, 18 Oct 2021 19:53:23 +0200 Subject: [PATCH] modify normals calculation in skinning for morphing --- blender/arm/material/make_skin.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/blender/arm/material/make_skin.py b/blender/arm/material/make_skin.py index aaaff3ce..1d4244fd 100644 --- a/blender/arm/material/make_skin.py +++ b/blender/arm/material/make_skin.py @@ -22,6 +22,9 @@ def skin_pos(vert): vert.write_attrib('spos.xyz /= posUnpack;') -def skin_nor(vert, prep): +def skin_nor(vert, is_morph, prep): rpdat = arm.utils.get_rp() - vert.write_attrib(prep + 'wnormal = normalize(N * (vec3(nor.xy, pos.w) + 2.0 * cross(skinA.xyz, cross(skinA.xyz, vec3(nor.xy, pos.w)) + skinA.w * vec3(nor.xy, pos.w))));') + if(is_morph): + vert.write_attrib(prep + 'wnormal = normalize(N * morphNor + 2.0 * cross(skinA.xyz, cross(skinA.xyz, morphNor) + skinA.w * morphNor)));') + else: + vert.write_attrib(prep + 'wnormal = normalize(N * (vec3(nor.xy, pos.w) + 2.0 * cross(skinA.xyz, cross(skinA.xyz, vec3(nor.xy, pos.w)) + skinA.w * vec3(nor.xy, pos.w))));')