<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="https://digitalproduction.com/wp-content/plugins/xslt/public/template.xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:rssFeedStyles="http://www.wordpress.org/ns/xslt#"
>

<channel>
	<title>particle system - DIGITAL PRODUCTION</title>
	<atom:link href="https://digitalproduction.com/tag/particle-system/feed/" rel="self" type="application/rss+xml" />
	<link>https://digitalproduction.com</link>
	<description>Magazine for Digital Media Production</description>
	<lastBuildDate>Thu, 13 Nov 2025 09:37:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">236729828</site>	<item>
		<title>Moho 14.4 Goes on a Side Quest: 2D Meets Game Engines</title>
		<link>https://digitalproduction.com/2025/11/14/moho-14-4-goes-on-a-side-quest-2d-meets-game-engines/</link>
		
		<dc:creator><![CDATA[Bela Beier]]></dc:creator>
		<pubDate>Fri, 14 Nov 2025 08:00:00 +0000</pubDate>
				<category><![CDATA[topnews]]></category>
		<category><![CDATA[2D animation]]></category>
		<category><![CDATA[360 Smart Bones]]></category>
		<category><![CDATA[Animation Software]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[glTF export]]></category>
		<category><![CDATA[Godot]]></category>
		<category><![CDATA[Lost Marble]]></category>
		<category><![CDATA[Moho]]></category>
		<category><![CDATA[particle system]]></category>
		<category><![CDATA[Update]]></category>
		<guid isPermaLink="false">https://digitalproduction.com/?p=225467</guid>

					<description><![CDATA[<div style="margin: 5px 5% 10px 5%;"><img src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image30.webp?fit=1200%2C911&quality=72&ssl=1" width="1200" height="911" title="" alt="A 3D model of a stylized gorilla with exaggerated features, displayed in Blender software. The gorilla has a surprised expression, featuring large eyes, a pronounced jaw, and a fur coat. The user interface of Blender shows various tools and options beside the model." /></div><div><p>Lost Marble’s Moho 14.4 “Side Quest” links 2D animation with game engines via glTF export, plus Smart Bones in 360°, smarter particles, and smoother strokes.</p>
<p>The post <a href="https://digitalproduction.com/2025/11/14/moho-14-4-goes-on-a-side-quest-2d-meets-game-engines/">Moho 14.4 Goes on a Side Quest: 2D Meets Game Engines</a> first appeared on <a href="https://digitalproduction.com">DIGITAL PRODUCTION</a> and was written by <a href="https://digitalproduction.com/author/qualityjellyfish45275761d0/">Bela Beier</a>. </p></div>]]></description>
										<content:encoded><![CDATA[<div style="margin: 5px 5% 10px 5%;"><img src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image30.webp?fit=1200%2C911&quality=72&ssl=1" width="1200" height="911" title="" alt="A 3D model of a stylized gorilla with exaggerated features, displayed in Blender software. The gorilla has a surprised expression, featuring large eyes, a pronounced jaw, and a fur coat. The user interface of Blender shows various tools and options beside the model." /></div><div><div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:242,&quot;href&quot;:&quot;https:\/\/www.lostmarble.com&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250925190114\/https:\/\/lostmarble.com\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-27 13:09:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-30 14:13:39&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-04 06:34:42&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-20 09:15:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-24 07:41:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-27 13:50:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-04 00:08:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-09 09:10:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 19:12:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-16 12:58:17&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 11:52:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 01:48:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-02 03:18:43&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-07 06:22:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 15:03:52&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-17 13:32:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-25 02:53:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-29 16:34:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-02 06:25:33&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-08 11:46:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-14 06:37:29&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-14 06:37:29&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p class="wp-block-paragraph">Lost Marble’s <em>Moho 14.4</em> update, charmingly titled “Side Quest,” arrives as a free upgrade for all Moho 14 owners. It’s more than a maintenance patch, it’s an expansion that connects 2D animation workflows to 3D pipelines and game engines via native glTF/GLB export.</p>



<p class="wp-block-paragraph">The new exporter allows animators to bring Moho rigs, skeletons, and animation directly into <a href="https://digitalproduction.com/tag/unreal/" title="Unreal">Unreal Engine</a>, <a href="https://digitalproduction.com/tag/unity/" title="unity">Unity</a>, or <a href="https://digitalproduction.com/tag/godot/" title="Godot">Godot</a>, as well as 3D applications such as Blender. For production artists juggling both dimensions, this means Moho’s bone-based 2D animation can now live inside fully interactive environments without tedious conversion work.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe class="youtube-player" width="1200" height="675" src="https://www.youtube.com/embed/NOS5VdiCBu4?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<h3 id="the-gltf-portal" class="wp-block-heading"><strong>The glTF Portal</strong></h3>



<p class="wp-block-paragraph">At the centre of the Side Quest update lies the new glTF/GLB exporter. It preserves key rigging data such as bones, mainline animation, Smart Bones, Dynamic Bones, and Actions and transforms them into reusable animation clips ready for playback inside real-time engines. Each <em>Action</em> created in Moho, such as walk, jump or idle, is saved into the glTF file as independent animation data, making it possible to drive game character behaviour through player input.</p>



<figure class="wp-block-image"><img data-recalc-dims="1"  fetchpriority="high"  decoding="async"  width="1200"  height="1007"  sizes="(max-width: 1200px) 100vw, 1200px"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image43.png?resize=1200%2C1007&#038;quality=72&#038;ssl=1"  alt="https://cdn.shopify.com/s/files/1/0552/8741/4966/files/image43.png?v=1762773703"  class="wp-image-225483" ></figure>



<p class="wp-block-paragraph">Smart Bones, Moho’s custom rigging controls that manipulate complex deformations, now translate into Morph Targets (also known as Shape Keys) on export. This mapping ensures expressive deformations, like mouth shapes or limb warps, survive the jump into 3D software. Lost Marble notes that while not all Moho features are supported by glTF, the exporter retains the most essential rigging and animation data for cross-environment use.</p>



<figure class="wp-block-image"><img data-recalc-dims="1"  decoding="async"  width="1200"  height="230"  sizes="(max-width: 1200px) 100vw, 1200px"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image62.png?resize=1200%2C230&#038;quality=72&#038;ssl=1"  alt="https://cdn.shopify.com/s/files/1/0552/8741/4966/files/image62.png?v=1762773703"  class="wp-image-225485" ></figure>



<h3 id="smart-bones-go-360" class="wp-block-heading"><strong>Smart Bones Go 360°</strong></h3>


<div class="wp-block-image">
<figure class="alignright"><img data-recalc-dims="1"  decoding="async"  width="375"  height="395"  sizes="(max-width: 1200px) 100vw, 1200px"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image19.gif?resize=375%2C395&#038;ssl=1"  alt="https://cdn.shopify.com/s/files/1/0552/8741/4966/files/image19.gif?v=1762773703"  class="wp-image-225487" ></figure>
</div>


<p class="wp-block-paragraph">Beyond the export layer, <em>Moho 14.4</em> introduces a new 360° Smart Bone type. If a bone rotation reaches exactly 360 degrees, Moho automatically identifies it as a full-rotation Smart Bone, enabling artists to control the appearance of artwork at any viewing angle. That means animators can now smoothly rotate limbs, faces, or even entire character poses around a full turn, which is ideal for complex movements such as spins or walk cycles that require full rotational control.</p>



<p class="wp-block-paragraph"></p>



<h3 id="particles-behaving-better" class="wp-block-heading"><strong>Particles Behaving Better</strong></h3>


<div class="wp-block-image">
<figure class="alignleft"><img data-recalc-dims="1"  decoding="async"  width="366"  height="182"  sizes="(max-width: 1200px) 100vw, 1200px"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image35.gif?resize=366%2C182&#038;ssl=1"  alt="https://cdn.shopify.com/s/files/1/0552/8741/4966/files/image35.gif?v=1762773703"  class="wp-image-225486" ></figure>
</div>


<p class="wp-block-paragraph">Particle simulation sees a notable upgrade. Particles can now follow curve-based source layers, creating organic arrangements such as hair strands, tentacles, or tails. A new playback offset lets artists stagger particle timing to produce natural wave-like motion. Distribution has been improved to eliminate uneven gaps, and Moho now allows particle interpolation at variable frame intervals (1s, 2s, 3s, or custom) supporting both traditional and stylised timing.</p>



<h3 id="workflow-polishing-and-quality-of-life-fixes" class="wp-block-heading"><strong>Workflow Polishing and Quality-of-Life Fixes</strong></h3>



<p class="wp-block-paragraph">The Side Quest update doesn’t stop at headline features. Lost Marble has tweaked dozens of small but significant details that make day-to-day work smoother. Freehand strokes are now more stable and visually consistent, with an improved smoothing algorithm and consolidated undo steps for pen input. Layer caching has been refined, reducing redraw lag when editing complex scenes. Vector layers now cache even when influenced by bones, and timeline zoom levels persist between sessions. Layer selection, particle rendering on macOS, and PSD import behaviour have all been cleaned up. Undo behaviour, motion blur logic, and bone visibility in Vitruvian rigs have been refined, while Moho’s scripting API gains new Lua functions for developers. New device presets have also been added for TourBox and Xencelabs Quick Keys, expanding the software’s hardware compatibility out of the box.</p>



<figure class="wp-block-image"><img data-recalc-dims="1"  decoding="async"  width="1200"  height="1112"  sizes="(max-width: 1200px) 100vw, 1200px"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image17.png?resize=1200%2C1112&#038;quality=72&#038;ssl=1"  alt="https://cdn.shopify.com/s/files/1/0552/8741/4966/files/image17.png?v=1762773702"  class="wp-image-225484" ></figure>



<h3 id="styling-simplified" class="wp-block-heading"><strong>Styling, Simplified</strong></h3>



<p class="wp-block-paragraph">A small but welcome improvement: users can now create a new Style directly from an existing shape. Instead of defining styles before drawing, artists can select any shape and automatically group others sharing its visual properties like fill, line, width, and brush. This makes it trivial to recolour or globally adjust line attributes across entire characters, without manual layer-hunting.</p>



<h3 id="a-long-list-of-fixes-and-a-few-quiet-triumphs" class="wp-block-heading"><strong>A Long List of Fixes, and a Few Quiet Triumphs</strong></h3>



<p class="wp-block-paragraph">The update also addresses long-standing quirks such as accidental timeline drags, over-sensitive pen inputs, and incorrect particle rendering on macOS. Multi-threaded rendering now supports higher resolutions, and Liquid Shapes gain an obscure but potentially life-saving correction script.</p>



<p class="wp-block-paragraph">These aren’t glamorous additions, but for working animators, stability improvements often matter more than new toys and Lost Marble’s changelog reads like a response to real production feedback.</p>



<h3 id="pricing-and-availability" class="wp-block-heading"><strong>Pricing and Availability</strong></h3>



<p class="wp-block-paragraph"><em>Moho Pro 14</em> retails for USD $399.99, and <em>Moho Debut 14</em> for USD $59.99. The Side Quest 14.4 update is free for all Moho 14 owners, available now through the Lost Marble website or via Moho’s in-app update check. As always, users should verify compatibility within their specific production pipelines before deploying it in live projects.</p>



<p class="wp-block-paragraph"><br /><a href="https://www.lostmarble.com">Lost Marble Official Announcement: Moho 14.4 Side Quest</a></p><p>The post <a href="https://digitalproduction.com/2025/11/14/moho-14-4-goes-on-a-side-quest-2d-meets-game-engines/">Moho 14.4 Goes on a Side Quest: 2D Meets Game Engines</a> first appeared on <a href="https://digitalproduction.com">DIGITAL PRODUCTION</a> and was written by <a href="https://digitalproduction.com/author/qualityjellyfish45275761d0/">Bela Beier</a>. </p></div>]]></content:encoded>
					
		
		
		<enclosure url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image30.webp?fit=1999%2C1517&#038;quality=72&#038;ssl=1" length="147196" type="image/jpg" />
