{"id":10939,"date":"2026-09-01T18:47:38","date_gmt":"2026-09-01T17:47:38","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=10939"},"modified":"2026-09-02T13:36:07","modified_gmt":"2026-09-02T12:36:07","slug":"hexagonal-grid-snapping-blender","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/","title":{"rendered":"Hexagonal Grid Snapping in Blender"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a9920c5b7dfa\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a9920c5b7dfa\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#geometry-nodes-%e2%80%93-grid-object\" >Geometry Nodes &#8211; Grid Object<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#grid-node\" >Grid Node<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#array-node\" >Array Node<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#geometry-nodes-%e2%80%93-mesh-object\" >Geometry Nodes &#8211; Mesh Object<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#array-nodes-1-2\" >Array Nodes (#1 &#038; #2)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.katsbits.com\/codex\/hexagonal-grid-snapping-blender\/#array-nodes-3\" >Array Nodes #3<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<p>Blenders <a href=\"https:\/\/www.katsbits.com\/codex\/grid\/\">native grid<\/a> and <a href=\"https:\/\/www.katsbits.com\/codex\/snap\/\">snapping systems<\/a> are defined though the equidistant subdivision of a base unit that can be a rounded or whole number, e.g. 1, 64, 111 etc., or a decimal or fraction, e.g. 0.326, 0.9, 0.0026 etc. In each scenario Blender accurately splits and distributes major and minor division of the grid. While this works exceptionally well for regular shapes and distributions, for non-uniform shapes like hexagons, two grids are effectively active at the same time, one for each axis. In practice, as Blender cannot natively support this, a custom proxy &#8216;grid&#8217; needs to be created for use in conjunction with <a href=\"https:\/\/www.katsbits.com\/codex\/snapping\/\">Snap<\/a> (during transform).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"geometry-nodes-%e2%80%93-grid-object\"><\/span>Geometry Nodes &#8211; Grid Object<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The most versatile way to create custom grids for object snapping is to use <strong>Geometry Nodes<\/strong> to <em>procedurally generate<\/em> a grid rather than using standard mesh\/object Modifiers or repetitive mesh\/object duplication because, once a basic grid unit is established, it&#8217;s then just a few mouse clicks to make the grid as large or small as needed.<\/p>\n<details class=\"tutorial-expand-box\">\n<summary><strong>Design note:<\/strong> hexagon base dimensions&#8230; [more]<\/summary>\n<div class=\"expand-content\">\nThe base object used throughout is a <strong>hexagon<\/strong> (created from Cylinder object set to 6 sided) measuring <strong>2 metres<\/strong> along the <strong>X<\/strong> axis, <strong>1.73205<\/strong> along the <strong>Y<\/strong> axis and <strong>1<\/strong> on the <strong>Z<\/strong> axis &#8211; <strong>2 x 1.73205 x 1<\/strong> Origin is at object centre.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagon-dimensions.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagon-dimensions.jpg\" alt=\"Hexagon dimensions\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The grid is designed around a hexagon that&#8217;s 2 x 1.73205 x 1 (W x D x H) metres. Any size can be used so long as the numbers and values are adjusted appropriately.<\/i>\n<\/div>\n<\/details>\n<h4><span class=\"ez-toc-section\" id=\"grid-node\"><\/span>Grid Node<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>The first node to set up is the grid to be duplicated. This is procedurally generated using the <strong>Grid<\/strong> node. In Geometry Nodes Workspace and the Geometry Node Editor (lower area), click <strong>Add<\/strong> menu, find <strong>Mesh<\/strong> (about half way down the menu), then click <strong>Primitives<\/strong>, <strong>Grid<\/strong> &#8211; <strong><em>Add \u00bb Mesh \u00bb Primitives \u00bb Grid<\/em><\/strong>. A node appears with <strong>Size<\/strong> and <strong>Vertices<\/strong> parameters that define the grids basic structure. Here, for a hexagon (6 sides) generated from a 2 metre wide Cylinder primitive, set;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 <strong>Size X : 2<\/strong><br \/>\n\u2022 <strong>Size Y : 1.73205<\/strong><\/p><\/blockquote>\n<p>This matches the bounding box dimensions of the hexagon.<\/p>\n<details class=\"tutorial-expand-box\">\n<summary><strong>Design note:<\/strong> grid layout vs. grid shape&#8230; [more]<\/summary>\n<div class=\"expand-content\">\nThe grids <em>layout<\/em> is what&#8217;s important here, it does not specifically need to be an shaped like a hexagon (<a href=\"#geometry-nodes-%e2%80%93-mesh-object\">see below<\/a>).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-base-grids.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-base-grids.jpg\" alt=\"Grid vs. Hexagon\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The shape of the grid isn&#8217;t as important as the divisions and subdivision as, barring one of two vertices of difference, snapping is almost identical.<\/i>\n<\/div>\n<\/details>\n<p>Depending on how accurate or finite object snapping should then be relative to the grid, set;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 <strong>Vertices X : 5<\/strong><br \/>\n\u2022 <strong>Vertices Y : 5<\/strong><\/p><\/blockquote>\n<p>This subdivides the grid uniformly and equidistantly alone each axis, largely to accommodate the necessary hexagonal cell offset. To then use the grid, enable <a href=\"https:\/\/www.katsbits.com\/codex\/snapping\/\">Snap<\/a> (<span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">Tab<\/span>) and set the <strong>Snap Target<\/strong> to <strong>Vertex<\/strong> (options set in the Header). Objects will then snap correctly to the grid, and each other, for hexagonal alignment.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><strong>Important<\/strong>: Blenders snapping behaviour is often erratic so objects don&#8217;t always move in predicable fashion. This behaviour is consequential for custom grids and may require some refinement through judicious use of subdivisions to strike the right balance between shape and degree of control.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-grid.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-grid.jpg\" alt=\"Grid node set up\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The Grid node defines the generated grid object that&#8217;s to be distributed. Dimensions are based on the overall bounding box of the hexagons the grid is the snapping aid for, not their physical shape, i.e. an actual &#8216;hexagon&#8217;.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"array-node\"><\/span>Array Node<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Once the grid node is set up defined, it needs to be duplicated. However, this requires two operations;<\/p>\n<ul>\n<li>The number of grid units duplicated.<\/li>\n<li>Their <strong>X<\/strong> and <strong>Y<\/strong> distribution or directional spread.<\/li>\n<\/ul>\n<p>To achieve this an <strong>Array<\/strong> node is used. From the <strong>Add<\/strong> menu, select <strong>Generate<\/strong>, then <strong>Array<\/strong> &#8211; <strong><em>Add \u00bb Generate \u00bb Array<\/em><\/strong>. An Array node will appear that provides a number of options, primarily <strong>Count<\/strong> and <strong>Offset<\/strong>;<\/p>\n<ul>\n<li><strong>Count<\/strong>: defines the number of instances generated by the node group.<\/li>\n<li><strong>Offset<\/strong>: shifts individual instance positioning so grids don&#8217;t stacked atop each other. <\/li>\n<\/ul>\n<p><strong>Two<\/strong> of these nodes are needed;<\/p>\n<ul>\n<li><strong>Array #1<\/strong>: defines the base unit and X axis distribution.<\/li>\n<li><strong>Array #2<\/strong>: duplicates the base unit and distributes it on the Y axis.<\/li>\n<\/ul>\n<p>Drop in a second <strong>Array<\/strong> node (<strong><em>Add \u00bb Generate \u00bb Array<\/em><\/strong>) and change the <strong>Offset<\/strong> values for each as follows;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 <strong>Array #1<\/strong><br \/>\n &#8211; X: 0.000<br \/>\n &#8211; <strong>Y: 1.000<\/strong><br \/>\n &#8211; Z: 0.000<br \/>\n\u2022 <strong>Array #2<\/strong><br \/>\n &#8211; <strong>X: 1.000<\/strong><br \/>\n &#8211; Y: 0.000<br \/>\n &#8211; Z: 0.000<\/p><\/blockquote>\n<details class=\"tutorial-expand-box\">\n<summary><strong>Design note:<\/strong> alternative node setup &#038; &#8216;Offset Method&#8217;&#8230; [more]<\/summary>\n<div class=\"expand-content\">\nThe axes can be switched and will still generate the same grid;<br \/>\n\u2022 <strong>Array #1<\/strong><br \/>\n &#8211; <strong>X: 1.000<\/strong><br \/>\n &#8211; Y: 0.000<br \/>\n &#8211; Z: 0.000<br \/>\n\u2022 <strong>Array #2<\/strong><br \/>\n &#8211; X: 0.000<br \/>\n &#8211; <strong>Y: 1.000<\/strong><br \/>\n &#8211; Z: 0.000<\/p>\n<p>Both duplicate and distribute the grid but use a different &#8216;priority&#8217; axis. Similarly, the relationships between base unit and replication can be defined using <strong>Offset<\/strong>, an alternative <strong>Offset Method<\/strong>. With this enabled instead of <strong>Relative<\/strong> (default), the <strong>Translation<\/strong> values for <strong>X<\/strong>, <strong>Y<\/strong> and <strong>Z<\/strong> differ accordingly;<\/p>\n<p>\u2022 <strong>Array #1<\/strong><br \/>\n &#8211; X: 0.000<br \/>\n &#8211; <strong>Y: 1.73205<\/strong><br \/>\n &#8211; Z: 0.000<br \/>\n\u2022 <strong>Array #2<\/strong><br \/>\n &#8211; <strong>X: 2.000<\/strong><br \/>\n &#8211; Y: 0.000<br \/>\n &#8211; Z: 0.000<\/p>\n<p>The generates the same grid and behaviour once correctly set up.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-offset.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-offset.jpg\" alt=\"Array using Offset spacing\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using Offset instead of Relative establishes the same grid and distribution from a slightly different set up.<\/i>\n<\/div>\n<\/details>\n<p>Finally, link everything together; connect the <strong>Grid<\/strong> nodes <strong>Mesh<\/strong> out to <strong>Array #1<\/strong>&#8216;s <strong>Geometry<\/strong> input. Then connect <strong>Array #1<\/strong>&#8216;s <strong>Geometry<\/strong> <em>output<\/em> to Array #2&#8217;s Geometry <em>input<\/em>. Finally connect the <strong>Geometry<\/strong> <em>output<\/em> of <strong>Array #2<\/strong> to the <strong>Geometry<\/strong> <em>input<\/em> of the <strong>Group Ouput<\/strong> node.<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>(<strong>[Grid]<\/strong> Mesh) \u00bb (Geometry <strong>[Array #1]<\/strong> Geometry) \u00bb (Geometry <strong>[Array #2]<\/strong> Geometry) \u00bb (Geometry <strong>[Group Output]<\/strong>)<\/p><\/blockquote>\n<p>Once everything is linked up, simply increase or decrease the <strong>Count<\/strong> for each Array to increase or decrease the extent of the grid along the X and Y axes, e.g. a Count of 2 and 3 will spread the grid 2 &#8216;units&#8217; up and 3 units along.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-relative.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-relative.jpg\" alt=\"Array using Relative spacing\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using Array nodes to define how duplication and distribution of the base grid unit occurs. One Array controls the X axis, the other the Y axis, both creating an custom, hexagonal compliance, grid floor for oject snapping.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"geometry-nodes-%e2%80%93-mesh-object\"><\/span>Geometry Nodes &#8211; Mesh Object<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>An alternative and more shape exact approach to creating a snap grid for hexagonal objects, is to use an hexagonal object as the base unit for the grid itself. Here, a simple &#8216;wire&#8217;, or vertex and edge only mesh, is replicated for snapping. However, because a none-regular shape is used, the rows needs to be offset before duplication. This means a Array node to define the X axis duplication, a second Array node to accommodate the offset, and a third Array to iterate the group into a grid.<\/p>\n<details class=\"tutorial-expand-box\">\n<summary><strong>Design note:<\/strong> hexagon dimensions&#8230; [more]<\/summary>\n<div class=\"expand-content\">\nThe base object used throughout is a <strong>hexagon<\/strong> (created from Cylinder object set to 6 sided) measuring <strong>2 metres<\/strong> along the <strong>X<\/strong> axis, <strong>1.73205<\/strong> along the <strong>Y<\/strong> axis and <strong>1<\/strong> on the <strong>Z<\/strong> axis &#8211; <strong>2 x 1.73205 x 1<\/strong> Origin is at object centre.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagon-dimensions.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagon-dimensions.jpg\" alt=\"Hexagon dimensions\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The grid is designed around a hexagon that&#8217;s 2 x 1.73205 x 1 (W x D x H) metres. Any size can be used so long as the numbers and values are adjusted appropriately.<\/i>\n<\/div>\n<\/details>\n<h4><span class=\"ez-toc-section\" id=\"array-nodes-1-2\"><\/span>Array Nodes (#1 &#038; #2)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>As the grids based unit is an actual mesh it doesn&#8217;t need to be procedurally generated, so a <strong>Grid<\/strong> node is not needed. Instead, in the <strong>Geometry Nodes Workspace<\/strong>, first make sure the hexagonal mesh object is selected in the 3D viewport preview, then in the <strong>Node Editor<\/strong> add the initial <strong>Array<\/strong> &#8211; <strong><em>Add \u00bb Generate \u00bb Array<\/em><\/strong>. <\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><strong>Important<\/strong>: Blenders snapping behaviour is often erratic so objects don&#8217;t always move in predicable fashion. This behaviour is consequential for custom grids and may require some refinement through judicious use of subdivisions to strike the right balance between shape and degree of control.<\/p><\/blockquote>\n<p>First, set the <strong>Offset Method<\/strong> to <strong>Offset<\/strong> instead of <strong>Relative<\/strong>. In <strong>Translation<\/strong> values below, set the <strong>X<\/strong>, <strong>Y<\/strong> and <strong>Z<\/strong> values to;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 X : 0.000<br \/>\n\u2022 <strong>Y : 1.73205<\/strong><br \/>\n\u2022 Z : 0.000<\/p><\/blockquote>\n<p>Connecting the <strong>Group Input<\/strong>, <strong>Array<\/strong> and <strong>Group Output<\/strong> nodes together through their respective <strong>Geometry<\/strong> <em>inputs<\/em> and <em>outputs<\/em>, if <strong>Count<\/strong> is increased, each hexagonal instance will be properly positioned along the Y axis, butting edge to edge. To then create the displaced instance so angled sides align, drop in a second <strong>Array<\/strong> node, again set to <strong>Offset<\/strong>. Here, the <strong>X<\/strong> and <strong>Y<\/strong> axes need to be set to push this second copy up and off to the side slightly, creating a diagonal formation;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 <strong>X : 1.500<\/strong><br \/>\n\u2022 <strong>Y : 0.866025<\/strong><br \/>\n\u2022 Z : 0.000<\/p><\/blockquote>\n<p>These two nodes form the base unit and similarly, when the Geometry inputs and outputs are link up, in increasing the <strong>Count<\/strong> of <strong>Array #1<\/strong>, the group is duplicated along the Y axis with in inherent hexagonal offset.<\/p>\n<details class=\"tutorial-expand-box\">\n<summary><strong>Design note:<\/strong> which nodes to use&#8230; [more]<\/summary>\n<div class=\"expand-content\">\nIncreasing the <strong>Count<\/strong> of <strong>Array #2<\/strong> instances along the diagonal offset, which will cause issues once the node tree is completely &#8211; it will duplicate unnecessary instances of the base unit.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-direction.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-array-direction.jpg\" alt=\"Node use vs. grid direction\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The second Array should be used to define the &#8216;unit&#8217; offset otherwise, if used generally, it generates a grid that&#8217;s not square or rectilinear.<\/i>\n<\/div>\n<\/details>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagonal-offset.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagonal-offset.jpg\" alt=\"Using second Array node\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Array #1 and Array #2 establish the base unit using an actual hexagonal mesh that is then instanced and offset to replicate the objects physical shape and how they (should) subsequently snap together.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"array-nodes-3\"><\/span>Array Nodes #3<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>With base unit established and replicable along the Y axis, to duplicate it on the X axis, a third, final Array node is needed. Drop in another Array node set to Offset. Here, change the <strong>Translation<\/strong> values as follows;<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000; font-family: courier; border-left-width:4px; border-left-color:#00DD46;\"><p>\u2022 <strong>X : 3.000<\/strong><br \/>\n\u2022 Y : 0.000<br \/>\n\u2022 Z : 0.000<\/p><\/blockquote>\n<p>With the Geometry inputs and outputs all linked together, changing <strong>Count<\/strong> on Array #3 duplicates the two-instance group along the X axis. In practice, the grids size is then defined by changing the <strong>Count<\/strong> values of just <strong>Array #1<\/strong> and <strong>Array #3<\/strong>. To then use this grid for snapping, enable <strong>Snap<\/strong> (<span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">Tab<\/span>) and set the <strong>Snap Target<\/strong> to <strong>Vertex<\/strong>. When objects are then moved, they will snap together based on the grid.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagonal-array.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/grid\/geometry-node-hexagonal-array.jpg\" alt=\"Setting up a third Array node\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Adding a third Array node to the mix allows the initial node group to be duplicated along the X axis, the setup then able to form a uniform grid for object snapping.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":10942,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,237,230],"tags":[1146,563,397,334,1114,509,286,393],"class_list":["post-10939","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-misc3d","category-tutorials","tag-array","tag-geometry-node","tag-grid","tag-nodes","tag-proxy","tag-snap","tag-units","tag-units-of-measurement"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/comments?post=10939"}],"version-history":[{"count":39,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10939\/revisions"}],"predecessor-version":[{"id":10989,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10939\/revisions\/10989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/10942"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=10939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=10939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=10939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}