{"id":9640,"date":"2025-02-24T17:42:44","date_gmt":"2025-02-24T17:42:44","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=9640"},"modified":"2025-02-24T17:42:44","modified_gmt":"2025-02-24T17:42:44","slug":"fixing-curve-modifier-distortion","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/fixing-curve-modifier-distortion\/","title":{"rendered":"Fixing Curve Modifier Mesh\/Object Distortion"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 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-6a1ab332a5987\" 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-6a1ab332a5987\"  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\/fixing-curve-modifier-distortion\/#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\/fixing-curve-modifier-distortion\/#object-position\" >Object Position<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/fixing-curve-modifier-distortion\/#parent\" >Parent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/fixing-curve-modifier-distortion\/#instancing\" >Instancing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/fixing-curve-modifier-distortion\/#make-instance-real\" >Make Instance Real<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.katsbits.com\/codex\/fixing-curve-modifier-distortion\/#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\/VbhyOdPkruA?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>The <strong>Curve<\/strong> modifier is an effective way to quickly and uniformly position meshes along a curve or path that itself can be edited for broader control over objects. This technique however, does have a major drawback; objects directly linked to the path tend to distort or deform based on the paths shape and mesh placement along or around it. As this can&#8217;t be fixed directly <strong>proxy objects<\/strong> have to be used, which are instead set to follow the curve and absorb any distortion. When these proxies are then linked a &#8216;live&#8217; object they remain unaffected and display as they are.<\/p>\n<p><b>Duration<\/b>: total c. 15 mins (00:15: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 information about using Curves and correcting mesh\/object distortion;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"object-position\"><\/span>Object Position<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>To avoid issues positioning objects relative to a <strong>Curve<\/strong>, be sure that all objects use the same <strong>Origin<\/strong>, and that objects are also positioned relative to how they should appear &#8211; chain links for example, can be off-set [1] to define how they &#8216;link&#8217; together. Any off-set should be done in <strong>Edit Mode<\/strong>, moving the mesh not the Object &#8211; using an <strong>Array<\/strong> modifier to duplicate links does so relative to replicating the initial instance around a path not the &#8216;live&#8217; objects.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-mesh-offset.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-mesh-offset.jpg\" alt=\"Mesh Offset\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To avoid positional issues meshes can be offset [1] in <strong>Edit Mode<\/strong> so they are placed relative to each other.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"parent\"><\/span>Parent<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>When linking elements together be sure that <em>the object to be duplicated is <strong>parented to<\/strong> the proxy<\/em>; selection and <strong>Parent \u00bb Child<\/strong> order is important. When parenting then, <strong>select the mesh object first<\/strong> <em>then<\/em> <strong>Shift + click the proxy mesh<\/strong>. From the <strong>Object<\/strong> menu select <strong>Parent<\/strong>, <strong>Object<\/strong> &#8211; <strong><em>Object \u00bb Parent \u00bb Object<\/em><\/strong>. The relationship can be confirmed moving the proxy object, if set up correctly the &#8216;live&#8217; mesh will also move.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-parent.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-parent.jpg\" alt=\"Proxy Parent\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The order of selection is important for proxy mesh set up [2], the &#8216;live&#8217; object should be parented to the proxy before Parenting [3].<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"instancing\"><\/span>Instancing<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>When using a proxy mesh to follow a path, the addition of an <strong>Array<\/strong> modifier <em>will duplicate the proxies only<\/em> &#8211; the effect can only act on what it&#8217;s assigned to. To address this, once the &#8216;live&#8217; mesh is properly parented to the proxy, it can be repeated around the curve, per copy of the proxy, by enabling <strong>Instancing<\/strong> [4]. This renders an &#8216;instance&#8217; of the parented mesh on each proxy. With arrayed proxy selected, in <strong>Object Properties<\/strong> expand the options under <strong>Instancing<\/strong> and click <strong>Faces<\/strong> to enable &#8211; this is why a plain is used as the proxy so a single copy of the &#8216;live&#8217; object is rendered per mesh.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-instancing.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-instancing.jpg\" alt=\"Instancing Object\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Once the proxy objects have been set up, in <strong>Object Properties<\/strong>, enable <strong>Faces<\/strong> under <strong>Instancing<\/strong>. A single &#8216;instance&#8217; of the live object will appear on the proxy.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"make-instance-real\"><\/span>Make Instance Real<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>One of the issues using proxy&#8217;s is that instanced objects, or the overall collection of objects, can&#8217;t be independently edited without having to alter the underlying curve or path. So, in situations where objects might need to be animated, this might not be possible. In other words, <strong>Instancing<\/strong> is <em>generative<\/em>, data is being created on-the-fly, so needs to be &#8216;made real&#8217; to accommodate further editing or modification. Select the group to be converted and from the <strong>Object<\/strong> menu select <strong>Apply<\/strong>, then <strong>Make Instances Real<\/strong> [5] &#8211; <strong><em>Object \u00bb Apply \u00bb Make Instances Real<\/em><\/strong>. This essentially detaches the &#8216;live&#8217; objects from the proxy&#8217;s and converts them in to editable meshes [6].<\/p>\n<div style=\"background-color: #dedede; color: #000; width: 98.5%; padding: 1.0em;\"><strong>Aside<\/strong>: if objects are to be joined after being converted into editable meshes be sure to make each object &#8216;single user&#8217; to fully detach any linked data that might be associated with the objects. After being made real, from the <strong>Object<\/strong> menu select <strong>Relations<\/strong> then <strong>Make Single User<\/strong>, finally <strong>Object &#038; Data<\/strong> (or other appropriate option) &#8211; <strong><em>Object \u00bb Relations \u00bb Make Single User \u00bb Object &#038; Data<\/em><\/strong>.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-make-real.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/curve-proxy-make-real.jpg\" alt=\"Make Instance Real\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To edit instanced objects once positioned along a path they need to be &#8216;made real&#8217; [5], which will convert each copy into an independently editable mesh [6].<\/i><\/p><\/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; 00:00 : Overview &#038; Setup<br \/>\n &#8211; 03:00 : Proxy&#8217;s &#038; Modifiers<br \/>\n &#8211; 05:30 : Parent &#038; Instancing<br \/>\n &#8211; 09:00 : Make Real &#038; Single User<br \/>\n &#8211; 11:30 : Join<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":9641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,237,230],"tags":[771,935,194,710,639,633,570,716,312,776,890,1114],"class_list":["post-9640","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-misc3d","category-tutorials","tag-chain","tag-curves","tag-imvu","tag-instanced-user","tag-jewellery","tag-jewelry","tag-join","tag-make-single-user","tag-modifiers","tag-parent","tag-path","tag-proxy"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9640","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=9640"}],"version-history":[{"count":11,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9640\/revisions"}],"predecessor-version":[{"id":9653,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/9640\/revisions\/9653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/9641"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=9640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=9640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=9640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}