{"id":10387,"date":"2026-03-26T11:24:00","date_gmt":"2026-03-26T11:24:00","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=10387"},"modified":"2026-03-26T11:24:00","modified_gmt":"2026-03-26T11:24:00","slug":"fbx-batch-export-rotation","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/fbx-batch-export-rotation\/","title":{"rendered":"FBX Batch Export Add-on with Rotation"},"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-6a01c99d0b639\" 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-6a01c99d0b639\"  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\/fbx-batch-export-rotation\/#usage\" >Usage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/fbx-batch-export-rotation\/#settings\" >Settings<\/a><\/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\/fbx-batch-export-rotation\/#scene-object-prep\" >Scene &#038; Object Prep<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/fbx-batch-export-rotation\/#unity\" >Unity<\/a><\/li><\/ul><\/nav><\/div>\n<p>Supplementary to the <a href=\"https:\/\/www.katsbits.com\/codex\/fbx-batch-object-export-script\/\">simple FBX batch export Add-on for Blender<\/a>, the Add-on below adds a &#8216;rotation fix&#8217; that allows for custom orientation data to be saved to file. This is useful for Blender originated models because the applications uses a different global orientation axes relative to other applications. When these files are then imported, the orientation data inadvertently causes rotation issues, meshes appearing incorrectly rotated. The FBX Batch export script can now add optional axis information to files so upon import, model load with the correct orientation.<\/p>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><b>Download<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/blender\/KatsBits FBX Batcher + Pre-Rotation.zip\">KatsBits FBX Batcher + Rotation Fix<\/a> (c. 10 KB | *.py).<\/p><\/blockquote>\n<blockquote><p><strong>Design note<\/strong>: the FBX Batcher exports static, non-animated, objects only.<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"usage\"><\/span>Usage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The FBX Export Batcher includes a number of options to selectively export objects from a Scene so no special prep is necessary. This might mean working on projects as normal to accommodate production while being mindful of maintaining a Collection hierarchy in the <strong>Outliner<\/strong> that will aid the eventual export process. For example, if the contents of a particular Collection need to be exported, but this also includes some &#8216;working models&#8217;, objects not meant for inclusion, simply hide them in the existing Collection, then during export, make sure to enable the &#8220;<strong>Export Visible Only<\/strong>&#8221; checkbox. This forces the the export process to exclude any objects hidden from view in a Collection.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-prep.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-prep.jpg\" alt=\"Scene prep for export\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>A typical project might include objects that don&#8217;t need to be exported. These can simply be hidden, and then the <strong>Export Visible Only<\/strong> option set during export, to exclude them.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"settings\"><\/span>Settings<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After initialising the FBX exporter, either from <strong><em>File \u00bb Export \u00bb Batch FBX per Object (Custom)<\/em><\/strong>, or in the <strong>Sidebar<\/strong> (<span class=\"shortcutkey\">N<\/span>) clicking the <strong>Batch Export per Object<\/strong> button in the <strong>Tool<\/strong> tab, ensure the &#8216;<strong>Settings<\/strong>&#8216; panel is visible (<em>should be shown by default, press <span class=\"shortcutkey\">N<\/span> with mouse over the Blender File View instance if not<\/em>). Here the options are;<\/p>\n<p><strong>Drop-down<\/strong><\/p>\n<ul>\n<li><strong>Collection<\/strong>: list of Collections available to export from<sup>[1]<\/sup>.<\/li>\n<li><strong>Export Preset<\/strong>: common orientation axes &#8211; Unity, Unreal, Max, Custom.<\/li>\n<li><strong>Forward<\/strong>: defines &#8216;forward&#8217; -X\/X, -Y\/Y, -Z\/Z axis<sup>[2]<\/sup>.<\/li>\n<li><strong>Up<\/strong>: defines &#8216;up&#8217; -X\/X, -Y\/Y, -Z\/Z axis<sup>[2]<\/sup>.<\/li>\n<\/ul>\n<p><strong>Check boxes<\/strong><\/p>\n<ul>\n<li><strong>Prepare for Unity (bake -90\u00b0 X rotation)<\/strong>: forces Unity rotation fix<sup>[3]<\/sup>.<\/li>\n<li><strong>Recenter to Origin<\/strong>: objects temporarily repositioned at 0,0,0 during export.<\/li>\n<li><strong>Export Visible Only<\/strong>: only exports visible objects.<\/li>\n<li><strong>Apply Transforms<\/strong>: global &#8220;Apply&#8221; Rotation, Scale, Location on all objects.<\/li>\n<li><strong>Apply Modifiers<\/strong>: global &#8220;Apply&#8221; on the modifier stack (top-down)<sup>[4]<\/sup>.<\/li>\n<\/ul>\n<p><em style=\"font-size:85%\"><sup>[1]<\/sup>the exporter will only process the contents of the active Collection defined in <strong>Collection<\/strong>, others will be ignored but can be selected and parsed running the exporter again.<\/p>\n<p><sup>[2]<\/sup>if a preset is used, <strong>Forward<\/strong> and <strong>Up<\/strong> will auto-set to the correspond axes associated with the preset.<\/p>\n<p><sup>[3]<\/sup> to accommodate Unity Editors &#8216;Blender rotation fix&#8217; post-import processing filter, when <strong>Prepare for Unity (bake 90\u00b0 X rotation)<\/strong> is set, the exporter will <strong>pre-rotate<\/strong> and then <strong>bake<\/strong> the change into the resulting FBX so objects appear correctly orientated in Unity Editor &#8211; note that even though rotation is baked into the mesh, some additional correction may still be necessary due to the way Unity aggressively interprets Blender authored meshes and objects.<\/p>\n<p><sup>[4]<\/sup> the modifier stack is applied agnostically which may cause issues due to the way effects can compound i.e., applying Mirror before Subdivision will likely malform the mesh. To avoid this, manually Apply modifiers before export.<\/em><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-options.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-options.jpg\" alt=\"FBX Batch export options\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The available settings for the FBX Batch export Addon with rotation option &#8211; these will batch process objects within a Collection, exporting them as individual FBX files based on the properties set.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"scene-object-prep\"><\/span>Scene &#038; Object Prep<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When prepping object for export make sure they are set up with respect to how they are going to be used (in no particular order);<\/p>\n<ul>\n<li>set Origin relative to the object\/use<sup>[5]<\/sup><\/li>\n<li>triangulation\/tessellation (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">T<\/span>)<sup>[6]<\/sup><\/li>\n<li>closed meshes<\/li>\n<li>apply modifiers<sup>[7]<\/sup><\/li>\n<li>apply transforms (location, rotation, scale)<\/li>\n<li>UV unwrapped and UV mapped<\/li>\n<li>materials assigned<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><em style=\"font-size:85%\"><sup>[5]<\/sup> objects do not need to be pre-positioned at grid-centre for export as the exporter automatically relocates them temporarily to 0,0,0 as part of the export process.<\/p>\n<p><sup>[6]<\/sup> triangulation may be optional depending on where the resulting FBX files is to be used; some environment can use &#8216;quad&#8217; structured meshes and\/or will auto-convert them on import.<\/p>\n<p><sup>[7]<\/sup> while the exporter applies modifiers, sharp edges etc., it&#8217;s recommended these be done before export to ensure proper mesh structure as the order in which generative properties are applied can adversely affect the resulting object.<\/em><\/p>\n<h3><span class=\"ez-toc-section\" id=\"unity\"><\/span>Unity<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When exporting FBX files from Blender for use in Unity it&#8217;s important to note that, although the exporter applies a rotation fix at time of export from Blender that properly compensates for Unity&#8217;s forced object reorientation, due to the aggressive nature of this Unity&#8217;s post-import processing, models may still import and appear &#8216;incorrectly&#8217; in the editors Asset Browser and\/or main 3D viewport, necessitating additional adjustment once loaded. There is currently no way to disable this operation.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-unity.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/fbx-batch-exporter-rotation-unity.jpg\" alt=\"Unity forced FBX rotation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>If Unity detects an incoming file has been authored in Blender 3D it will attempt an auto-rotate correction regardless of the model being correctly prepped for Unity or not.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":10391,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[820,232,803,819,967,1072,231,831,993],"tags":[1005,550,72,203,660,796,799],"class_list":["post-10387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-max","category-downloads","category-godot","category-maya","category-minecraft-2","category-roblox","category-tools","category-unity","category-unreal","tag-add-on","tag-download","tag-export","tag-fbx","tag-orientation","tag-scripts","tag-unity"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10387","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=10387"}],"version-history":[{"count":27,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10387\/revisions"}],"predecessor-version":[{"id":10415,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10387\/revisions\/10415"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/10391"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=10387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=10387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=10387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}