{"id":74597,"date":"2020-11-27T12:30:17","date_gmt":"2020-11-27T11:30:17","guid":{"rendered":"https:\/\/www.blender.org\/?p=74597"},"modified":"2024-08-13T12:10:08","modified_gmt":"2024-08-13T10:10:08","slug":"using-blender-in-game-development-by-embark","status":"publish","type":"post","link":"https:\/\/www.blender.org\/user-stories\/using-blender-in-game-development-by-embark\/","title":{"rendered":"Using Blender in Game Development, by Embark"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<?xml encoding=\"utf-8\"?><html><body><p>Originally shared by <a href=\"https:\/\/www.embark-studios.com\/\">Embark Studios<\/a> on <a href=\"https:\/\/medium.com\/embarkstudios\/using-blender-in-game-development-e52b1c98b7e6\">their blog<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\">\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><em>At Embark we use&nbsp;<\/em><a href=\"https:\/\/www.blender.org\/\"><strong><em>Blender<\/em><\/strong><\/a><em>&nbsp;across the studio as our go-to tool for 3D and environment art. Just now, we also renewed our gold-level sponsorship of the&nbsp;<\/em><a href=\"https:\/\/fund.blender.org\/\"><em>Blender Development Fund<\/em><\/a><em>&nbsp;another year. In this post,&nbsp;<\/em><a href=\"https:\/\/twitter.com\/3DBystedt\"><em>Daniel Bystedt<\/em><\/a><em>&nbsp;details why Blender is great for game development and lets you in on a specific use-case.<\/em><\/p><\/blockquote>\n\n\n\n<p><\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025960b89\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025960b89\" class=\"wp-block-image size-large is-style-default rounded wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/embark_01.gif\" alt=\"Hair rendered in Blender&rsquo;s real-time render engine Eevee. The character here is procedurally generated from a scan data set.\" class=\"wp-image-74598\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption>Hair rendered in Blender&rsquo;s <a href=\"https:\/\/docs.blender.org\/manual\/en\/latest\/render\/eevee\/introduction.html\"><strong>real-time render engine Eevee<\/strong><\/a>. The character here is procedurally generated from a scan data set.<br><\/figcaption><\/figure>\n\n\n\n<p id=\"62b5\">My own history with Blender dates back to 2015. Blender has evolved tons since, but even back then I was surprised to find how capable this free software was, with its fantastic modeling toolset and non-destructive modifier system.<\/p>\n\n\n\n<p id=\"75ba\">It made me fall back in love with 3D modeling again, and soon upon discovering Blender, I found myself using it for most of my tasks. Over time, I also became an active member of the Blender community. Nowadays, I&rsquo;m involved in some of Blender&rsquo;s development processes as a commissioner for various projects.<\/p>\n\n\n\n<p id=\"8aca\">Embark&rsquo;s&nbsp;<a href=\"https:\/\/medium.com\/embarkstudios\/a-love-letter-to-blender-e54167c22193\">embrace of Blender<\/a>&nbsp;was in fact how I discovered this studio in the first place and a big reason why I work here today (in addition to our work with machine learning and proceduralism). At Embark, we&rsquo;re constantly looking for&nbsp;<a href=\"https:\/\/medium.com\/embarkstudios\/the-content-revolution-to-come-f2432dc6a434\">new and effective tools and solutions to solve problems<\/a>, and Blender truly speaks to what sort of studio we want to be. As a free and open-source tool, it also contributes to making game development more accessible and collaborative.<\/p>\n\n\n\n<p id=\"5a0e\">Given that Blender is an unfamiliar tool for many of our new artists, we&rsquo;ve been working actively to make sure everyone here gets the know-how and support they need to quickly get up to speed. Many who were skeptics at first are now some of our most active Blender advocates, which has been fun to watch!<\/p>\n\n\n\n<p id=\"e8b2\">As we celebrate our first year as a Blender sponsor, we wanted to share some of this know-how with all of you in the Blender community too. So in this post, I&rsquo;m going to describe to you in a bit more detail some of the specific reasons we think Blender is great for game development, and describe a specific use-case, as we&rsquo;re now working on our first games.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-dots\">\n\n\n\n<p id=\"ddd3\">So let&rsquo;s get into it.<\/p>\n\n\n\n<p id=\"479e\">Blender has a lot of amazing features, but some of the most important ones for us at Embark is the&nbsp;<strong>approachable and non-destructive modeling tools and modifiers<\/strong>. The realtime viewport Eevee is also priceless when it comes to evaluating your model and textures before importing them into&nbsp;<a href=\"https:\/\/www.unrealengine.com\/\"><em>Unreal Engine<\/em><\/a>. We also love Blender&rsquo;s constant updates and development cycle and that the Blender Foundation is so transparent about its development process.<\/p>\n\n\n\n<p id=\"5433\">Blender is also very<strong>&nbsp;pipeline-friendly<\/strong>&nbsp;and allows us to effortlessly implement tools and applications into our pipeline. Blenders&rsquo; data management of file content provides flexibility<\/p>\n\n\n\n<p id=\"51a1\">Blender allows any type of data to be stored on almost all types of data types inside the file. Custom properties can be stored on scenes, objects, meshes, collections, etc. Custom properties can hold basically any type of data such as float, string, list, dictionaries, and more.<\/p>\n\n\n\n<p id=\"1b3c\">For example: switching to the scripting tab and writing this example in the python console in Blender<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bpy.context.active_object['my_string_property'] = \"&lt;3 Blender\"<\/pre>\n\n\n\n<p id=\"5756\">will give you a custom string property on the active object, that you can expose in object properties or by investigating the outliner with display mode: &ldquo;Data API&rdquo;.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a902596150f\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a902596150f\" class=\"wp-block-image size-large is-style-default wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"516\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/embark_02.jpeg\" alt=\"\" class=\"wp-image-74603\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/embark_02.jpeg 875w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/embark_02-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/embark_02-768x453.jpeg 768w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Blender uses a lot of mesh component data for vertex groups, bevel weights, and creasing weights. By collecting this per-vertex\/edge\/polygon data and store it into a custom object property, we can export the objects using the FBX or ALEMBIC file formats (note: ALEMBIC supports custom properties as of Blender 2.91). The files can then be opened in&nbsp;<a href=\"https:\/\/www.sidefx.com\/products\/houdini\/\"><em>Houdini<\/em><\/a>&nbsp;and then we can do operations by using the vertex\/edge\/polygon data.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-dots\">\n\n\n\n<a href=\"#creating-real-time-hair-in-blender\" class=\"is-heading-anchor\"><h3 class=\"wp-block-heading\" id=\"creating-real-time-hair-in-blender\">Creating real-time hair in Blender<\/h3><\/a>\n\n\n\n<p id=\"9ef9\">So let&rsquo;s discuss a specific Blender use-case for us here at Embark: how we use Blender to create real-time hair.<\/p>\n\n\n\n<p id=\"b4ba\">Blender offers the ability to do modeling, texturing, shading, and also display your work in a high-quality real-time rendering viewport. Therefore, it&rsquo;s a great tool for creating hair, both for the classic hair-card approach, but also for importing grooms into Unreal when exported as a curve object with multiple splines to Alembic.<\/p>\n\n\n\n<p id=\"5acc\">When creating the texture for hair cards, we create a strip of hair on a slanted plane. The grooming tools in Blender is really nice and are easy to use:<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025961e80\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025961e80\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1280x755.jpeg\" alt=\"\" class=\"wp-image-74610\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"81bf\">We then layout the hair strips on a grid. The hair shader that we later use in Blender and Unreal can dynamically change UV mapping to adjust to the number of rows and columns used in the hair card texture. This way we can easily change the hair texture on any character in the game engine.<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025962507\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025962507\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1-1280x755.jpeg\" alt=\"\" class=\"wp-image-74611\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-1.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"dcc5\">The hair is then rendered out from an orthographic camera and the different shading attributes such as normals, opacity, random strand value and specular can be packed into the RGB channels of one or multiple textures.<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025962ba4\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025962ba4\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-2-1280x755.jpeg\" alt=\"\" class=\"wp-image-74612\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-2-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-2-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-2-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-2.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"2065\">The hair particle system is placed on a hair cap on the character. Using a hair cap makes it easier to keep a repository of hairstyles.<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025963235\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025963235\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-3-1280x755.jpeg\" alt=\"\" class=\"wp-image-74613\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-3-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-3-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-3-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-3.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"87db\">The geometry of a basic hair-strip looks like this (the UV is normalized):<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025963844\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025963844\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-4-1280x755.jpeg\" alt=\"\" class=\"wp-image-74614\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-4-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-4-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-4-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-4.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"e1de\">Using a particle instance modifier on the hair card geometry and pointing the modifier&rsquo;s object value to the hair-cap and particle system will instance and deform the hair card to each hair curve in the hair particle system.<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025964048\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025964048\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-5-1280x755.jpeg\" alt=\"\" class=\"wp-image-74615\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-5-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-5-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-5-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-5.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"eee7\">Hair cards can be reduced and triangulated in a non-destructive workflow using modifiers:<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025964684\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025964684\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"755\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-6-1280x755.jpeg\" alt=\"\" class=\"wp-image-74616\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-6-1280x755.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-6-512x302.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-6-768x453.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-6.jpeg 1400w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p id=\"404b\">Viewing the hair in the real-time rendering viewport Eevee can give you a great idea of how the result will look in the game engine.<\/p>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025964875\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025964875\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-1280x720.jpeg\" alt=\"\" class=\"wp-image-74617\" srcset=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-1280x720.jpeg 1280w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-512x288.jpeg 512w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-768x432.jpeg 768w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-1536x864.jpeg 1536w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7-480x270.jpeg 480w, https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image-7.jpeg 1920w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context='{\"imageId\":\"69a9025964e6b\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"69a9025964e6b\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.blender.org\/wp-content\/uploads\/2020\/11\/image.gif\" alt=\"\" class=\"wp-image-74618\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption>Wireframe rendering of the hair geometry<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Watch Daniel Bystedt showcase this workflow on Blender Today Live #129<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube container wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"HAIR for AAA GAMES #129 | Blender.Today LIVE\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/oqjKMd9CYI4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator\">\n\n\n\n<p><a href=\"https:\/\/www.embark-studios.com\/\" data-type=\"URL\" data-id=\"https:\/\/www.embark-studios.com\/\">Embark Studios<\/a> is a corporate member of the Blender Development Fund.<\/p>\n\n\n\n<div class=\"wp-block-group rounded p-4 mt-5 has-very-light-gray-background-color has-text-color has-background\" style=\"color:#6a8295\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"pb-0 mb-0 has-medium-font-size\"><strong>What is the Blender Development Fund?<\/strong><\/p>\n\n\n\n<p class=\"has-normal-font-size\">The <a href=\"https:\/\/fund.blender.org\/\">Blender Development Fund<\/a> accepts donations to support activities to provide free and open accessible services for all Blender contributors &ndash; including professionals and corporations &ndash; on the blender.org websites. Support activities include bug fixing, code reviews, technical documentation and onboarding.<br><br>The fund will also provide grants and subsidies to developers on generic and widely agreed development projects.<\/p>\n\n\n\n<p class=\"has-normal-font-size\">Learn more at <a href=\"https:\/\/fund.blender.org\/\">fund.blender.org<\/a><\/p>\n<\/div><\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Embark uses Blender across the studio as their go-to tool for 3D and environment art. <\/p>\n","protected":false},"author":2,"featured_media":74617,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[35],"tags":[130],"class_list":["post-74597","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-user-stories","tag-devfund"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/posts\/74597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/comments?post=74597"}],"version-history":[{"count":10,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/posts\/74597\/revisions"}],"predecessor-version":[{"id":76191,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/posts\/74597\/revisions\/76191"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/media\/74617"}],"wp:attachment":[{"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/media?parent=74597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/categories?post=74597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blender.org\/wp-json\/wp\/v2\/tags?post=74597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}