{"id":10417,"date":"2026-03-30T16:10:17","date_gmt":"2026-03-30T15:10:17","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=10417"},"modified":"2026-03-31T12:44:21","modified_gmt":"2026-03-31T11:44:21","slug":"unity-rotation-fix","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/unity-rotation-fix\/","title":{"rendered":"Unity FBX Model Import Rotation Fix"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a0709c01cb87\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a0709c01cb87\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/codex\/unity-rotation-fix\/#description\" >Description<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/unity-rotation-fix\/#auto-rotation\" >Auto-Rotation<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/unity-rotation-fix\/#timestamps\" >Timestamps<\/a><\/li><\/ul><\/nav><\/div>\n<div style=\"background-color: black; position: relative; padding-bottom: 56.25%; padding-top: 25px; height: 0; overflow: hidden; max-width: 100%;\"><center><iframe style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" src=\"https:\/\/www.youtube.com\/embed\/wKMgYbaiWVo?rel=0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/div>\n<h3><span class=\"ez-toc-section\" id=\"description\"><\/span>Description<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As a consequence of long-standing <a href=\"https:\/\/www.katsbits.com\/codex\/fbx-unity-rotation\/\">fudgy handling of FBX files<\/a> exported from Blender 3D, Unity employs a system that subjects models to an &#8216;<strong>auto-corrective rotation fix<\/strong>&#8216; upon import into the editor. This often results in thumbnails appearing correctly but meshes not, or meshes displaying correctly but thumbnails not, the upshot being that additional editing is often necessary in-editor. However, there is a fix for this that involves pre-rotating assets in Blender, and then &#8216;baking&#8217; the additional adjustments Unity makes after import. Doing this ensures both thumbnail and mesh are properly orientated and usable.<\/p>\n<p><b>Duration<\/b>: total c. 5 mins (00:05:00).<br \/>\n<b>Info<\/b>: 1080p.<br \/>\n<b>Suitability<\/b>: Beginner+.<br \/>\n<b>Source<\/b>: n\/a.<br \/>\n<b>Product ID<\/b>: n\/a.<\/p>\n<blockquote><p><strong>Design note<\/strong>: some additional considerations when fixing Unity&#8217;s auto-rotation feature;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"auto-rotation\"><\/span>Auto-Rotation<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>The auto-rotation fix Unity employs is a heuristic attempt to fix cardinal orientation issues typically present in imported FBX models. This happens because there&#8217;s a core <strong>Up<\/strong>\/<strong>Forward<\/strong> axes mismatch between Unity and whatever 3D software was used to make the mesh. Unity tries to correct this disparity by, depending on how &#8216;wrong&#8217; it determines the model to be, automatically applying a rotational post-process to one or more axes of a model so it displays and can be used correctly. In Blender for example, <strong>Z<\/strong> represents <strong>Up<\/strong> (facing\/pointing up, -Z for facing\/pointing down) and <strong>-Y<\/strong> represents <strong>Forward<\/strong> (facing\/pointing forwards, Y is facing\/pointing backwards). As Unity uses <strong>Y<\/strong> for <strong>Up<\/strong> and <strong>Z<\/strong> for <strong>Forward<\/strong>, Blender authored models effectively lie on their side after import, thus the need for Unity to apply the rotation correction.<\/p>\n<div style=\"background-color: #fc0; color: #000; width: 98.5%; padding: 1.0em;\"><strong>Important<\/strong>: for Blender exported FBX files in particular, Unity can appear to be ignoring axis data saved to file <em>regardless as to whether Up and Forward are set &#8216;correctly&#8217;<\/em> relative to what Unity is expecting. This is largely due to Unity&#8217;s (undisclosed) aggressive heuristic analysis identifying other data points beyond X, Y and Z coordinate properties, resulting in constant &#8216;false-positive&#8217; corrections.<\/div>\n<p><\/p>\n<div style=\"background-color: #dfdfdf; color: #000; width: 98.5%; padding: 1.0em;\"><strong>Aside<\/strong>: Blenders <strong>Global<\/strong> coordinate system basically means that whenever the viewport is set to <strong>Front<\/strong> (<span class=\"shortcutkey\">Numpad 1<\/span>) the scene camera is actually <strong>looking backwards<\/strong> at objects along the (positive) <strong>Y axis<\/strong>, from the (negative) <strong>-Y<\/strong> side of grid centre &#8211; <em>front to back<\/em>. With viewport set to <strong>Back<\/strong> (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">Numpad 1<\/span>) the opposite is the case, the scene camera is positioned on the (positive) <strong>Y<\/strong> side of grid centre looking forwards along the (negative) <strong>-Y<\/strong> axis &#8211; <em>back to front<\/em>.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/axis-of-orientation.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/axis-of-orientation.jpg\" alt=\"Axes of Orientation in Blender\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Understanding axes can be confusing because they&#8217;re relative to grid centre and <strong>Global Orientation<\/strong>; in <strong>Front<\/strong> view the camera is always looking backwards along the <strong>positive Y axis<\/strong>.<\/i><\/div>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"timestamps\"><\/span>Timestamps<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Times are approximate;<br \/>\n&#8211; n\/a<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":10425,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,230,831],"tags":[120,203,660,413,351,799],"class_list":["post-10417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-tutorials","category-unity","tag-blender","tag-fbx","tag-orientation","tag-rotation","tag-transform","tag-unity"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/comments?post=10417"}],"version-history":[{"count":22,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10417\/revisions"}],"predecessor-version":[{"id":10448,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10417\/revisions\/10448"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/10425"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=10417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=10417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=10417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}