{"id":3491,"date":"2016-11-20T20:52:51","date_gmt":"2016-11-20T20:52:51","guid":{"rendered":"http:\/\/www.holyfingers.co.uk\/main\/?p=3491"},"modified":"2016-11-24T11:00:28","modified_gmt":"2016-11-24T11:00:28","slug":"development-diary-22-character-development","status":"publish","type":"post","link":"https:\/\/www.holyfingers.co.uk\/main\/blog\/2016\/11\/20\/development-diary-22-character-development\/","title":{"rendered":"Development Diary #22: Character development&#8230;"},"content":{"rendered":"<p style=\"text-align: justify;\">It&#8217;s been a busy month; finalizing the design for the main character, modelling, rigging, making a start on the animation and figuring out the best approach for getting all that into <em>Unity<\/em>&#8230;<br \/>\n<!--more--><\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #dadada;\"><del><strong>3rd Oct. \u2013 Project Start<\/strong><\/del><\/span><\/li>\n<li><span style=\"color: #dadada;\"><del><strong>7th Oct. \u2013 Design Locked:<\/strong>&nbsp;&nbsp;<em>Story\/Puzzle Dependency Chart finished<\/em><\/del><\/span><\/li>\n<li><span style=\"color: #dadada;\"><del><strong>7th Nov. \u2013 Environment Blocked:<\/strong>&nbsp;&nbsp;<em>Environment blocked in with temp. geometry, walkable areas defined and navigable with character stand\u00ad-in, cameras placed.<\/em><\/del><\/span><\/li>\n<li><span style=\"color: #dadada;\"><del><strong>21st Nov. \u2013 Character Locked:<\/strong>&nbsp;&nbsp;<em>Character design, modelling and walk animation finished, nav-\u00adagent set up in environment.<\/em><\/del><\/span><\/li>\n<li><strong>19th Dec. \u2013 Environment Locked:<\/strong>\u00ad &nbsp;<em>Environment geometry detailed and lit.<\/em><\/li>\n<li><strong>9th Jan. \u2013 Audio Locked: &nbsp;<\/strong><em>Spot FX and ambiance\/music finished and implemented.<\/em><\/li>\n<li><strong>20th Jan. \u2013 Game Locked:<\/strong>&nbsp;&nbsp;<em>UI and menus implemented, environmental interactions finalized, \u00adtesting.<\/em><\/li>\n<li><strong>31st Jan. \u2013 Final Delivery:<\/strong>&nbsp;&nbsp;<em>Final testing, bug fixing and delivery.<\/em><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">For the most part I&#8217;m using&nbsp;Softimage&#8217;s built in biped rig, it&#8217;s pretty old now&nbsp;and has numerous weird issues and bugs but I&#8217;ve been using it for ages and I don&#8217;t really have time to build a new one from scratch or to start learning a whole new setup. I have augmented it slightly though, adding in the <a href=\"http:\/\/artoftoryanse.tumblr.com\/post\/144614889057\/had-second-thoughts-about-rigging-the-main\">simple facial system I started a while ago<\/a>, and a few other extra controls for adjusting the position of the glasses, skirt and the bottom of this character\u2019s cardigan.<\/p>\n<p style=\"text-align: justify;\">ngg_shortcode_0_placeholder<\/p>\n<p style=\"text-align: justify;\">In terms of organization in <em>Unity<\/em>, I&#8217;m importing a base model with no animation and then separate models for each new section, using the &#8220;copy from other avatar&#8221;<em>&nbsp;<\/em>option when importing. This approach will require more specific, custom animation, but I&#8217;m hoping to avoid some other issues that I&#8217;ve encountered before using a controller\/velocity setup, mainly difficulty syncing up animation between different objects and positioning inaccuracy. I also find it easier to organize my 3d scene when I can limit each clip&nbsp;to a few hundred frames as opposed to having just one model with thousands.<\/p>\n<p style=\"text-align: justify;\">There were a number of things that caught me out once I actually started trying to import animation. Firstly, any extra bones or nulls or transforms you add outside the <a href=\"https:\/\/blogs.unity3d.com\/2014\/05\/26\/mecanim-humanoids\/\">standard humanoid&nbsp;hierarchy<\/a> will be turned off by default in the model&#8217;s transform mask settings:<\/p>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/screenshots\/Transform_Mask.png\" alt=\"Transform_Mask\"><\/p>\n<p style=\"text-align: justify;\">This doesn&#8217;t seem to trigger any error messages on import so if, like me, you&#8217;re scratching your head wondering why certain bits aren&#8217;t animating, it might be worth checking here.&nbsp;<\/p>\n<p style=\"text-align: justify;\">Other issues do show warnings, I kept getting &#8220;<em><strong>&#8220;filename&#8221; has translation animation that will be discarded<\/strong>&#8221; <\/em>alongside missing &#8220;baked in&#8221; root-motion or a&nbsp;crumpled up character in the animation preview window. <em>Unity&#8217;s<\/em> humanoid system doesn&#8217;t support translation on any bones except the one designated as Hips in the avatar (in my case the transform itself is actually named <em>Upperbody<\/em>), when you&#8217;re baking your animation make sure only this bone includes translation frames.<\/p>\n<p style=\"text-align: justify;\">The automap process expects a certain hierarchy and a certain number of bones, extra feet bones show a &#8220;<em><strong>&#8220;filename&#8221; is inbetween humanoid transforms and has rotation animation that will be discarded<\/strong>&#8221; <\/em>warning,&nbsp;again, leaving them out when baking seems to do the trick.&nbsp;<\/p>\n<p style=\"text-align: justify;\">It&#8217;s worth noting that on various attempts at importing, these warnings weren&#8217;t <em>always<\/em> accompanied with any other issues, removing the offending frames stopped the warnings popping up and that was that. On a number of occasions the weird crumpled preview remained but the character actually animated fine in scene, sometimes not! To be absolutely sure I ended up having to delete and re-import models; something to try if all else fails.&nbsp;<\/p>\n<p style=\"text-align: justify;\">A more straightforward&nbsp;show-stopper was the &#8220;<strong><em>Imported file &#8216;filename&#8217; conversion failed: Transform &#8216;UpperBody&#8217; for human bone &#8216;Hips&#8217; not found.<\/em><\/strong>&#8221; message. This ended up being down to naming issues, if you&#8217;re using &#8220;copy from other avatar&#8221; when importing you need to make sure your hierarchy names all match up; I was working with duplicate models in Softimage and certain elements were automatically being assigned numerical suffixes when copy\/pasting without me realizing, renaming them fixed the issue. I found the easiest way to check was to drag both the base model and the animated model into a <em>Unity<\/em> scene and methodically click through the hierarchies to see what was different. It isn&#8217;t always easy to find where the discrepancy is, especially if your using groups or selection sets when you&#8217;re exporting; parent transforms seem to magically appear\/disappear sometimes during the import\/export and compression\/optimization process.<\/p>\n<p style=\"text-align: justify;\">Another thing to be aware of when testing animation out in scene is the <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/AnimatorCullingMode.html\">Culling Mode<\/a>.&nbsp;It&#8217;s set on the animator component itself and is an optimization that stops objects being animated when they aren&#8217;t visible to&nbsp;the camera.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/screenshots\/Culling_Mode.png\" alt=\"Culling_Mode\"><\/p>\n<p style=\"text-align: justify;\">When something isn&#8217;t working for me, my first course of action is to put it in an empty scene and slowly add other elements back in until I can work out what&#8217;s causing the issue. Of course, every time I put the animated object in this instance into an empty scene to test, there were no objects in between it and the camera, so the animation wasn&#8217;t culled and worked fine! It&#8217;s a simple thing to fix but only if you know what that setting actually does; if you have mysteriously disappearing\/unresponsive animated objects this could be the problem. &nbsp; &nbsp; &nbsp;<\/p>\n<p style=\"text-align: justify;\">Finally,&nbsp;another issue I repeatedly ran into was <em>Generic<\/em> animation not playing at all when triggered via an animation controller. In my case this turned out to be root node related:<\/p>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/screenshots\/Root_Motion.png\" alt=\"Root_Motion\"><\/p>\n<p style=\"text-align: justify;\">Try a few different options and see if it helps, again, this issue seemed to appear intermittently, often with very simple animations like a rotation transform on a door.<\/p>\n<p style=\"text-align: justify;\">So it took a while, but I did eventually get a small section of animation into Unity, complete with separate object animation all syncing up (the door and the umbrella)&#8230;<\/p>\n<p><a href=\"https:\/\/imgur.com\/eFz8yC4\"><img decoding=\"async\" title=\"source: imgur.com\" src=\"https:\/\/i.imgur.com\/eFz8yC4.gif\"><\/a><\/p>\n<p style=\"text-align: justify;\">I&#8217;m now roughly halfway through the allocated development schedule and, increasingly, jobs are needing to be done in parallel, I&#8217;ll need to add more detail to the environment to make sure the character animation matches up, timings for animations have a knock on effect on interactions and puzzles etc. Also attempting a little bit of marketing\/PR which takes up a surprising amount of time! The next milestone is near the end of December with the environment being finalized, I&#8217;ll hopefully be updating in between then and now&nbsp;though with some screenshots and maybe a short teaser trailer if I can manage it. &nbsp;&nbsp;<\/p>\n<p style=\"text-align: justify;\">As usual, I\u2019ll be floating around on <a href=\"http:\/\/twitter.com\/holyfingers\">Twitter<\/a>,&nbsp;<a href=\"http:\/\/artoftoryanse.tumblr.com\/\">Tumblr<\/a>&nbsp;and <a href=\"https:\/\/www.facebook.com\/pages\/Toryans%C3%A9\/139100656265397\">Facebook<\/a>&nbsp;throughout development, if you fancy following along. If you just want to hear about the big stuff, release dates etc. you can sign up to the Arcto Games <a href=\"https:\/\/tinyletter.com\/arctogames\">Tinyletter<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><em>Reel is being developed with the support of <a href=\"http:\/\/www.northernirelandscreen.co.uk\">Northern Ireland Screen<\/a> as part of their <a href=\"http:\/\/www.northernirelandscreen.co.uk\/news\/8258\/exp-project-decision.aspx\">eXP Project<\/a>.<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s been a busy month; finalizing the design for the main character, modelling, rigging, making a start on the animation and figuring out the best approach for getting all that into Unity&#8230;<\/p>\n","protected":false},"author":2,"featured_media":3493,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[55],"tags":[43,44,63,64,26,100,101,18,76,57],"class_list":["post-3491","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-development","tag-3d","tag-animation","tag-character","tag-dev-diary","tag-modelling","tag-reel","tag-rigging","tag-softimage","tag-toryanse","tag-unity"],"_links":{"self":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/3491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/comments?post=3491"}],"version-history":[{"count":56,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/3491\/revisions"}],"predecessor-version":[{"id":3562,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/3491\/revisions\/3562"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/media\/3493"}],"wp:attachment":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/media?parent=3491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/categories?post=3491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/tags?post=3491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}