{"id":5960,"date":"2023-07-15T14:17:05","date_gmt":"2023-07-15T13:17:05","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=5960"},"modified":"2023-09-07T15:48:27","modified_gmt":"2023-09-07T14:48:27","slug":"data-transfer","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/data-transfer\/","title":{"rendered":"UV Transfer (Data Transfer Modifier)"},"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-6a09a7d2be772\" 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-6a09a7d2be772\"  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\/data-transfer\/#parent-object-setup\" >Parent Object 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\/codex\/data-transfer\/#target-object-setup\" >Target Object Setup<\/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\/data-transfer\/#data-transfer-modifier\" >Data Transfer Modifier<\/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\/data-transfer\/#editing-transferred-uv-data\" >Editing Transferred UV Data<\/a><\/li><\/ul><\/nav><\/div>\n<p>One of the more difficult aspects of UV Unwrapping objects is replicating the UVs from another object, for example replicating UVs between high resolution and low resolution versions of the same mesh. Ordinarily this might mean having both iterations active in Edit Mode, and as-best-as-possible, editing UVs so one (high) matches the other (low). To mitigate the need to do this it is possible to transfer UV data from one mesh to another using the <b>Data Transfer<\/b> modifier.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: disparities between objects will affect end results. In other words, the nature of a low resolution mesh, for example, typically means a significant amount of surface and\/or face data may have been removed for sake of a lower resolution &#8211; there is no longer a one-to-one correspondence between objects, which further compounds transfer accuracy. A number of &#8216;fixes&#8217; and &#8216;fudges&#8217; can be used to work around this, but they cannot compensate for mesh data not being available.<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"parent-object-setup\"><\/span>Parent Object Setup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Although it goes without saying, the object from which UVs are to be transferred, the <i>parent object<\/i>, needs to be fully UV unwrapped and UV mapped [1]. Similarly, at least one fully qualified Material [2] needs to be assigned for images (and UVs) to be displayed correctly.<\/p>\n<blockquote><p><b>Design note<\/b>: at a minimum materials should carry an Image Texture that&#8217;s linked through Base Color (Diffuse) so UVs can be properly mapped relative to the texture or image that&#8217;s to be shown on the object &#8211; by default <a href=\"https:\/\/www.katsbits.com\/codex\/uv-maps\/#optimising-uv-maps\">UVs are mapped to a square boundary<\/a>, which may be an issue where UVs are to be mapped to an image with a horizontal or vertical rectangle aspect.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-uv-mapped.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-uv-mapped.jpg\" alt=\"UV and Material mapped\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The parent object from which UVs are to be transferred needs to fully Unwrapped and mapped [1] with Material assigned [2] for image display.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"target-object-setup\"><\/span>Target Object Setup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Typically, the target object, that is the mesh that UVs are to be copied to, won&#8217;t be UV unwrapped or mapped [3], and likely won&#8217;t carry a Material assignment [4]. If not, assign Materials from the parent object to correspond with the UV layout being copied to ensure it will display correctly in Material Preview or Rendered modes (else object appears white).<\/p>\n<blockquote><p><b>Design note<\/b>: absent an actual <a href=\"https:\/\/www.katsbits.com\/codex\/uv-maps\/\">UVMap datablock<\/a>, objects appear colour tinted with material, or white without, in the 3D Viewport regardless as to whether assigned materials referencing any images (colour tinting is extrapolated from linked images or the materials Base Color) &#8211; if parent and target objects differ structurally, material assignment may need to be approximate or, one or the other mesh modified so the any primary UV Seam or edge alignments are present to prevent or mitigate copied UVs being misaligned, distorted or otherwise malformed.<\/p>\n<p>In addition, to ensure UVs are copied over correctly the UVMap datablock can be, optionally, deleted in <b>Object Data Properties<\/b>. In the <b>UV Maps<\/b> subsection, select the existing <b>UVMap<\/b> entry (and any others that might be present) and click the &#8220;<b>&#8211;<\/b>&#8221; (minus) button.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-no-uv-material.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-no-uv-material.jpg\" alt=\"Target object setup\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Typically the target object won&#8217;t be UV unwrapped or mapped [3] and may not have a material assignment [4] &#8211; it will appear &#8216;white&#8217; in the 3D Viewport.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"data-transfer-modifier\"><\/span>Data Transfer Modifier<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Once the parent and target objects are prepped, to transfer UV data from one to the other, select the object UVs are to be copied to, the &#8216;target&#8217;, and in <b>Modifier Properties<\/b> assign a <b>Data Transfer<\/b> [5] modifier.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-modifier.jpg\" alt=\"Data Transfer modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Assigning a Data Transfer modifier [5] to the object receiving UV data (tinted green above).<\/i><\/p>\n<p>In the Data Transfer modifier panel optionally click the <b>Edit Mode<\/b> button (<i>Display modifier in Edit mode<\/i>) [6], this allows the effect to be seen when edit mode is active. Then to set the main parameters enabling the modifier; in <b>Source<\/b> [7] use the eye-dropper or select from the drop-down, the parent object UVs are to be copied from. Ensure <b>Mix Mode<\/b> is set to <b>Replace<\/b>. Lower down the panel click the checkbox that activates <b>Edge Data<\/b> [8] and expand the options. Optionally click <b>UV Seam<\/b> to enable and ensure <b>Mapping<\/b> is set to <b>Nearest Edge<\/b>.<\/p>\n<blockquote><p><b>Design note<\/b>: enabling UV Seam transfers <a href=\"https:\/\/www.katsbits.com\/codex\/uv-editing\/#uv-basics\">seam markings<\/a> (orange edge highlights) between meshes &#8211; this is subject to structural correspondence; Blender will attempt to transfer edge data between parent and target approximately.<\/p><\/blockquote>\n<p>Below, click the checkbox to enable <b>Face Corner Data<\/b> then on the <b>UVs<\/b> button to activate. Finally switch <b>Mapping<\/b> to <b>Topology<\/b> [9]. Once set UVs will then be dynamically transferred, the image associated with the parent object then appearing correctly mapped to the target [10].<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: if Mapping is set and nothing appears on the target mesh, click the <b>Generate Data Layers<\/b> button to forcibly generate the selected data.<\/p><\/blockquote>\n<blockquote><p><b>Design note<\/b>: depending on the objects and data being copied the default Mapping, <b>Nearest Corner and Best Matching Normal<\/b>, may map the parent image incorrectly. Where this happens, run through the available options until the image appears correctly mapped to the target object.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-modifier-settings.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-modifier-settings.jpg\" alt=\"Data Transfer settings\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Setting up the Data Transfer options. Click the <b>Edit Mode<\/b> button [6], set the <b>Source<\/b> object [7], activate <b>Edge Data<\/b> [8] and set the <b>Mapping<\/b> [9] so the image is mapped to the target mesh [10].<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"editing-transferred-uv-data\"><\/span>Editing Transferred UV Data<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Once the Data Transfer modifier has been set up UVs won&#8217;t be initially editable, that is, with target object selected [11], toggling into Edit Mode the copied UVs are not shown [12] because the modifier is essentially dynamically &#8216;projecting&#8217; them into place. For duplicated UVs to be editable then, the modifier has to be applied so UV data becomes &#8216;real&#8217; and instanced to the target mesh.<\/p>\n<blockquote><p><b>Design note<\/b>: preference should be to make the transferred UVs &#8216;real&#8217; and edited after-the-fact rather adjusting the parent mesh to accommodate any differences that may exist between objects.<\/p><\/blockquote>\n<p>To make the transferred data &#8216;real&#8217;, in the modifier panel click the down-arrow, <b>\u02c5<\/b> [13], to expand the &#8216;more options&#8217; menu. Here, click <b>Apply<\/b>. The panel will disappear (it&#8217;s applied). Selecting the target mesh [14] and switching to Edit Mode will then show the fully editable UVs [15] transferred from the parent object.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-apply-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-apply-modifier.jpg\" alt=\"Apply Modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Even though an object may be selected and in Edit Mode [11] transferred UVs will not be shown [12] in the UV Editor while the modifier is active, it has to be applied [13].<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-set-uvs.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/uv-editing\/data-transfer-set-uvs.jpg\" alt=\"Editable UVs\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Once the Data Transfer modifier has been applied selecting the mesh [14] and entering Edit Mode will display the now fully editable UVs [15] copied across from the parent object.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":7299,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,230],"tags":[987,966,346,312,655,652,635,815],"class_list":["post-5960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-tutorials","tag-apply","tag-data-transfer","tag-edit-mode","tag-modifiers","tag-uv-editing","tag-uv-editor","tag-uv-unwrapping","tag-uvmap"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5960","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=5960"}],"version-history":[{"count":30,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5960\/revisions"}],"predecessor-version":[{"id":7298,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5960\/revisions\/7298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/7299"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=5960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=5960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=5960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}