<media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image30.webp?fit=1200%2C911&#038;quality=72&#038;ssl=1" width="1200" height="911" medium="image" type="image/jpeg">
	<media:copyright>DIGITAL PRODUCTION</media:copyright>
	<media:title></media:title>
	<media:description type="html"><![CDATA[A 3D model of a stylized gorilla with exaggerated features, displayed in Blender software. The gorilla has a surprised expression, featuring large eyes, a pronounced jaw, and a fur coat. The user interface of Blender shows various tools and options beside the model.]]></media:description>
</media:content>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2025/11/image30.webp?fit=1200%2C911&#038;quality=72&#038;ssl=1" width="1200" height="911" />
<post-id xmlns="com-wordpress:feed-additions:1">225467</post-id>	</item>
		<item>
		<title>Your own particle system with simulation nodes</title>
		<link>https://digitalproduction.com/2023/08/10/your-own-particle-system-with-simulation-nodes/</link>
		
		<dc:creator><![CDATA[Gottfried Hofmann]]></dc:creator>
		<pubDate>Thu, 10 Aug 2023 08:41:00 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[Blender particle simulation]]></category>
		<category><![CDATA[Blender real-time graphics]]></category>
		<category><![CDATA[Cloth]]></category>
		<category><![CDATA[custom particle effects]]></category>
		<category><![CDATA[DP logo animation]]></category>
		<category><![CDATA[DP2304]]></category>
		<category><![CDATA[fire simulation]]></category>
		<category><![CDATA[geometry nodes]]></category>
		<category><![CDATA[Geometry Nodes baking]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[particle system]]></category>
		<category><![CDATA[procedural animation]]></category>
		<category><![CDATA[Simulation Zone]]></category>
		<category><![CDATA[simulation-based effects]]></category>
		<category><![CDATA[soft body simulation]]></category>
		<category><![CDATA[subscribers]]></category>
		<category><![CDATA[Turbulence simulation]]></category>
		<guid isPermaLink="false">https://digitalproduction.com/?p=156111</guid>

					<description><![CDATA[<div style="margin: 5px 5% 10px 5%;"><img src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/aufhaenger.jpg?fit=1200%2C675&quality=80&ssl=1" width="1200" height="675" title="" alt="" /></div><div><p>The Digital Production logo has been through a lot recently. It was thrown in Houdini with a wet towel and turned to earth in Tyflow. And now it is<br />
set on fire in Blender - where will it end?</p>
<p>The post <a href="https://digitalproduction.com/2023/08/10/your-own-particle-system-with-simulation-nodes/">Your own particle system with simulation nodes</a> first appeared on <a href="https://digitalproduction.com">DIGITAL PRODUCTION</a> and was written by <a href="https://digitalproduction.com/author/gottfriedhofmann/">Gottfried Hofmann</a>. </p></div>]]></description>
										<content:encoded><![CDATA[<div style="margin: 5px 5% 10px 5%;"><img src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/aufhaenger.jpg?fit=1200%2C675&quality=80&ssl=1" width="1200" height="675" title="" alt="" /></div><div><p class="wp-block-paragraph">There are features in Blender that users have been waiting decades for. Until now, these have included a new particle system developed from scratch. In Blender 3.6, an alternative to the outdated, conventional particles is now finally available: The &#8220;Simulation Area&#8221; in the Geometry Nodes. As a side effect, not only particles can be simulated, but also cloth, soft bodies, etc. However, you still have to create the simulation manually from scratch. And that&#8217;s what we&#8217;re going to do in this article using a particle system as an example.</p>



<h2 id="burn-logo-burn" class="wp-block-heading">Burn, logo, burn!</h2>



<p class="wp-block-paragraph">As a concrete example, an object should burst into flames, because the fire simulation in Blender also has its quirks, so we use an old-school particle simulation for a stylised fire effect. The Digital Production logo serves as an example object, but you can use any other 3D object.<br /></p>



<h2 id="what-actually-is-a-simulation-in-blender" class="wp-block-heading">What actually is a Simulation in Blender?</h2>



<p class="wp-block-paragraph">In Blender, all processes whose state in a frame depends on the state in the previous frame are a simulation.<br />This classically includes particles, Cloth, Soft Bodies, Rigid Bodies, Fire, Water, Smoke and the Blender speciality &#8220;Dynamic Paint&#8221;. On the other hand, there are tools such as the modifiers from the &#8220;Modify&#8221;, &#8220;Generate&#8221; and &#8220;Deform&#8221; categories as well as<br />geometry Nodes, where each frame can be each frame is independent of the others.</p>



<h2 id="simulation-zone" class="wp-block-heading">Simulation Zone</h2>



<p class="wp-block-paragraph">In Blender 3.6, you can now set up a so-called &#8220;Simulation Zone&#8221; in these geometry nodes zone&#8221;, which is the area in which the simulations run. You can visualise this as follows. At the input of the simulation zone you can feed in data. These are read out once and remain in the simulation zone from then on Simulation zone.  Processed data can be output. These are then fed back into the simulation in the next frame via sent back to the simulation zone via the input and can be further processed there. This can be the position of a particle, but also its size or any other property size or any other property, which can be accessed with Geometry Nodes. Changing the size with the lifetime of a particle, for example, was previously not possible at all. Thanks to geometry nodes, we now have almost complete freedom when it comes to the structure of particle systems. However, this is still accompanied by the requirement that you have to create everything yourself. On the geometry node side, Blender 3.6 only offers the simulation zone and the associated features such as baking, but not yet any high-level tools such as emitters or force fields. These will probably be delivered in the future as nodegroup assets similar to the hair assets that have found their way into Blender 3.5. Until then, however, manual work is the order of the day.</p>



<h2 id="create-a-new-scene-and-leave-the-default-cube" class="wp-block-heading">Create a new scene and leave the default cube</h2>



<p class="wp-block-paragraph"><br />Leave the default cube alive for a change. It should act as a  container for our particle system. It is best to give it a suitable name such as &#8220;Particle Nodes Container&#8221; using the shortcut F2. Then switch to the Geometry Nodes workspace and click on &#8220;New&#8221; to create a new node tree. Assign a suitable name here too, such as &#8220;Fire Particle System&#8221;.</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" height="880" width="1200"  decoding="async"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/mein-erstes-partikelsystem.jpg?resize=1200%2C880&#038;quality=80&#038;ssl=1"  alt=""  class="wp-image-156124" ><figcaption class="wp-element-caption">My first particle system: the &#8220;Hello World&#8221; of particle systems, so to speak. Particles are distributed on the faces of the cube, which fly upwards in the following frames thanks to the offset in the set position node.</figcaption></figure>



<p class="wp-block-paragraph"></p>



<h2 id="enter-the-zone" class="wp-block-heading">Enter the Zone</h2>



<p class="wp-block-paragraph">Use &#8220;Shift A &#8211; Simulation &#8211; Simulation Zone&#8221; to create a sub-zone in which the simulation will take place later. This is highlighted in burgundy and has its own input and output. If nodes are interposed, the highlighted area becomes larger. Nodes that are located within it have access to simulation data and are themselves part of the Simulation. Nodes from outside can be connected to the nodes in the zone, but then have no access to the simulation themselves, which will prove to be practical later on.</p>



<h2 id="distribute-points-on-surfaces" class="wp-block-heading">Distribute points on surfaces</h2>



<p class="wp-block-paragraph">A particle system is based on points, so our first task is to add them. For now, the geometry of the default cube will serve as the emitter. Add a &#8220;Point &#8211; Distribute Points on Faces&#8221; node and place it between the geometry inputs and outputs of the simulation zone. Nothing should happen yet, however, as the simulation zone is not yet connected to anything. Drag the geometry output of the simulation output node to the geometry input of the group output node and the geometry input of the group input node to the input of the simulation input node with the same name. If the playhead in the timeline is set to frame 1, points should now appear in the viewport.</p>



<h2 id="set-in-motion" class="wp-block-heading">Set in motion</h2>



<p class="wp-block-paragraph">However, the dots are not yet moving, i.e. we have a particle system but not yet a simulation. A node that changes or updates the position of the particles in each frame is still missing. Add a &#8220;Geometry &#8211; Write &#8211; Set Position&#8221; node and place it between the Points output of the Distribute Points on Faces node and the Geometry input of the Simulation Output node. Under &#8220;Offset&#8221;, set the value for Z to 0.1. If you now start the animation from frame 1, the particles move upwards at a constant speed, as 0.1 is added to the Z position in each frame.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" height="599" width="1200"  decoding="async"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2023/08/mein-besseres-partikelsystem.jpg?resize=1200%2C599&#038;quality=80&#038;ssl=1"  alt=""  class="wp-image-156137" ><figcaption class="wp-element-caption">My better particle system: With just a few nodes, we were able to create a particle system with animatable emission.</figcaption></figure>



<p class="wp-block-paragraph"></p>



<h2 id="my-first-particle-system" class="wp-block-heading">My first Particle system</h2>



<p class="wp-block-paragraph">Congratulations, you have just created your first own particle system with the Blender Simulation Nodes. It consists of an emitter that distributes particles on the surfaces of the input object. These particles are shifted upwards by a constant factor in each frame. The structure corresponds to a legacy blender particle system in which the start and end of the particle emission fall on the same frame.</p>



<h2 id="influence-from-outside" class="wp-block-heading">Influence from outside</h2>



<p class="wp-block-paragraph">Another typical way of emitting particles is recurring emission over several frames, a kind of inflow object. This is also the default setting of the legacy particle system. In the simulation nodes, we have to regularly add new particles from outside the simulation area. This requires an additional object. At this point, the previous cube becomes the container of the particle system and another object takes on the role of the emitter.</p>



<h2 id="its-a-logo" class="wp-block-heading">It&#8217;s a logo!</h2>



<p class="wp-block-paragraph">In our example, we use the DP logo, but you can use any mesh objects. Add an &#8220;Input &#8211; Scene &#8211; Object Info&#8221; node. This has an orange input socket. Connect it to the empty socket of the group input node. An input field for objects now appears in the modifier. You can name it by opening the sidebar in the Node Editor with the N key and entering a suitable name such as &#8220;Emitter Object&#8221; in the Group tab under &#8220;Inputs&#8221;. You can even define a tooltip here.</p>



<h2 id="degraded-to-a-mere-container" class="wp-block-heading">Degraded to a mere container </h2>



<p class="wp-block-paragraph">Switch the object info node to &#8220;Relative&#8221; so that the points also appear in the correct position later if you move, scale or rotate the object. Then connect the geometry output to the mesh input of the Distribute Points on Faces node and disconnect the geometry input of the Simulation Input node. This cuts the connection to the original geometry of the cube; it is now just a container for the simulation.</p>



<h2 id="union" class="wp-block-heading">Union</h2>



<p class="wp-block-paragraph">Add an object of your choice to the scene and select it in the Geometry Nodes modifier of the container. If you now play the animation from frame one using the space bar, particles will only appear once again. In order for the emitter to emit particles permanently, the newly added points must be merged with the existing ones in each step.<br />Add a &#8220;Geometry &#8211; Join Geometry&#8221; node and place it on the connection between &#8220;Distribute Points on Face&#8221; and &#8220;Set Position&#8221;. The Join Geometry node has a slightly elongated input socket. This illustration is intended to indicate that any number of nodes can be plugged in here. Connect the geometry output of the simulation input node to it.</p>



<h2 id="randomness-at-any-time" class="wp-block-heading">Randomness at any time</h2>



<p class="wp-block-paragraph">If you now start the simulation from frame one, you will see a stream of particles from the emitter. But they still look like threads because they are generated from exactly the same position on the surface of the object at each frame. However, we need a different distribution in each frame so that it looks like particles are being emitted from the entire surface. Add a node &#8220;Input &#8211; Scene &#8211; Scene Time&#8221; and connect the frame output to the seed input of the Distribute Points on Faces node. Also connect the Density input of the node to the empty socket of the Group Input node in order to be able to control the emission density from outside.</p>



<h2 id="animated-particle-emission" class="wp-block-heading">Animated particle emission</h2>



<p class="wp-block-paragraph">If you now play the animation, you will not only see a particle beam flying away from your object, you can even animate how many particles the emitter generates per frame. This was previously not so easy to do with the legacy particle system in Blender. This is where the strength of Simulation Nodes comes into play, because you no longer have to worry about such limitations.</p>



<h2 id="for-life" class="wp-block-heading">For life</h2>



<p class="wp-block-paragraph">Another feature of particle systems is the option of giving each particle a lifetime and reading out its current age. In the simulation nodes, we achieve this by setting an &#8220;age&#8221; attribute for each point at birth, which is then incremented by one in each frame. Add a node &#8220;Attribute &#8211; Capture Attribute&#8221; between Distribute Points on Faces and Join Geometry. A float with the value 0.0 is now assigned to each point when it is created. Connect the attribute output to the empty input socket of the simulation output node. A corresponding output now appears at the simulation input node.</p>



<h2 id="marry" class="wp-block-heading">Marry</h2>



<p class="wp-block-paragraph">Just as with the Join Geometry node for the points, we also need to find a way to &#8220;marry&#8221; the age of the existing particles with the newly added ones. Add a &#8220;Utilities &#8211; Math &#8211; Math&#8221; node. This is already set to the correct &#8220;Add&#8221; operation by default. Now all particles have the attribute and it is looped through the  simulation. However, we are not yet counting up. Duplicate the add node and place it between the existing add node and the simulation output node and set the value in the lower input to 1.0. Now one is added to the age with each frame.</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" height="284" width="1200"  decoding="async"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2023/08/lebenszeit.jpg?resize=1200%2C284&#038;quality=80&#038;ssl=1"  alt=""  class="wp-image-156138" ><figcaption class="wp-element-caption">Age and lifetime: A new lifetime factor has been added to the particle system. If this is exceeded, the corresponding points are removed from the simulation. A corresponding output attribute has been added so that the shading can later be influenced based on the age of the particles.</figcaption></figure>



<p class="wp-block-paragraph"></p>



<h2 id="age-vs-lifetime" class="wp-block-heading">Age vs. lifetime</h2>



<p class="wp-block-paragraph">Age has not yet had any effect. We can use it to make particles die or disappear after a certain time in frames. Duplicate one of the add nodes and place it in a free area in the simulation zone. Connect the upper input to the second add node and change the The operation to &#8220;Greater Than&#8221;. Add then use &#8220;Input &#8211; Group &#8211; Group Input&#8221; to add another Group Input node and connect the threshold input of the Greater Than node to the free socket of the Socket of the group input node. Name the new parameter &#8220;Lifetime&#8221;, a default value of 50.0 makes sense here. Add a &#8220;Geometry &#8211; Operations &#8211; Delete Geometry&#8221; node and place it between the Geometry output of the Set Position node and the Geometry input of the Simulation Output node. Connect the Selection input to the the Value output of the Greater Than Node. From now on, all particles that are older than their lifetime will be removed from the simulation. If you play the animation now, the particles will disappear again from frame 50.</p>



<h2 id="normalisation" class="wp-block-heading">Normalisation</h2>



<p class="wp-block-paragraph">We can also use the age of the points as an output attribute so that we can later colour the particles differently in Cycles depending on their age. As Cycles likes to be fed with values between 0.0 and 1.0, we should normalise it to this value range beforehand. First connect the attribute output of the simulation output node to the free socket of the group output node. If you now open the Ouput Attributes panel in the modifier, you will see an empty field. Here you can later give the attribute a name so that you can access it in the shader, e.g. &#8220;age&#8221;. It will then also appear as a separate column in the Spreadsheet Editor. You can change the labelling of the field and the tooltip again in the Group tab of the sidebar of the Node Editor, for example to &#8220;Age&#8221;.</p>



<h2 id="force-fields" class="wp-block-heading">Force fields</h2>



<p class="wp-block-paragraph">The second component we would add to the legacy particle system would be force fields to control the movement of the particles. In the simulation nodes, this is done within the simulation zone via vectors that control the offset of the Set Position node. In our case these would be two components. A kind of wind that blows the particles in a desired direction and a field for swirling. We can simplify the wind extremely by assuming a constant movement in one direction. If we add a Z component, we have also integrated the buoyancy.</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" height="591" width="1200"  decoding="async"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2023/08/partikelsystem.jpg?resize=1200%2C591&#038;quality=80&#038;ssl=1"  alt=""  class="wp-image-156140" ><figcaption class="wp-element-caption">The finished particle system: Once the noise texture has been integrated as a turbulence field and the material has been set, the particle system is complete.</figcaption></figure>



<h2 id="drift" class="wp-block-heading">Drift</h2>



<p class="wp-block-paragraph">Connect the offset input of the Set Position node to the free socket of the Group Input node and name the newly created input &#8220;Wind Force&#8221;. A value of 0.05, 0.01 and 0.025 causes the particles to drift gently and slightly backwards.</p>



<h2 id="swirl" class="wp-block-heading">Swirl</h2>



<p class="wp-block-paragraph">We need a second force to swirl the particles. We can extract this from a noise texture. This is because the RGB colours of the texture can also be interpreted as XYZ values of a vector. These must be merged with the previous forces, again using maths. Add a &#8220;Utilities &#8211; Vector &#8211; Vector Math&#8221; node and place it between the wind force socket of the Group Input node and the offset input of the Set Position node. Click on the lower, free vector input of the add node and drag the mouse to a free position. There should be a plus symbol next to the mouse cursor. If you now release the mouse, a search field will appear. Enter &#8220;Noise&#8221; there and select &#8220;Noise Texture &#8211; Colour&#8221; from the search results.</p>



<h2 id="adjustments" class="wp-block-heading">Adjustments</h2>



<p class="wp-block-paragraph">A noise texture appears whose colour output is directly connected to the vector input of the add node. If you now play the animation, the particles shoot off at a diagonal. This is because the noise texture only outputs positive values between 0.0 and 1.0 for each channel. The result should be colours, and their channel values are defined in Blender as a Range between 0.0 and 1.0.</p>



<h2 id="negative" class="wp-block-heading">Negative</h2>



<p class="wp-block-paragraph">However, the particles should move in all directions, even in the opposite direction to an axis, i.e. in a negative direction. To achieve this, we have to subtract 0.5 from all channels, then the range is between -0.5 and 0.5. Duplicate the Vector Math node, place it between the colour output of the Noise Texture node and the existing Vector Math node, which is currently set to &#8220;Add&#8221;, and set the operator of the new node to &#8220;Subtract&#8221;. Enter 0.5, 0.5 and 0.5 in the lower vector field.</p>



<h2 id="buzz" class="wp-block-heading">Buzz</h2>



<p class="wp-block-paragraph">If you now play the animation, you will see quite a hustle and bustle. The turbulence caused by the noise texture is still much too strong. Duplicate a Vector Math node again, place it between Subtract and Add and set the operation to &#8220;Scale&#8221;. Set the lower input to 0.2 and connect it to the free socket of the to the free socket of the Group Input Node. Name the new input parameter &#8220;Turbulence Strength&#8221; and view the animation. Set the Lifetime to 100 and the particles will now be swirled around by the noise texture.</p>



<h2 id="control" class="wp-block-heading">Control</h2>



<p class="wp-block-paragraph">How coarse or fine the turbulence is can be controlled via the scale input of the noise texture node. Set it to 1.0 and also connect it to the Group Input node and name the parameter &#8220;Turbulence Scale&#8221;. If you now play the animation, the particles will flow as if you had added a turbulence force field to a legacy particle system and set the flow value to 1.0. However, this stream-like flow is not quite the way fire moves. The flames flicker and constantly change direction.</p>



<h2 id="the-fourth-dimension" class="wp-block-heading">The fourth dimension</h2>



<p class="wp-block-paragraph">To simulate this effect with the Noise Texture, switch the drop-down in the Noise Texture to &#8220;4D&#8221;. A new input &#8220;W&#8221; has now been added. This can be used to permanently change the noise texture. In other programmes, the parameter is called &#8220;Evolution&#8221;, which really is a good name. To animate this, you do not need to set any keyframes. Instead, connect it to the Seconds output of the Scene Time node and the particles will wobble and flicker when the animation is played.</p>



<h2 id="set-material" class="wp-block-heading">Set material</h2>



<p class="wp-block-paragraph">Before you can move on to shading, you need to give the particles a material. To do this, add a &#8220;Material &#8211; Set Material&#8221; node between the geometry output of the simulation output node and the geometry input of the group output node. Select an existing material from the drop-down menu and edit the name and the shader in the next step.</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" height="936" width="1200"  decoding="async"  src="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2023/08/shading.jpg?resize=1200%2C936&#038;quality=80&#038;ssl=1"  alt=""  class="wp-image-156142" ><figcaption class="wp-element-caption">Rendering in Cycles: The points generated by the simulation nodes cannot yet be displayed with Eevee, so we use Cycles as the render engine. The ‘age’ attribute is used for colouring, the name of which we have assigned in the modifier and entered exactly as it is in the attribute node.</figcaption></figure>



<h2 id="rendering-in-cycles" class="wp-block-heading">Rendering in Cycles</h2>



<p class="wp-block-paragraph">To render the particles, we need the Cycles render engine, as Eevee cannot yet display the points. In the Render tab of the Properties Editor, change the render engine to Cycles and switch to the Shading Workspace. Switch on the Render Preview in the viewport; the particles now appear as small spheres. In the Shader Editor, select the same material in the material drop-down that you have also assigned in the geometry nodes. Now you can also change the name, e.g. to &#8220;Particle Material&#8221;.</p>



<h2 id="cycles-should-recognise-them-by-their-name" class="wp-block-heading">Cycles should recognise them by their name</h2>



<p class="wp-block-paragraph">Add a new node &#8220;Input &#8211; Attribute&#8221; and enter the exact name you have given to the Age attribute in the &#8220;Name&#8221; field and connect the Fac output to the Base Colour input of the Principled BSDF node. The particles are now coloured in a gradient from black to white, depending on their age. The perfect input for a colour ramp.</p>



<h2 id="ramp" class="wp-block-heading">Ramp</h2>



<p class="wp-block-paragraph">Insert a &#8220;Converter &#8211; Colour Ramp&#8221; node between Fac and Base Color. Set another stop by pressing the plus icon of the node and set the stop on the far left to a light, desaturated orange. Then set the value for &#8220;Value&#8221; in the colour wheel to 5.0. Now the particles reflect more light than hits them. A nice effect, which is not physically correct at all, but gives a little more detail than when using emission. Set the second stop to a rich red with a value of 2.0 and the last stop to pure black. Also set the interpolation in the dropdown in the top right-hand corner of the node to &#8220;Ease&#8221;.</p>



<h2 id="fadeout" class="wp-block-heading">Fadeout</h2>



<p class="wp-block-paragraph">The spheres are now coloured, but it would be nice if they fade out as if the flames were burning out or dissipating like smoke. Connect the Fac output of the Attribute node to the Alpha input of the Principled BSDF node. Now it looks as if the logo is smoking at the beginning and the smoke is turning into fire. For the fire to finally fade out, we need another colour ramp. Set three stops again and the interpolation to &#8220;Ease&#8221;. The centre stop is given a pure white and the right-hand stop a pure black. The left stop is given a value of 0.1 so that the particles on the emitter are still slightly visible and virtually envelop it.</p>



<h2 id="artefacts" class="wp-block-heading">Artefacts</h2>



<p class="wp-block-paragraph">Black artefacts should now have appeared in the tips of the flames, depending on how many particles you use. The black spots are caused by the fact that Cycles only visits a certain number of surfaces, the so-called bounces. And every time a ray passes through one of the spheres, that&#8217;s two transparent bounces. Set the number of transparent bounces in the Light Paths panel of the Render Properties to 256. Now the flame tongues fade out cleanly.</p>



<h2 id="light-and-shadow" class="wp-block-heading">Light and shadow</h2>



<p class="wp-block-paragraph">As the particles in our setup are dependent on light from outside to glow, it is worth loading an HDRI texture into the world. You can achieve the black background by opening the &#8220;Ray Visibility&#8221; panel in the world properties and unchecking &#8220;Camera&#8221; and &#8220;Glossy&#8221;. The latter is a small preparatory step for the next step.</p>



<h2 id="laying-the-floor" class="wp-block-heading">Laying the floor</h2>



<p class="wp-block-paragraph">Add a tarp to the scene and scale it by a factor of 50. Then add a new material and set the value for &#8220;Metallic&#8221; in the Principled BSDF node to 1.0. You can adjust the strength of the reflection by making the base colour lighter or darker. For an exact replication of the result, set the value of &#8220;Value&#8221; in the colour selection of the base colour to 0.5. Next, delete the light source that is still present and, if necessary, make the material of the emitter object darker so that it is clearly recognisable in contrast to the light &#8220;smoke&#8221;.</p>



<h2 id="bake-a-cake" class="wp-block-heading">Bake a cake</h2>



<p class="wp-block-paragraph">After placing the camera, it&#8217;s time to render. You can render both a still image and an animation. It would be practical if the simulation data could be saved so that you don&#8217;t have to simulate again and again. This process is called &#8220;Baking&#8221; and can be found for the simulation nodes in the Physics tab of the Properties Editor. Open the Simulation Nodes panel there and click on &#8220;Bake&#8221;. All frames in the timeline are now simulated and saved. A new simulation is not necessary.</p>



<h2 id="outlook" class="wp-block-heading">Outlook</h2>



<p class="wp-block-paragraph">This article was intended to provide an overview of how particle systems in the new are structured in the new simulation nodes. From this basis you can proceed further. You could also change the radius of the particles with age. A feature that is also not so easily possible with the legacy particle system. Or you can modify it so that the time-dependent calculations always take place in seconds instead of frames, making your system independent of the project&#8217;s frame rate. In order to make the fire flicker even better, you could also<br />also modulate the emission with a safely time-varying noise texture. Even more: you can make the result more realistic by giving the particles a very slight initial velocity along the normal of the emission object.</p>



<h2 id="conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">With the new simulation nodes in Blender 3.6, particle systems can be created whose thickness exceeds that of the existing legacy particle system. Thanks to the power of the geometry nodes, there is enormous potential ahead of you, but it still needs to be realised. Because there are still no high-level nodes, you have to click together things like an emitter or a force field yourself. It is to be expected that there will be numerous node groups and assets in the future, both from the developers themselves and from the community.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p><p>The post <a href="https://digitalproduction.com/2023/08/10/your-own-particle-system-with-simulation-nodes/">Your own particle system with simulation nodes</a> first appeared on <a href="https://digitalproduction.com">DIGITAL PRODUCTION</a> and was written by <a href="https://digitalproduction.com/author/gottfriedhofmann/">Gottfried Hofmann</a>. </p></div>]]></content:encoded>
					
		
		
		<enclosure url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/aufhaenger.jpg?fit=4096%2C2304&#038;quality=80&#038;ssl=1" length="148913" type="image/jpg" />
<media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/aufhaenger.jpg?fit=1200%2C675&#038;quality=80&#038;ssl=1" width="1200" height="675" medium="image" type="image/jpeg">
	<media:copyright>DIGITAL PRODUCTION</media:copyright>
	<media:title></media:title>
	<media:description type="html"><![CDATA[]]></media:description>
</media:content>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://i0.wp.com/digitalproduction.com/wp-content/uploads/2024/12/aufhaenger.jpg?fit=1200%2C675&#038;quality=80&#038;ssl=1" width="1200" height="675" />
<post-id xmlns="com-wordpress:feed-additions:1">156111</post-id>	</item>
	</channel>
</rss>
