{"id":469,"date":"2025-11-20T15:39:20","date_gmt":"2025-11-20T04:39:20","guid":{"rendered":"https:\/\/snotgrl.xyz\/?p=469"},"modified":"2025-11-20T15:39:20","modified_gmt":"2025-11-20T04:39:20","slug":"3d-art-ssc-swallowtail-from-lancer","status":"publish","type":"post","link":"https:\/\/snotgrl.xyz\/?p=469","title":{"rendered":"3D art: SSC Swallowtail from &#8220;Lancer&#8221;"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-D.png\" alt=\"\" class=\"wp-image-471\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-D.png 640w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-D-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet-1024x576.png\" alt=\"\" class=\"wp-image-472\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet-1024x576.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet-300x169.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet-768x432.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet-1536x864.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2-1024x576.png\" alt=\"\" class=\"wp-image-473\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2-1024x576.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2-300x169.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2-768x432.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2-1536x864.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-datasheet2.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>its finished!!! man i always hate the last 10% but the result is so satisfying. i learned a lot with this project so i wanted to talk about it a little. =^w^=<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-timelapse.webm\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">first off, the cloth<\/h2>\n\n\n\n<p>there were several parts of this model like the legs, arms, the wrap around the gun barrel, and the &#8216;neck&#8217; which were made of soft materials. this is the sort of thing that doesn&#8217;t usually fall within the purview of &#8216;hard surface modelling&#8217; so i think its a sore spot for myself and many other hard surface enthusiasts.<\/p>\n\n\n\n<p>there were a few methods i could have used to create the cloth folds, like sculpting, a procedural shader, or a displacement map. after a few hours of trying stuff out making a displacement map in substance painter was the way to go. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"718\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-2.png\" alt=\"\" class=\"wp-image-476\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-2.png 599w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-2-250x300.png 250w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/figure>\n\n\n\n<p> i painted my displacement (height) map with a few layers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the pinches, where the cloth is drawn in and stretched around the seams. this is literally just perlin noise scaled to like 0.0001 along the y axis.<\/li>\n\n\n\n<li>the big folds, which are hand-painted. you can get some nice fabric folds by drawing lines and then erasing loosely around their edges.<\/li>\n\n\n\n<li>the non-aligned folds, which travel in whatever direction they like. these are just a texture i bought from artstation.<\/li>\n\n\n\n<li>the seams, where the heightmap approaches a value of 0, and all the previous layers are overwritten.<\/li>\n<\/ul>\n\n\n\n<p>pretty happy with the results. i was going to rig the loincloth looking thing, but it was so annoying that i decided to just manually adjust the mesh for each render (see below). these adjustments take about 3 minutes per render. very cheap, but this means the mesh can&#8217;t readily be used for animations. this is the sort of scope reduction that really really helps for intense long-term projects like this!!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"648\" height=\"802\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-3.png\" alt=\"\" class=\"wp-image-478\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-3.png 648w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-3-242x300.png 242w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">scene setup!<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day28-test_render_forest.png\" alt=\"\" class=\"wp-image-479\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day28-test_render_forest.png 960w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day28-test_render_forest-300x169.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day28-test_render_forest-768x432.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/figure>\n\n\n\n<p>at first i was going to pose the swallowtail inside a 3d scene of a forest, like this one i downloaded from polyhaven. however, for a raytraced render this multiplies the render time by like 300x. i&#8217;ve seen people say render time doesn&#8217;t matter outside of games since you only have to do it once, but honestly that&#8217;s missing context.<\/p>\n\n\n\n<p>a lot of scene setup is about adjusting the lighting, rendering, moving this thing just a smidge to the left, rendering, changing the focal length, rendering.. lots of tiny adjustments, and that render time becomes REALLY frustrating, so it&#8217;s important for me to be able to render quickly, almost realtime. then, for the final render, you can crank the settings and let it rip.<\/p>\n\n\n\n<p>with all that said, i instead decided to pick up some royalty free nature photographs and do my first VFX superimposition. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit-1024x683.png\" alt=\"\" class=\"wp-image-480\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit-1024x683.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit-300x200.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit-768x512.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit-1536x1024.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day29-test_composit.png 1620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>setting up shadow catchers and lighting&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1-1024x544.png\" alt=\"\" class=\"wp-image-483\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1-1024x544.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1-300x159.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1-768x408.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1-1536x816.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/alpha-1.png 1876w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>masking in the foreground&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30-1024x683.png\" alt=\"\" class=\"wp-image-481\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30-1024x683.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30-300x200.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30-768x512.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30-1536x1024.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day30.png 1620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>using a more realistic model to get a good reference&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33-1024x683.png\" alt=\"\" class=\"wp-image-484\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33-1024x683.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33-300x200.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33-768x512.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33-1536x1024.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day33.png 1620w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>render&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1-1024x683.png\" alt=\"\" class=\"wp-image-485\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1-1024x683.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1-300x200.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1-768x512.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1-1536x1024.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/swallowtail-C-1.png 1641w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>manual fixes in Krita and she&#8217;s done! this photo was cc0, so no credit required.. let&#8217;s try it again with a different background, from <a href=\"https:\/\/www.geograph.org.uk\/\" data-type=\"link\" data-id=\"https:\/\/www.geograph.org.uk\/\">geograph<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/shot_D.jpg\" alt=\"\" class=\"wp-image-486\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/shot_D.jpg 640w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/shot_D-300x225.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>thanks, Jon Wilkins! let&#8217;s set up a shadow catcher, this time we&#8217;ll make it bumpy to represent the grass.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5-1024x576.png\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5-1024x576.png 1024w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5-300x169.png 300w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5-768x432.png 768w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5-1536x864.png 1536w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/image-5.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>looking good. we can set the sun&#8217;s angular size to like 60 degrees to represent the overcast lighting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35.png\" alt=\"\" class=\"wp-image-490\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35.png 640w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>now we&#8217;ve composited everything&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35b.png\" alt=\"\" class=\"wp-image-492\" srcset=\"https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35b.png 640w, https:\/\/snotgrl.xyz\/wp-content\/uploads\/2025\/11\/day35b-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>render, and this time we don&#8217;t need manual adjustments. swell! to be honest, the forest shot looks better to me. it might be the high-contrast lighting that lends some credibility to the other render, whereas here in the irish(?) highlands EVERYTHING is very softly lit. oh well!<\/p>\n\n\n\n<p>i think that&#8217;s about everything. i could talk about the color space setup i worked with, but then we&#8217;d <em>both<\/em> die from boredom. i guess i&#8217;ll just mention that i used the AgX tonemapper for this project to give realistic results. thanks for stopping by! im off to go start my next project now o&#8217;w&#8217;o<\/p>\n","protected":false},"excerpt":{"rendered":"<p>its finished!!! man i always hate the last 10% but the result is so satisfying. i learned a lot with this project so i wanted to talk about it a little. =^w^= first off, the cloth there were several parts of this model like the legs, arms, the wrap around the gun barrel, and the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":470,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[18],"class_list":["post-469","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-3d"],"_links":{"self":[{"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/posts\/469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=469"}],"version-history":[{"count":3,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/posts\/469\/revisions"}],"predecessor-version":[{"id":493,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/posts\/469\/revisions\/493"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=\/wp\/v2\/media\/470"}],"wp:attachment":[{"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/snotgrl.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}