Re: [Algorithms] Normal map blending for creases in geometry
Brought to you by:
vexxed72
From: Tom F. <tom...@ee...> - 2006-07-07 16:34:08
|
As with most things to do with complex animation, I recommend just = having it as an artist-animatable value. Then they can do whatever they like with = it. If you create a dummy bone (has no mesh vertex influence) and drive t = from e.g. the W-coordinate of the orientation quaternion, then it will be = blended and played back and so on just like a normal bone. Artists can also have = it driven by expressions in Max or Maya, so they can set it up so that the forehead crease stuff happens automagically (where desired). This doesn't "solve" the question, but it does make it somebody else's problem :-) TomF. > -----Original Message----- > From: gda...@li...=20 > [mailto:gda...@li...] On=20 > Behalf Of Daniel Yeung > Sent: 07 July 2006 07:51 > To: Game Development Algorithms > Subject: Re: [Algorithms] Normal map blending for creases in geometry >=20 >=20 > Firstly, sorry if I made myself unclear... linear=20 > interpolation between > 2 normal maps is what I will be doing, the question was actually about > methods of automatically driving the blending system... >=20 >=20 > Alex Walters wrote=20 > "If your 'eyebrow raising' is an interpolation between 2=20 > animations then > you can use the t you are already using for blending between the two > keyframes to drive the texture blend, this would work over the whole > texture, not just the local area of the eye" >=20 >=20 > Unfortunately you cant really do this, because "t", your interpolation > between animation keyframes doesn't necessarily correspond to=20 > the amount > of movement that is being applied to a bone. > For example, you could have an animation raising the eyebrow=20 > all the way > up, and an animation raising the eyebrow only half-way. In both > animations, "t" is still just a linear interpolation between=20 > 0.0 -> 1.0. > Whereas we only want to blend the normal map based on how far the bone > has moved as opposed to how far we are through the animation... >=20 > One method I was considering was storing information on two poses.... > one with the character in the relaxed position (legs/arms=20 > outstretched, > face relaxed), and the second with the character in the most creased > position (legs/arms completely bent, face scrunched), and then looking > at each bone to find out how far I am between these=20 > extremes... however > this raises many many issues, such as bones that have many degrees of > freedom like shoulders... >=20 >=20 >=20 >=20 > -----Original Message----- > From: gda...@li... > [mailto:gda...@li...] On Behalf Of > Alex Walters > Sent: 07 July 2006 15:32 > To: Game Development Algorithms > Subject: Re: [Algorithms] Normal map blending for creases in geometry >=20 >=20 > If your 'eyebrow raising' is an interpolation between 2=20 > animations then > you can use the t you are already using for blending between the two > keyframes to drive the texture blend, this would work over the whole > texture, not just the local area of the eye.=20 >=20 > To make it more convincing the t could be then multiplied per=20 > vertex by > the 'eyebrow' bone influence (assuming range of 0-1 for the bone > influence parameter) this might make the texture change local=20 > enough to > affect only the vertices in and around the eyebrow and forehead. This > would require an animation to include some 'crease' parameter/spline. >=20 > If a vertex is weighted 50% by the eyebrow bone and 50% by the bone > controling head movement and you are animating between a frame with a > crease value of 0 and a crease value of 0.75 (not completely creased). > Then the value of t would be >=20 > OVERALL_T =3D ANIM_KEYFRAME_T * VERTEX_WEIGHT[BROW_BONE] > CREASE_T =3D ANIM_1_CREASE_VAL + OVERALL_T * (ANIM_2_CREASE_VAL - > ANIM_1_CREASE_VAL) >=20 > Then use CREASE_T to interpolate between the 2 textures. If you think > about a vertex high up on the forehead that does not receive a big > influence from the brow bone, then the overall t would be=20 > small, and the > skin would be smoother than lower down on the forehead where it would > receive more influence. >=20 > If you are moving bones explicitly rather than just a straignt interp > between predefined animations, or you don't want to make the=20 > artists add > the 'desired crease value' to the animation data, then you could > calculate the value of t of the vertex based on the distance=20 > moved from > its reference position. You would use this instead of=20 > ANIM_KEYFRAME_T in > the above equation.=20 >=20 > If you don't know the total distance that the vertex could=20 > end up moving > then you could use a log of the distance moved, so that the value of t > produced increases rapidly initially and then the influence of further > movement decreases so you never quite reach 1. >=20 > It made some sense to me at least while I was writing it! >=20 > Al > =20 >=20 > -----Original Message----- > From: gda...@li... > [mailto:gda...@li...] On Behalf Of > Willem de Boer > Sent: 07 July 2006 15:05 > To: Game Development Algorithms > Subject: Re: [Algorithms] Normal map blending for creases in geometry >=20 > The simplest most straightforward way I can think of is by=20 > doing a LERP > between the uncreased >=20 > map and the creased map. So, letting N_u, and N_c denote=20 > normals sampled > from the same places >=20 > in the uncreased and creased normal map versions, respectively, we > calculate an output normal, >=20 > =20 >=20 > N_o(t) =3D (1-t)*N_u + t*N_c, >=20 > =20 >=20 > where t is a time-value, in the range [0,1]. This t ofcourse=20 > depends on > the 'properties' of your >=20 > vertices, as you state "the associated vertices have their=20 > interpolation > value updated to blending toward the creased version of the=20 > normal map". >=20 > =20 >=20 > Also, t is vertex-specific. So, if you know how long it will take to > raise an eyebrow, for a vertex, >=20 > this value t can then be mapped to [0,1] based upon the state of the > vertex-blend (which should >=20 > be linear). >=20 > --- > Willem H. de Boer > http://research.microsoft.com/~wdeboer >=20 > "Rio de Janeiro - That's a person", Jade Goody=20 >=20 > ________________________________ >=20 > From: gda...@li... > [mailto:gda...@li...] On Behalf Of > Daniel Yeung > Sent: 07 July 2006 14:38 > To: Game Development Algorithms > Subject: [Algorithms] Normal map blending for creases in geometry >=20 > =20 >=20 > Hello, >=20 > =20 >=20 > I was wondering if anyone has experience performing normal=20 > map blending > to simulate creases in character geometry, i.e, blending between an > un-creased version of a normal map and a creased version.=20 >=20 > The main area I am interested in, is how to automatically drive the > blending interpolation such that it done based upon the properties of > the character... for example, when the characters eye brows raise up, > the associated vertices have their interpolation value updated to > blending toward the creased version of the normal map, hence the frown > lines will smoothly fade in on the forehead. (the same effect in Half > Life 2 - Episode 1, on the characters faces). >=20 > =20 >=20 > Any information on previous experiences with this type of=20 > problem would > be much appreciated. >=20 > =20 >=20 > Daniel >=20 >=20 > ****************** > This e-mail has been sent from Imagination Technologies Limited. > PowerVR, Metagence, Ensigma and PURE Digital are divisions > of Imagination Technologies Limited. >=20 > The information contained in this e-mail, including any attachment, > is confidential and may be legally privileged. It is intended solely > for the addressee(s) and access to this e-mail by anyone else is > unauthorised. If you are not the intended recipient, any disclosure, > copying or distribution or use of the information contained in this=20 > e-mail, is prohibited and may be unlawful. If you have received this > e-mail in error, please notify the sender by return e-mail and then > delete it from your system. >=20 > Internet communications cannot be guaranteed to be secure, > error or virus-free. The sender does not accept liability for any > errors > or omissions which arise as a result. >=20 > Any views expressed in this message are those of the author, except > where the author specifies and, with authority, states them to be the > views of Imagination Technologies Limited. >=20 >=20 > Using Tomcat but need to do more? Need to support web services, > security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057& dat=3D121642 _______________________________________________ GDAlgorithms-list mailing list GDA...@li... https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=3D6188 Using Tomcat but need to do more? Need to support web services, = security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache = Geronimo http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat=3D= 121642 _______________________________________________ GDAlgorithms-list mailing list GDA...@li... https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=3D6188 |