{"id":973,"date":"2025-06-01T23:52:29","date_gmt":"2025-06-01T23:52:29","guid":{"rendered":"https:\/\/colinmc.name\/e\/?page_id=973"},"modified":"2025-06-02T23:30:23","modified_gmt":"2025-06-02T23:30:23","slug":"steelpunk","status":"publish","type":"page","link":"https:\/\/colinmc.name\/e\/steelpunk\/","title":{"rendered":""},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull\" style=\"margin-top:0;margin-bottom:0;min-height:271px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"2611\" height=\"463\" class=\"wp-block-cover__image-background wp-image-977 size-full\" alt=\"\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1.webp\" data-object-fit=\"cover\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1.webp 2611w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1-300x53.webp 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1-1024x182.webp 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1-768x136.webp 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1-1536x272.webp 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TrainBanner-1-2048x363.webp 2048w\" sizes=\"auto, (max-width: 2611px) 100vw, 2611px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#382b2c\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-container-core-cover-is-layout-be04af43 wp-block-cover-is-layout-constrained\">\n<p class=\"has-text-align-center has-large-font-size\"><\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-cover has-custom-content-position is-position-top-center\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50)\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-100 has-background-dim\" style=\"background-color:#1e1e1e\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-374a404b wp-block-group-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-2d729e81 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#885b6e\" class=\"has-inline-color\">objective:<\/mark> environment render<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#885b6e\" class=\"has-inline-color\">client:<\/mark> personal project<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#885b6e\" class=\"has-inline-color\">process:<\/mark> blender geometry nodes<\/h2>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"\/>\n\n\n\n<p>I concepted a stylized, atmospheric cave environment for a fictional video game. This project focused on storytelling through environment, material language, and cinematic lighting, and was developed with animation and game production pipelines in mind.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-base-color has-alpha-channel-opacity has-base-background-color has-background is-style-dots\" style=\"margin-top:0;margin-bottom:0\"\/>\n\n\n\n<p>In the lore of the game, a group of rebels have spent years secretly rebuilding a scrappy steam locomotive beneath Steens Mountain in Oregon. The gameplay would see the player piloting it through a dystopic authoritarian landscape.<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-cover alignwide\" style=\"border-radius:0px;margin-top:0;margin-bottom:0;min-height:269px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" class=\"wp-block-cover__image-background wp-image-987 size-large\" alt=\"\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-1024x489.png\" data-object-fit=\"cover\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-1024x489.png 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-300x143.png 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-768x367.png 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-1536x734.png 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/TurbineLong-2048x979.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-black-background-color has-background-dim-40 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center has-x-large-font-size\">part 1: the turbine<\/h2>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-cover has-custom-content-position is-position-top-center\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);min-height:652px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-100 has-background-dim\" style=\"background-color:#1e1e1e\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-29c4b0f5 wp-block-group-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\n<p>This asset is a jet engine which has been converted into a geothermal power generator. Its design is heavily inspired by the J-58 Blackbird engine.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"\/>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text.webp\" data-lbwps-width=\"2260\" data-lbwps-height=\"1080\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"2260\" height=\"1080\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text.webp\" alt=\"\" class=\"wp-image-989\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text.webp 2260w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text-300x143.webp 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text-1024x489.webp 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text-768x367.webp 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text-1536x734.webp 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/Turbine_AO_text-2048x979.webp 2048w\" sizes=\"auto, (max-width: 2260px) 100vw, 2260px\" \/><\/a><\/figure>\n\n\n\n<p>I knew a huge part of the effectiveness of this model would come from the mess of pipes near the front, which would be a pain to model by hand (especially because I broke my wrist on my dominant hand). I decided use Blender&#8217;s procedural modeling tool, Geometry Nodes, to save time and pain.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior.webp\" data-lbwps-width=\"2239\" data-lbwps-height=\"797\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"365\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-1024x365.webp\" alt=\"\" class=\"wp-image-998\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-1024x365.webp 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-300x107.webp 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-768x273.webp 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-1536x547.webp 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeNodesInterior-2048x729.webp 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>I created a simple system which takes the edges of a model and converts them into pipes with randomized thicknesses. It&#8217;s nothing too fancy, but this experience indoctrinated me into the world of procedural modeling.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes.webp\" data-lbwps-width=\"3625\" data-lbwps-height=\"991\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"280\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-1024x280.webp\" alt=\"\" class=\"wp-image-990\" style=\"width:560px;height:auto\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-1024x280.webp 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-300x82.webp 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-768x210.webp 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-1536x420.webp 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PipeGeoNodes-2048x560.webp 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"\/>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-cover alignwide\" style=\"border-radius:0px;margin-top:0;margin-bottom:0;min-height:269px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"3419\" height=\"934\" class=\"wp-block-cover__image-background wp-image-1001 size-full\" alt=\"\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene.png\" data-object-fit=\"cover\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene.png 3419w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene-300x82.png 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene-1024x280.png 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene-768x210.png 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene-1536x420.png 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantTestScene-2048x559.png 2048w\" sizes=\"auto, (max-width: 3419px) 100vw, 3419px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#5e5e5e\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center has-x-large-font-size\">part 2: foliage<\/h2>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-cover has-custom-content-position is-position-top-center\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);min-height:652px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-100 has-background-dim\" style=\"background-color:#1e1e1e\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div class=\"wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-29c4b0f5 wp-block-group-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\n<p>I modeled all the foliage, starting with the moss because I knew it would be the hardest to get right. I initially used Blender&#8217;s particle system for this but I was unsatisfied with the level of control I had over how the moss was placed. This led me to design my own procedural system for spawning moss on a model.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16.png\" data-lbwps-width=\"2223\" data-lbwps-height=\"1084\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-1024x499.png\" alt=\"\" class=\"wp-image-1012\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-1024x499.png 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-300x146.png 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-768x374.png 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-1536x749.png 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-16-2048x999.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>As the project progressed I kept adding features to it and eventually it became a flexible tool for spawning <em>any plant <\/em>on <em>any surface<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/FoliageSpeedModel1.mp4\"><\/video><\/figure>\n\n\n\n<p>To make the plants appear 3D &#8211; even though they are made of planes to save on processing power &#8211; each plant has an edge mask used to generate a normal map which simulates surface details and affects how the object interacts with lighting. The result gives each leaf the illusion of depth.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"\/>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14.png\" data-lbwps-width=\"1501\" data-lbwps-height=\"622\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"424\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14-1024x424.png\" alt=\"\" class=\"wp-image-1008\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14-1024x424.png 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14-300x124.png 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14-768x318.png 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/image-14.png 1501w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1.png\" data-lbwps-width=\"2079\" data-lbwps-height=\"1059\" data-lbwps-srcsmall=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"522\" src=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-1024x522.png\" alt=\"\" class=\"wp-image-1006\" srcset=\"https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-1024x522.png 1024w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-300x153.png 300w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-768x391.png 768w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-1536x782.png 1536w, https:\/\/colinmc.name\/wp-content\/uploads\/2025\/06\/PlantsInCave-1-2048x1043.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"\/>\n<\/div>\n<\/div><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"wp-custom-template-banner-image","meta":{"footnotes":""},"class_list":["post-973","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/pages\/973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/comments?post=973"}],"version-history":[{"count":23,"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/pages\/973\/revisions"}],"predecessor-version":[{"id":1072,"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/pages\/973\/revisions\/1072"}],"wp:attachment":[{"href":"https:\/\/colinmc.name\/e\/wp-json\/wp\/v2\/media?parent=973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}