{"id":1634,"date":"2024-01-20T15:06:15","date_gmt":"2024-01-20T15:06:15","guid":{"rendered":"https:\/\/www.katsbits.com\/site\/?p=1634"},"modified":"2024-01-21T06:11:07","modified_gmt":"2024-01-21T06:11:07","slug":"map-materials","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/site\/map-materials\/","title":{"rendered":"Map &#8211; Materials &#038; Textures (#4)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><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><\/span><\/a><\/span><\/div>\n<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\/site\/map-materials\/#Texture_paths_and_project_setup\" >Texture paths and project setup<\/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\/site\/map-materials\/#Materials_Textures_UVW_maps\" >Materials, Textures &amp; UVW maps<\/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\/site\/map-materials\/#Making_basic_Materials\" >Making basic Materials<\/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\/site\/map-materials\/#UVW_unwrapping_meshes\" >UVW unwrapping meshes<\/a><\/li><\/ul><\/nav><\/div>\n<p>In previous chapters we learnt the basics of making .map based levels in Blender, from setting up the grid and the importance of <a href=\"https:\/\/www.katsbits.com\/site\/map-meshes\/\">using blocks as a building material<\/a>, to making the map and using various simple techniques to quickly build a structure. Next we need to look at textures and materials, how they are used and applied.<\/p>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><strong>Download<\/strong>: <a title=\"Tutorial source files (ZIP)\" href=\"https:\/\/www.katsbits.com\/files\/tutorials\/katsbits_map-blender-source.zip\">KatsBits &#8211; Map Source<\/a> (c. 10 MB | *.blend, *.map, *.obj, *.mtl, *.jpg,).<\/p><\/blockquote>\n<blockquote class=\"menu_resources\"><p><strong>Resources<\/strong><br \/>\n&#8211; <a title=\"Download the Blender .map Entity Helper Kit\" href=\"https:\/\/www.katsbits.com\/site\/radiant-entity-blender\/\">Blender Entity Helper Kit<\/a><br \/>\n&#8211; <a title=\"Making .maps with Blender 2.49\" href=\"https:\/\/www.katsbits.com\/site\/exporting-models-as-bsp-maps\/\" target=\"_self\" rel=\"noopener\">Blender 2.49 .map making<\/a><br \/>\n&#8211; <a title=\"Quake III editing manual\" href=\"http:\/\/robotrenegade.com\/radiant\/manual\/index.htm\" target=\"_blank\" rel=\"noopener\">Quake III Manual<\/a><br \/>\n&#8211; <a title=\"Download GTK Radiant\" href=\"http:\/\/radiant.robotrenegade.com\/\" target=\"_self\" rel=\"noopener\">GtkRadiant download<\/a><\/p><\/blockquote>\n<p><a id=\"filepaths\" name=\"filepaths\"><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Texture_paths_and_project_setup\"><\/span>Texture paths and project setup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Generally speaking the textures we use when making .map based levels in Blender are, or should be considered as being, &#8220;<b>placeholders<\/b>&#8221; and temporary in nature irrespective of their source location, i.e. textures from a retail game being modded, custom assets created for the development of an independent project, or just some temporary &#8216;checkers&#8217; &#8211; this is notwithstanding their being in a format Blender can use; tga, jpg etc. The reason for this is due to the way the .map export process strips out <b>file path<\/b> information in order to create the appropriate &#8216;shader&#8217; references in the .map file. For example, if we used a texture called &#8220;<b>techwall.tga<\/b>&#8221; sitting in the following location;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000;\"><p>D:\\game assets\\textures\\tech\\techwall.tga<\/p><\/blockquote>\n<p>Although in Blender we can load an image into a Material slot using either &#8220;<b>Relative<\/b>&#8221; or &#8220;<b>Full<\/b>&#8221; path data, on export all that gets used is the following;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000;\"><p>techwall<\/p><\/blockquote>\n<p>This is also irrespective as to where the Blender file itself is being saved, in other words, we can work directly within the &#8220;<b>maps<\/b>&#8221; folder like so;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000;\"><p>D:\\Quake III Arena\\baseq3\\maps\\<\/p><\/blockquote>\n<p>Or from within an arbitrary &#8216;<b>working directory<\/b>&#8216; like so;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000;\"><p>D:\\map projects\\<\/p><\/blockquote>\n<p>In either case referencing the textures we need using either\/or combinations of the above file paths will still result in the same outcome on export, just the file name (title) being used as the shader reference. In practice this means the choice we make concerning the location of the project as we work on it is determined by <b>convenience<\/b> rather than any specifically technical reason. In affect, so long as we can access the assets needed, we can work from, and save to, any location or directory without adversely effecting the eventual outcome of the .map.<\/p>\n<p><a id=\"materials\" name=\"materials\"><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Materials_Textures_UVW_maps\"><\/span>Materials, Textures &amp; UVW maps<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To export a properly textured level, all mesh based objects used in the construction of the map itself need to have a &#8220;<b>Material<\/b>&#8221; and &#8220;<b>UVW<\/b>&#8221; map assignment. Not only does this dictate how the level is textured in terms of what-goes-where, it also determines the amount of work that might be necessary after-the-fact in a level editor. In addition, and as far as the export process itself is concerned, we only need apply images to the UVW mapped surfaces we actually need, letting the script automatically &#8220;<b>caulk<\/b>&#8221; or &#8220;<b>null<\/b>&#8221; the remainder.<\/p>\n<p>We have one of two options available to us when doing this; we can either apply the same texture image (and material) to everything, or use several to indicate different surfaces types (&#8216;floor&#8217;, &#8216;ceiling&#8217; and so on). Whether we choose one or the other will depend on how large and\/or complex the level is and how much extra work we want to do during the latter stages of production when placeholder image are swapped out in the editor.<\/p>\n<blockquote><p><b>Design note<\/b>: meshes can be exported without textures but this defaults to the application of &#8220;caulk&#8221; or &#8220;null&#8221; to everything without necessarily correctly distributing the assignments (putting them in the right place). In addition, although we only texture surfaces we need, &#8220;Material&#8221; assignments should generally be applied per-object rather than per-surface.<\/p><\/blockquote>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Basic two room level ready for textures\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures_sml.jpg\" alt=\"Basic two room level ready for textures\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>The basic two room level ready to be textured (ceiling sections are hidden so insides of the map can be seen) <b class=\"blenderFileRef\">[see *.blend &#8220;31&#8221;]<\/b><\/p>\n<\/div>\n<p><a id=\"basics\" name=\"basics\"><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Making_basic_Materials\"><\/span>Making basic Materials<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The first job then is to make a set of &#8220;<b>Materials<\/b>&#8220;. In Blender these are typically composed of three &#8220;<b>stages<\/b>&#8221; or &#8220;<b>slots<\/b>&#8220;; a &#8220;<b>Material<\/b>&#8221; slot, a &#8220;<b>Texture<\/b>&#8221; slot and an &#8220;<b>Image<\/b>&#8221; slot. All three are needed to ensure objects export with the correct image assignments and shader paths written to the .map file.<\/p>\n<p>First make the &#8220;<b>Material<\/b>&#8220;. Select an object and click the &#8220;<b>Materials<\/b>&#8221; button in the &#8220;<b>Properties<\/b>&#8221; section (right-hand side). If the selected object doesn&#8217;t have an material already assigned click &#8220;<b>+ New<\/b>&#8221; to add one. A set of parameters and options will appear alongside a spherical &#8220;<b>Preview<\/b>&#8221; window. We don&#8217;t need to do anything else here except perhaps change the &#8220;<b>Diffuse<\/b>&#8221; colour to help distinguish individual materials where more than one is being used &#8211; this is optional.<\/p>\n<p>Second, make the &#8220;<b>Texture<\/b>&#8220;. In the &#8220;<b>Properties<\/b>&#8221; section again, click the &#8220;<b>Texture<\/b>&#8221; button to show the available options. As before, if a slot does not exist click the &#8220;<b>+ New<\/b>&#8221; button to create one. Another set of parameters and options will appear. Find &#8220;<b>Type:<\/b>&#8220;, which is currently defaulting to &#8220;<b>Clouds<\/b>&#8220;, and click the drop-down menu, select &#8220;<b>Image or Movie<\/b>&#8221; from the list. This adds another sub-set of options, &#8220;<b>Image<\/b>&#8220;, that can be accessed and edited as per below.<\/p>\n<p>Third, set the &#8220;<b>Image<\/b>&#8220;. Scroll down to the &#8220;<b>Image<\/b>&#8221; sub-section, click &#8220;<b>Open<\/b>&#8221; and in the &#8220;<b>File Browser<\/b>&#8221; find and select the bitmap image to load into Blender. Once the image is loaded a preview of it will appear in the &#8220;<b>Preview<\/b>&#8221; pane signifying the overall &#8216;Material&#8217; has been set up with the basic properties we need. We can also then rename the image &#8220;<b>ID<\/b>&#8221; (the input field above the image &#8220;<b>Source:<\/b>&#8221; datablock) to something suitable to help distinguish the texture by name, again where more than one is being used &#8211; this is optional. Finally scroll down to the &#8220;<b>Mapping:<\/b>&#8221; sub-section and click the &#8220;<b>Coordinates:<\/b>&#8221; drop-down menu, select &#8220;<b>UV<\/b>&#8221; from the list. On completion, and depending on how many materials are set up, this adds an &#8216;image&#8217; (one per material) to a list of available sources we can then apply to an object.<\/p>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-settings.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Set the Material up by adding an image to the Texture slot\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-settings_sml.jpg\" alt=\"Set the Material up by adding an image to the Texture slot\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>Set up the Material so it has a Texture slot<sup>[1]<\/sup> with a bitmap image assigned to that slot, this is needed for exporting &#8216;textured&#8217; brushes &#8211; note the &#8220;<b>Image<\/b>&#8221; datablock &#8220;<b>ID<\/b>&#8221; can be changed because it&#8217;s a &#8216;data reference&#8217; whereas the &#8220;<b>Source:<\/b>&#8221; name can&#8217;t because it refers to the actual file<sup>[2]<\/sup>. Change it to something recognisable if using more than one Material, i.e. rename &#8220;<b>test1.jpg<\/b>&#8221; to &#8220;&#8221;<b>walls<\/b>&#8221; and so on<\/p>\n<\/div>\n<p>Repeat this process for each object by assigning Materials per &#8216;surface&#8217; type if using more than a single material, i.e. one material assigned to all &#8220;wall&#8221; elements, one for all &#8220;floor&#8221; elements and one for all &#8220;ceiling&#8221; elements, etc. &#8211; remember, materials are assign to &#8216;objects&#8217; not individual surfaces\/polygons. Or alternatively assign the same Material to everything.<\/p>\n<blockquote><p><b>Design note<\/b>: for more detailed information on making Materials read the <a title=\"Read a more details description om making materials in Blender\" href=\"https:\/\/www.katsbits.com\/site\/chair-materials\/\" target=\"_self\" rel=\"noopener\">making a simple chair<\/a> and <a title=\"Making materials in depth basics for Blender\" href=\"https:\/\/www.katsbits.com\/site\/sword-materials\/\" target=\"_self\" rel=\"noopener\">making a simple sword<\/a> Blender Basics tutorials.<\/p><\/blockquote>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-assign.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Assign same Material to everything\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-assign_sml.jpg\" alt=\"Assign same Material to everything\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>Apply at least one material to all meshes. 1) The material being assigned to each object. 2) Creating a new slot by selecting an available material. 3) Curved section, currently using different material, will be assigned same material as other objects in the scene&#8230; <b class=\"blenderFileRef\">[see *.blend &#8220;32&#8221;]<\/b><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-assign-materials.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Assigning materials to different sections of the level\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-assign-materials_sml.jpg\" alt=\"Assigning materials to different sections of the level\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>&#8230; or use several, applying selections based on what each surface is supposed to be representative of, i.e. a &#8220;floor&#8221;, &#8220;walls&#8221;, &#8220;ceiling&#8221; etc. Each object needs one material irrespective <b class=\"blenderFileRef\">[see *.blend &#8220;33&#8221;]<\/b><\/p>\n<\/div>\n<p><a id=\"unwrapping\" name=\"unwrapping\"><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"UVW_unwrapping_meshes\"><\/span>UVW unwrapping meshes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The next step, once Materials have been assigned, is to &#8220;<b>UVW unwrap<\/b>&#8221; the level. There are essentially two ways this can be done; we unwrap and texture the <b>individual objects<\/b>, or <b>join them all together<\/b>, unwrapping and texturing based on material assignments\/selections (assuming more than one material is in use). Both approaches have their caveats, however, as it&#8217;s likely we will be editing the level at some point in the future, we need to make sure this can be done with the greatest of ease. This being the case we&#8217;ll unwrap and texture the objects individually.<\/p>\n<blockquote><p><b>Design note<\/b>: remember, we&#8217;re only assigning images to the actual surfaces we need.<\/p><\/blockquote>\n<p>First for ease of use, we should change Blenders viewports around a little. In the &#8220;<b>Outliner<\/b>&#8221; view top-right (currently displaying a list of items and elements in the scene), click the &#8220;<b>Editor Type:<\/b>&#8221; button and select &#8220;<b>UV\/Image Editor<\/b>&#8221; from the list &#8211; this allows us to see what textures we&#8217;re assigning to the UVW&#8217;s we are about to unwrap. Once done we can start the process.<\/p>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-uv-image-editor.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Switching the Outliner view for the UV\/Image Editor\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-uv-image-editor_sml.jpg\" alt=\"Switching the Outliner view for the UV\/Image Editor\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>Click the &#8220;<b>Editor Type<\/b>&#8221; and change the &#8220;<b>Outliner<\/b>&#8221; view to the &#8220;<b>UV\/Image Editor<\/b>&#8221;<\/p>\n<\/div>\n<p>Select an object and enter Edit mode, using &#8220;<b>Ctrl+Tab<\/b>&#8221; switch to &#8220;<b>Face<\/b>&#8221; select mode and either select all (&#8220;<b>A<\/b>&#8220;) or through a combination of <b>RMB<\/b>, &#8220;<b>Shift+RMB<\/b>&#8221; or &#8220;<b>Alt+RMB<\/b>&#8220;, select individual, groups or loops of faces. Press &#8220;<b>U<\/b>&#8221; to open the &#8220;<b>UV Mapping<\/b>&#8221; menu and click &#8220;<b>Unwrap<\/b>&#8220;<sup>[1]<\/sup> (&#8220;<b>Mesh \u00bb UV Unwrap \u00bb Unwrap<\/b>&#8220;) &#8211; note that we&#8217;re not trying to unwrap with any precision as would normally be done, all we&#8217;re doing is simply adding a UVW channel to the mesh without paying any particular attention as to how well that is done.<\/p>\n<p>Next, with the selection still active, from the &#8220;<b>UV\/Image Editor<\/b>&#8221; view click the &#8220;<b>Browse Image to be Linked<\/b>&#8221; button and select an image from the list<sup>[2]<\/sup> to be applied to the mesh &#8211; if it can&#8217;t be seen press &#8220;<b>Alt+Z<\/b>&#8221; (twice, depending on what view mode is active) to switch &#8220;<b>Viewport Shading<\/b>&#8221; to &#8220;<b>Textured<\/b>&#8221; mode. Remember, only assign an image to surfaces that are actually needed. Repeat this process for each mesh object in the scene that&#8217;s part of the level itself; select, unwrap and assign an image.<\/p>\n<blockquote><p><b>Design note<\/b>: what&#8217;s important here isn&#8217;t a Materials assignment but rather the bitmap image associated with the Material. As the map format looks for texture (shaders) assigned per-surface and not per-object, so long as the correct image is assigned to the UVW map, which Material that belongs to is of lesser concern &#8211; the purpose of setting up Materials is as a conduit to load in texture images.<\/p><\/blockquote>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-unw-unwrap.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Applying textures to each object\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-unw-unwrap_sml.jpg\" alt=\"Applying textures to each object\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>We only need to UVW unwrap<sup>[1]<\/sup> and assign textures to<sup>[2]<\/sup> the faces that are actually needed, everything else is automatically exported with &#8220;<b>caulk<\/b>&#8221; or &#8220;<b>null<\/b>&#8221; applied<sup>[3]<\/sup> (the white faces shown) so don&#8217;t require images to be set in place.<\/p>\n<\/div>\n<p>The finished result should be a level composed of a series of separate objects that have specific textures applied only to those surfaces as are needed, everything else will appear &#8216;white&#8217; and untextured, which will be exported as &#8216;caulk&#8217; or &#8216;null&#8217; surfaces automatically.<\/p>\n<div class=\"content_images\">\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-level.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" title=\"Textures assigned only to faces that are needed\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/blender-make-maps-levels\/map-textures-level_sml.jpg\" alt=\"Textures assigned only to faces that are needed\" width=\"640\" height=\"400\" border=\"0\" \/><\/a><\/p>\n<p>Texturing different &#8216;types&#8217; of surface so that once the model is exported it is textured appropriately relative to texture assignment &#8211; in this example that would be three &#8216;shaders&#8217;, &#8220;floor&#8221;, &#8220;walls&#8221; and &#8220;ceiling&#8221; (note ceiling sections hidden from view so inside of level can be seen) <b class=\"blenderFileRef\">[see *.blend &#8220;34&#8221;]<\/b><\/p>\n<\/div>\n<p>Levels don&#8217;t need to be as precisely textured as models because the format tends to be less forgiving of the more &#8216;abstract&#8217; alignments possible with the latter, typically on export textures are realigned relative to each face being treated as an individual surface. <a title=\"Entities, prepping and export of a map from Blender\" href=\"https:\/\/www.katsbits.com\/site\/map-entities\/\" target=\"_self\" rel=\"noopener\">With texturing done we can move on to entity placement, prepping and export of the level<\/a>.<br \/>\n<\/p>\n<div class=\"subNav\">[<a title=\"The basics of making maps in Blender\" href=\"https:\/\/www.katsbits.com\/site\/map\/\" target=\"_self\" rel=\"noopener\">1: basics<\/a> | <a title=\"Making a .map based level\" href=\"https:\/\/www.katsbits.com\/site\/map-meshes\/\" target=\"_self\" rel=\"noopener\">2: making<\/a> | <a title=\"Adding curves to a .map based level\" href=\"https:\/\/www.katsbits.com\/site\/map-curves\/\" target=\"_self\" rel=\"noopener\">3: curves<\/a> | <a title=\"Materials, Textures and images\" href=\"https:\/\/www.katsbits.com\/site\/map-materials\/\" target=\"_self\" rel=\"noopener\">4: textures<\/a> | <a title=\"Entities, prepping and export\" href=\"https:\/\/www.katsbits.com\/site\/map-entities\/\" target=\"_self\" rel=\"noopener\">5: entities<\/a> | <a title=\"Opening the map in a level editor\" href=\"https:\/\/www.katsbits.com\/site\/map-level-editor\/\" target=\"_self\" rel=\"noopener\">6: level editor<\/a> | <a title=\".map based level design extras\" href=\"https:\/\/www.katsbits.com\/site\/map-extras\/\" target=\"_self\" rel=\"noopener\">7: extras<\/a>]<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":1609,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[327,276,277,278,331,424,106,204,421,25,107,426,24,352,237,260],"class_list":["post-1634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-map","tag-blender-2-5x","tag-blender-2-6x","tag-blender-2-7x","tag-bsp","tag-caulk","tag-gtkradiant","tag-level-editor","tag-map-basics","tag-materials","tag-radiant","tag-shaders","tag-textures","tag-unwrap","tag-uv-unwrapping","tag-uv-image-editor"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/comments?post=1634"}],"version-history":[{"count":6,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1634\/revisions"}],"predecessor-version":[{"id":1653,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1634\/revisions\/1653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media\/1609"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media?parent=1634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/categories?post=1634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/tags?post=1634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}