{"id":10462,"date":"2026-04-13T10:15:44","date_gmt":"2026-04-13T09:15:44","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=10462"},"modified":"2026-04-13T10:15:44","modified_gmt":"2026-04-13T09:15:44","slug":"legacy-ase-exporter","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/legacy-ase-exporter\/","title":{"rendered":"Legacy ASE Exporter + Batch (Add-on)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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-6a558b78482e2\" 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-6a558b78482e2\"  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\/legacy-ase-exporter\/#installation\" >Installation<\/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\/legacy-ase-exporter\/#usage\" >Usage<\/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\/legacy-ase-exporter\/#export-options\" >Export Options<\/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\/legacy-ase-exporter\/#materials\" >Materials<\/a><\/li><\/ul><\/nav><\/div>\n<p>The <strong>Legacy ASCII Export (.ase)<\/strong> add-on for Blender adds Collection-based batch exporting that&#8217;s specifically tailored towards generating valid ASE models for use in idTech or similar game-engine technologies. Ostensibly for use with GtkRadiant the exporter can create files that include multiple meshes (sub-meshes) and multiple materials, vertex colours and more.<\/p>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><strong>Download<\/strong>: <a href=\"https:\/\/www.katsbits.com\/files\/blender\/KatsBits Legacy ASE Exporter.zip\">KatsBits &#8211; Legacy ASCII Exporter (*.ase)<\/a> (10 KB | *.py).<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"installation\"><\/span>Installation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add-on can be installed from From <strong>Edit \u00bb Preferences \u00bb Add-ons<\/strong>, or by dragging the *.zip archive into Blender then clicking &#8220;<strong>OK<\/strong>&#8221; in the <strong>Install from Disk<\/strong> confirmation pop-up that appears. The ASE export functionality will then be available from <strong>File \u00bb Export \u00bb Legacy ASCII Export (.ase)<\/strong>, enabled by default.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"usage\"><\/span>Usage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To export a set of objects inside a Collection, ensure the Collection is highlighted in the <strong>Outliner<\/strong> (active Collection), then from <strong>File \u00bb Export \u00bb Legacy ASCII Export (.ase)<\/strong> make sure to click the <strong>Batch Objects<\/strong> and\/or <strong>Visible Only<\/strong> checkboxes depending on what needs to be included. To export a single file, select the Collection the object is in and hide everything except the model to be exported, then ensure <strong>Batch Objects<\/strong> is disabled, <strong>Visible Only<\/strong> is enabled.<\/p>\n<blockquote><p><strong>Design note<\/strong>: where Blender is used as a level editor, note that models can be exported in-situ, that is, where they are positioned in the Scene. This may affected Origin placement and\/or bounding box boundaries. The ASE export script can also process objects without any need for special preparation beyond what is typically expected for BSP content creations and editing using Blender &#8211; closed meshes, triangulated\/tessellated (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">T<\/span>), single material reference per mesh\/sub-mesh, etc. &#8211; projects do not need to be reorganised, objects moved or recentred, except to ensure a clean export; models can be left in place within a Collection, hidden or moved if being excluded, any visible or available meshes will then be saved as separate *.ase files in the destination folder.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-active-collection.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-active-collection.jpg\" alt=\"Scene setup for ASE export\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To export the contents of a Collection, single or multiple objects, make sure meshes to be included are visible, everything else hidden.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"export-options\"><\/span>Export Options<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Upon use, ensure the &#8216;<strong>Settings<\/strong>&#8216; panel is accessible in the <strong>Blender File View<\/strong> instance that appears to set export options and complete the process (<em>should be visible by default, press <span class=\"shortcutkey\">N<\/span> if not<\/em>). Here;<\/p>\n<ul>\n<li><strong>Forward<\/strong>: sets the &#8216;Forward&#8217; axis. Default -Y (Blender).<\/li>\n<li><strong>Up<\/strong>: sets the &#8216;Up&#8217; axis. Default Z (Blender)<sup>[1]<\/sup>.<\/li>\n<li><strong>Batch Objects<\/strong>: exports all objects in active Collection.<\/li>\n<li><strong>Visible Only<\/strong>: exports visible objects only<sup>[2]<\/sup>.<\/li>\n<li><strong>Empty as Root<\/strong>: group object export (root parent).<\/li>\n<li><strong>Global Scale<\/strong>: rescale\/size objects. Default 1.00 (Blender)<sup>[3]<\/sup>.<\/li>\n<li><strong>Vertex Colors<\/strong>: exports vertex colors<sup>[4]<\/sup>.<\/li>\n<li><strong>Apply Modifiers<\/strong>: applies modifiers.<\/li>\n<li><strong>Apply Transforms<\/strong>: applies Location, Rotation and Scale properties.<\/li>\n<li><strong>Apply Edge Split<\/strong>: explicitly applies Edge Splits\/Mark Edges<sup>[4]<\/sup>.<\/li>\n<li><strong>Recenter to Origin<\/strong>: recenters object to 0,0,0 based on Origin.<\/li>\n<\/ul>\n<p><em style=\"font-size:85%\"><sup>[1]<\/sup> generally speaking the Forward and Up axes of a mesh exported from Blender for Radiant\/idTech use do not need to be set. However, Blenders axes &#8211; Z\/Up, -Y\/Forward &#8211; are set as the defaults.<\/p>\n<p><sup>[2]<\/sup> to exclude meshes from export, hide them in the Outliner (or within the 3D Viewport).<\/p>\n<p><sup>[3]<\/sup> when using Blender to make models for Radiant\/idTech they should scaled actual size, i.e. set <strong>Units<\/strong> to <strong>None<\/strong> and treat each unit of measurement as <strong>1 Radiant grid unit<\/strong>. In other words, an object that&#8217;s 8 units high represents the height of a standard step.<\/p>\n<p><sup>[4]<\/sup> while vertex colours can be painted to meshes in Blender and exported to ASE, they do not display in GtkRadiant so require *.map compiling for visual checks in-game.<\/p>\n<p><sup>[5]<\/sup> setting Apply Edge Split ensure all forms of defining mesh smoothing &#8211; Mark Shape, Edge Angle, Split Edges (<span class=\"shortcutkey\">Y<\/span>) &#8211; remain intact and models properly smoothed in-game.<\/em><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-export.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-export.jpg\" alt=\"Legacy ASE export options\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Options available for the <strong>Legacy ASCII Export (.ase)<\/strong> add-on includes batch and Collection specific settings.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"materials\"><\/span>Materials<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The <strong>Legacy ASCII Export (.ase)<\/strong> add-on supports objects with more than one material assignment depending on how objects are set up;<\/p>\n<ul>\n<li><strong>Separate Objects<\/strong>: typically when setting up an object that&#8217;s to use several materials, each assignment would be split into a dedicated mesh &#8211; one mesh, one material. During export these are then collated together to form the final .ase file.<\/li>\n<li><strong>Auto-Split<\/strong>: alternatively, models can be made as normal, materials assigned to their respective surfaces &#8211; one mesh, multiple materials. During export meshes are automatically split and parsed to generate the necessary structure in the resulting *.ase file.<\/li>\n<\/ul>\n<p>In both instances the final ASE file will have the correct and Radiant compatible <em>sub-mesh<\/em> (GEOMOBJECT \u00bb MESH) and <em>sub-material<\/em> (MATERIAL_LIST \u00bb MATERIAL) structure relative to the corresponding mesh object and material references assigned in Blender.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><strong>Important<\/strong>: unused materials should be removed before export to prevent malformed models.<\/p><\/blockquote>\n<blockquote><p><strong>Design note<\/strong>: to export multiple meshes as a single model, each object needs to be parented to a &#8216;root&#8217; object that acts as a proxy around which the model is properly organised. To do this, drop an <strong>Empty<\/strong> into the Scene (any type), <strong>Add \u00bb Empty \u00bb [option]<\/strong>, and position it as the &#8216;origin&#8217; of the model &#8211; ensure each object to be grouped uses the same Origin location. Next, select the objects that are to form the model and using <strong>Parent<\/strong>, <strong><em>Object \u00bb Parent \u00bb Object (\u00bb Object + Keep Transform)<\/em><\/strong> (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">P<\/span>), link them together. Finally, as the resulting ASE is named after the Empty, remain appropriately. Export as normal. The exporter can process multiple groupings set up this way.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-root-group.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender\/ase-legacy-root-group.jpg\" alt=\"Export object groups\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Grouped objects can be exported to ASE. To do this Parent everything to an Empty &#8216;root&#8217; object and rename.<\/i>\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":10467,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,232,237,231],"tags":[1005,1136,119,72,1137,1138,625,118,660,1080],"class_list":["post-10462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-downloads","category-misc3d","category-tools","tag-add-on","tag-ase","tag-edge-split","tag-export","tag-gtkradiant","tag-idtech","tag-mark-sharp","tag-mesh-smoothing","tag-orientation","tag-radiant"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10462","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=10462"}],"version-history":[{"count":17,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10462\/revisions"}],"predecessor-version":[{"id":10481,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10462\/revisions\/10481"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/10467"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=10462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=10462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=10462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}