Re: Pelvis transformation during animation
"Nathan Martz" <[email protected]> Wed, 14 Nov 2007 16:14:45 -0800
| Newsgroups | gmane.games.devel.general |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --===============2058412916== Content-class: urn:content-classes:message Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C8271C.86D9C669" This is a multi-part message in MIME format. ------_=_NextPart_001_01C8271C.86D9C669 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable That's right. They have some controls in the rig that make that easier. We also only support rotation about Y (up) axis, but that's for reasons not directly related to how we do root motion. =20 -Nathan =20 -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of pontus birgersson Sent: Wednesday, November 14, 2007 4:12 PM To: [email protected] Subject: Re: [GD-General] Pelvis transformation during animation =20 Thanks for the quick reply! =20 This sounds very interesting; I'll be trying this out tomorrow. We actually created a tool for the artists just so they could do this extra translation and rotation separately, it never occurred to me that you could just add another joint above the pelvis in the hierarchy. So you just let them deal with the rotations and translations in their 3D software? =20 Regards, =20 Pontus Birgersson Shortfuse Entertainment =20 -------- =20 Date: Wed, 14 Nov 2007 15:57:04 -0800 From: "Nathan Martz" <[email protected]> Subject: Re: [GD-General] Pelvis transformation during animation To: [email protected] =20 It sounds like you are trying to both drive the character's game/logical position by movement of the root joint and also to use it to skin/deform the characters. I would suggest that you use different joints for each purpose. In our engine, we have a joint that we call the delta-trans that indicates the character's position and rotation deltas for each frame. That has a child that we call the "Root" joint which is the basemost deforming joint. At munge time (after export but before the game gets it) we extract data from the delta-trans and then strip that joint out of the skeleton. So, in this kind of situation, something like a backflip might simply translate the delta-trans backwards a bit while the root and other joints are doing all manner of spins and translation. I believe that's pretty much how most people do root motion, and a Google search for "root motion" will probably turn up some good info. =20 ________________________________ Express yourself instantly with MSN Messenger! MSN Messenger <http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/>=20 ------_=_NextPart_001_01C8271C.86D9C669 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" = xmlns:o=3D"urn:schemas-microsoft-com:office:office" = xmlns:w=3D"urn:schemas-microsoft-com:office:word" = xmlns=3D"http://www.w3.org/TR/REC-html40"> <head> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = charset=3Dus-ascii"> <meta name=3DProgId content=3DWord.Document> <meta name=3DGenerator content=3D"Microsoft Word 10"> <meta name=3DOriginator content=3D"Microsoft Word 10"> <link rel=3DFile-List href=3D"cid:[email protected]"> <link rel=3DEdit-Time-Data href=3D"cid:[email protected]"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:DoNotRelyOnCSS/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:SpellingState>Clean</w:SpellingState> <w:GrammarState>Clean</w:GrammarState> <w:DocumentKind>DocumentEmail</w:DocumentKind> <w:EnvelopeVis/> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627421319 -2147483648 8 0 66047 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:blue; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p.NormalWeb1, li.NormalWeb1, div.NormalWeb1 {mso-style-name:"Normal \(Web\)1"; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} span.EmailStyle19 {mso-style-type:personal-reply; mso-style-noshow:yes; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; font-family:Arial; mso-ascii-font-family:Arial; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; color:navy;} span.SpellE {mso-style-name:""; mso-spl-e:yes;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */=20 table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--> </head> <body lang=3DEN-US link=3Dblue vlink=3Dblue style=3D'tab-interval:.5in'> <div class=3DSection1> <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span = style=3D'font-size: 10.0pt;font-family:Arial;color:navy'>That’s right. They have some = controls in the rig that make that easier. We also only support rotation about Y = (up) axis, but that’s for reasons not directly related to how we do root = motion.<o:p></o:p></span></font></p> <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span = style=3D'font-size: 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span = style=3D'font-size: 10.0pt;font-family:Arial;color:navy'>-Nathan<o:p></o:p></span></font></p>= <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span = style=3D'font-size: 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> <p class=3DMsoNormal style=3D'margin-left:.5in'><font size=3D2 = face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'>-----Original = Message-----<br> <b><span style=3D'font-weight:bold'>From:</span></b> [email protected] [mailto:[email protected]] <b><span style=3D'font-weight:bold'>On Behalf Of </span></b>pontus birgersson<br> <b><span style=3D'font-weight:bold'>Sent:</span></b> Wednesday, November = 14, 2007 4:12 PM<br> <b><span style=3D'font-weight:bold'>To:</span></b> = [email protected]<br> <b><span style=3D'font-weight:bold'>Subject:</span></b> Re: [GD-General] = Pelvis transformation during animation</span></font></p> <p class=3DMsoNormal style=3D'margin-left:.5in'><font size=3D3 = face=3D"Times New Roman"><span style=3D'font-size:12.0pt'><o:p> </o:p></span></font></p> <p class=3DMsoNormal style=3D'margin-left:.5in'><font size=3D3 = face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>Thanks for the quick = reply!</span></font><font size=3D2 face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'><br> <o:p></o:p></span></font></p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D3 color=3D"#444444" face=3D"Times New Roman"><span lang=3DEN-GB = style=3D'font-size:12.0pt; color:#444444;mso-ansi-language:EN-GB'>This sounds very interesting; = I’ll be trying this out tomorrow. We actually created a tool for the artists = just so they could do this extra translation and rotation separately, it never = occurred to me that you could just add another joint above the pelvis in the = hierarchy. So you just let them deal with the rotations and translations in their = 3D software?</span></font><font size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt; font-family:Tahoma'><o:p></o:p></span></font></p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt;font-family:Tahoma'> </span></font><font color=3D"#444444"><span lang=3DEN-GB = style=3D'color:#444444;mso-ansi-language:EN-GB'><o:p></o:p></span></font>= </p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D3 color=3D"#444444" face=3D"Times New Roman"><span lang=3DEN-GB = style=3D'font-size:12.0pt; color:#444444;mso-ansi-language:EN-GB'>Regards,</span></font><font = size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt;font-family:Tahoma'><o:p></o:p></span></font></= p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt;font-family:Tahoma'> </span></font><font color=3D"#444444"><span lang=3DEN-GB = style=3D'color:#444444;mso-ansi-language:EN-GB'><o:p></o:p></span></font>= </p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D1 color=3D"#444444" face=3DVerdana><st1:country-region = u1:st=3D"on"><st1:place u1:st=3D"on"><span lang=3DEN-GB = style=3D'font-size:8.5pt;font-family:Verdana;color:#444444;mso-ansi-langu= age: EN-GB'>Pontus</st1:place></st1:country-region> = Birgersson</span></font><font size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt;font-family:Tahoma'><o:p></o:p></span></font></= p> <p class=3DNormalWeb1 style=3D'margin-left:.5in;background:white'><font = size=3D1 color=3D"#444444" face=3DVerdana><span lang=3DEN-GB = style=3D'font-size:8.5pt; font-family:Verdana;color:#444444;mso-ansi-language:EN-GB'>Shortfuse Entertainment</span></font><font size=3D2 face=3DTahoma><span = style=3D'font-size: 10.0pt;font-family:Tahoma'><o:p></o:p></span></font></p> <p class=3DNormalWeb1 style=3D'margin-left:.5in'><font size=3D2 = face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'> <br> --------<br> <br> Date: Wed, 14 Nov 2007 15:57:04 -0800<br> From: "Nathan Martz" <[email protected]><br> Subject: Re: [GD-General] Pelvis transformation during animation<br> To: <a = href=3D"mailto:[email protected]">gamedevlists-g= [email protected]</a><br> <br> It sounds like you are trying to both drive the character's = game/logical<br> position by movement of the root joint and also to use it to = skin/deform<br> the characters. I would suggest that you use different joints for = each<br> purpose. In our engine, we have a joint that we call the delta-trans<br> that indicates the character's position and rotation deltas for each<br> frame. That has a child that we call the "Root" joint which is = the<br> basemost deforming joint. At munge time (after export but before the<br> game gets it) we extract data from the delta-trans and then strip = that<br> joint out of the skeleton. So, in this kind of situation, something = like<br> a backflip might simply translate the delta-trans backwards a bit = while<br> the root and other joints are doing all manner of spins and = translation.<br> I believe that's pretty much how most people do root motion, and a<br> Google search for "root motion" will probably turn up some = good info.<o:p></o:p></span></font></p> <p class=3DMsoNormal style=3D'margin-left:.5in'><font size=3D2 = face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'><o:p> </o:p></span></f= ont></p> <div class=3DMsoNormal align=3Dcenter = style=3D'margin-left:.5in;text-align:center'><font size=3D2 face=3DTahoma><span = style=3D'font-size:10.0pt;font-family:Tahoma'> <hr size=3D2 width=3D"100%" align=3Dcenter> </span></font></div> <p class=3DMsoNormal style=3D'margin-left:.5in'><font size=3D2 = face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'>Express yourself instantly = with MSN Messenger! <a = href=3D"http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/" target=3D"_new">MSN Messenger</a><o:p></o:p></span></font></p> </div> </body> </html> =00 ------_=_NextPart_001_01C8271C.86D9C669-- --===============2058412916== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ --===============2058412916== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Gamedevlists-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/gamedevlists-general Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=557 --===============2058412916==--