{"id":8501,"date":"2023-12-07T04:19:59","date_gmt":"2023-12-07T04:19:59","guid":{"rendered":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/?p=8501"},"modified":"2023-12-09T03:47:06","modified_gmt":"2023-12-09T03:47:06","slug":"final-project-terrain-generation","status":"publish","type":"post","link":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/2023\/12\/07\/final-project-terrain-generation\/","title":{"rendered":"Final Project: Terrain Generation"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">My project involves terrain generation with the goal of creating tiles that mimic the terrain generation in the game &#8216;Minecraft,&#8217; while incorporating some vegetation elements. Although my initial intention was to closely emulate the &#8216;Minecraft&#8217; theme, the final outcome took a different direction. However, I&#8217;m happy with the results.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I apologize for the videos not displaying correctly; they are in GIF format and cannot be played due to the lack of compatibility with video formats like .mp4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Main Project Goal:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">My project involves generating terrain tiles using Perlin noise for pseudo-random generation. I use quotes around \u2018random\u2019 because Perlin noise creates a pseudo-random appearance. Unlike true randomness, you can\u2019t compute the same terrain twice with it. The key difference between using Perlin noise and a purely random function (often referred to as \u2018white noise\u2019) for terrain generation lies in the coherency and smoothness of the resulting terrain. While a purely random function might be simpler to implement for terrain generation, it generally yields less realistic and visually appealing results compared to Perlin noise. Perlin noise\u2019s ability to create smooth, coherent variations makes it far superior for simulating the kinds of variations seen in natural terrains <br><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"7095\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-1024x576.png\" alt=\"\" class=\"wp-image-7095\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-1024x576.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-300x169.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-768x432.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-1536x864.png 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-1140x641.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-920x518.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-575x323.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise-380x214.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/Layered-perlin-noise.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Perlin Noise to Map Comparison<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"853\" data-id=\"7097\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-1024x853.jpg\" alt=\"\" class=\"wp-image-7097\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-1024x853.jpg 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-300x250.jpg 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-768x640.jpg 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-1140x950.jpg 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-920x767.jpg 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-575x479.jpg 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint-380x317.jpg 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/10\/minecraft3dPrint.jpg 1253w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Minecraft 3D Printed<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Idea<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-1024x478.png\" alt=\"\" class=\"wp-image-8748\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-1024x478.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-300x140.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-768x358.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-920x429.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-575x268.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2-380x177.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-2.png 1112w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What Is Procedural Terrain Generation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Definition: <\/strong>Procedural terrain generation is an automated method using algorithms and randomness to create digital landscapes, avoiding manual design.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Significance:<\/strong> It&#8217;s essential for efficient and dynamic terrain creation in applications like gaming, simulations, and landscape design, saving time and resources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Applications:<\/strong> Procedural terrain generation is used extensively in video games, simulations, and urban planning to generate diverse and realistic virtual terrains.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is the Difference between Randomness(white noise) and Perlin Noise<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The key difference between using Perlin noise and a purely random function (often called &#8220;white noise&#8221;) for terrain generation lies in the coherency and smoothness of the resulting output.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Perlin Noise:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Smooth and Gradual Changes<\/strong>: Perlin noise generates values that change smoothly over space. Neighboring points in a Perlin noise field have similar values, which creates a natural-looking flow.<\/li>\n\n\n\n<li><strong>Control Over Features<\/strong>: By adjusting parameters like frequency and amplitude, you can control the &#8220;roughness&#8221; or &#8220;smoothness&#8221; of the terrain, creating hills, valleys, and other features that have a consistent shape and size.<\/li>\n\n\n\n<li><strong>Less Repetition<\/strong>: Perlin noise has a lower chance of producing identical values next to each other, which means the terrain won&#8217;t have a repeating pattern that is visibly grid-like.<\/li>\n\n\n\n<li><strong>Natural Look<\/strong>: The noise is non-uniform and non-repetitive, which resembles natural phenomena, making it suitable for realistic terrain generation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pure Random Function:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Abrupt Changes<\/strong>: A purely random function will generate a value for each point without regard for neighboring points. This results in a terrain with abrupt changes, lacking any form of smooth transitions.<\/li>\n\n\n\n<li><strong>No Control Over Features<\/strong>: Pure randomness does not allow for easy control over terrain features. It is not straightforward to create rolling hills or gradual valleys as you can with Perlin noise.<\/li>\n\n\n\n<li><strong>High Repetition<\/strong>: There is a higher chance of adjacent points having wildly different values, which can make the terrain look speckled or noisy and less like something you would find in nature.<\/li>\n\n\n\n<li><strong>Unnatural Look<\/strong>: The noise is completely uniform and without any discernible pattern, which can be useful in some contexts but is typically not desirable for terrain, where you expect to see patterns like ridges, valleys, and other formations.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">While a purely random function might be simpler to implement for terrain generation, it generally yields less realistic and visually appealing results compared to Perlin noise. Perlin noise&#8217;s ability to create smooth, coherent variations makes it far superior for simulating the kinds of variations seen in natural terrains.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Generate Perlin Noise<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"448\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-1024x448.png\" alt=\"\" class=\"wp-image-8750\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-1024x448.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-300x131.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-768x336.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-1140x499.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-920x403.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-575x252.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4-380x166.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-4.png 1185w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Perlin Noise the Algorithm<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Perlin noise is a specific sequence of steps designed to produce a pattern of pseudo-random coherent noise, which can be used in computer graphics and other applications where natural-looking textures are needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fig. 1(a) &#8211; Initial Grid<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Imagine a chessboard; this is your grid. Each square is part of this grid.<\/li>\n\n\n\n<li>The grid is made up of squares (like in graph paper) and has a certain number of squares along each side, denoted by &#8220;n&#8221;.<\/li>\n\n\n\n<li>Each intersection point on the grid, the corners of the squares, can be referenced by coordinates $(x_i, y_j)$<\/li>\n\n\n\n<li>The shaded square in the middle with a dot represents a particular square on the grid that we&#8217;re focusing on. The dot represents a point inside this square, which has specific coordinates \\((x, y)\\). $(x,y)$<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fig. 1(b) &#8211; Random Gradient Vectors<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>At each intersection point (corners of the squares), a random arrow (vector) is drawn. This arrow points in a random direction. These are the gradient vectors.<\/li>\n\n\n\n<li>The arrows don&#8217;t actually represent the direction of the terrain or texture but are used to influence the &#8216;randomness&#8217; of the point within the square.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fig. 1(c) &#8211; Smoothing\/Interpolation<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This figure shows how to smooth out the noise to avoid blocky patterns. For this, vectors from the corners of the square to the point of interest (the dot) are drawn, called &#8220;v&#8221;.<\/li>\n\n\n\n<li>The smoothing will consider the direction of the gradient vectors at the corners and the position of the point within the square.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>General Process<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Setup a Grid<\/strong>: You start with a grid (like graph paper) and have a grid point at each corner of the squares.<\/li>\n\n\n\n<li><strong>Assign Random Gradients<\/strong>: At each grid point, you assign a random gradient vector (an arrow pointing in a random direction).<\/li>\n\n\n\n<li><strong>Find the Square for Your Point<\/strong>: For any point where you want to know the noise (the shaded square with the dot), you find out which square of the grid it&#8217;s in and look at the corners of this square.<\/li>\n\n\n\n<li><strong>Calculate Influence<\/strong>: You calculate how much each corner&#8217;s gradient vector should influence the point by using dot products. The dot product tells you if the point is moving with the gradient (uphill), against it (downhill), or neither (flat).<\/li>\n\n\n\n<li><strong>Interpolate<\/strong>: You blend the influences of the four corners to get a smooth transition, so there are no sudden changes in the noise pattern.<\/li>\n\n\n\n<li><strong>Add Variations<\/strong>: You can add variations at different scales (called octaves) to make the pattern more complex and natural-looking.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Perlin&#8217;s Technique<\/strong>: Ken Perlin came up with a smart way to make this randomness look natural by using gradients and a special smoothing function that makes sure the transitions between different noise values are smooth.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How did I use this in Rhyno?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The toughest part was figuring out how to generate Perlin noise values. So, I assumed someone had created a plugin for Rhino that deals with Perlin noise. To my expectations, there was one available! I installed the plugin and attempted to figure out how to use it and what each function does.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When I opened up the example file for the Perlin noise, it was definitely a challenge to figure out how to use this plugin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"961\" height=\"466\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5.png\" alt=\"\" class=\"wp-image-8753\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5.png 961w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5-300x145.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5-768x372.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5-920x446.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5-575x279.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-5-380x184.png 380w\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-1024x452.png\" alt=\"\" class=\"wp-image-8266\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-1024x452.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-300x132.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-768x339.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-920x406.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-575x254.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14-380x168.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-14.png 1102w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Perlin Noise 2D Components in Grasshopper<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"292\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-1024x292.png\" alt=\"\" class=\"wp-image-8267\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-1024x292.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-300x86.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-768x219.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-1536x438.png 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-2048x584.png 2048w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-1140x325.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-920x262.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-575x164.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-15-380x108.png 380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Perlin Noise 3D Components in Grasshopper <\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Rhyno Plugin for Perlin Noise <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I luckily managed to figure out that I just needed to take one component from the extension and work with the rest. So here are the values that the Perlin noise component took in as input that I used to generate the Perlin noise values. <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Points<\/strong>: The input points where the noise value will be evaluated. The noise function will return different values based on the location of these points in space.<\/li>\n\n\n\n<li><strong>Seed<\/strong>: A number that initializes the random number generator for the noise function. Changing the seed value will change the pattern of the noise, allowing for different noise textures while maintaining the same overall characteristics.<\/li>\n\n\n\n<li><strong>Amplitude<\/strong>: The maximum value that the noise function can output. This controls the height or intensity of the noise. Higher amplitudes will result in more significant variations in the noise values.<\/li>\n\n\n\n<li><strong>SmoothStep<\/strong>: A function that interpolates between two values. In the context of noise, it can be used to smooth out the transitions between noise values, resulting in a less abrupt change from point to point.<\/li>\n\n\n\n<li><strong>Frequency X, Frequency Y, Frequency Z<\/strong>: These parameters control the frequency of the noise pattern along the respective axes. Higher frequency values will result in more rapid changes in the noise pattern, creating a more &#8220;zoomed in&#8221; effect, whereas lower frequencies will make the noise pattern appear more &#8220;zoomed out&#8221; or smooth.<\/li>\n\n\n\n<li><strong>Jitter<\/strong>: This input might control the randomness added to the noise. Jitter can help to eliminate visible grid-like patterns in the noise by slightly perturbing the points before the noise calculation.<\/li>\n\n\n\n<li><strong>AlignVector<\/strong>: This input likely adjusts the orientation of the noise pattern. By changing the align vector, you can rotate the direction of the noise gradients, which can be useful for aligning noise patterns to flow with certain geometries or directions.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"535\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6.png\" alt=\"\" class=\"wp-image-8756\" style=\"width:1000px;height:auto\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6.png 960w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6-300x167.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6-768x428.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6-920x513.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6-575x320.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-6-380x212.png 380w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I needed to create python code to generate my grid and take in my Perlin noise values as my z variable for the height of my curves. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"501\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17.png\" alt=\"\" class=\"wp-image-8270\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17.png 976w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17-300x154.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17-768x394.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17-920x472.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17-575x295.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-17-380x195.png 380w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">However, these are just grid lines, I couldn&#8217;t figure out how to create a surface from these grid lines. I tried joining the lines and then lofting them but it seemed some lines wanted to connect to other lines and the result was ugly. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"365\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-1024x365.png\" alt=\"\" class=\"wp-image-8271\" style=\"width:1000px;height:auto\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-1024x365.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-300x107.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-768x274.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-1140x406.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-920x328.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-575x205.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18-380x135.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-18.png 1300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">I then tried figuring out how to create a surface from the tools in Rhino, instead of trying to figure this out with code. So messing with the lofting tools, I stumbled on the patch. That thankfully worked for me!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"386\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-1024x386.png\" alt=\"\" class=\"wp-image-8783\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-1024x386.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-300x113.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-768x290.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-1140x430.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-920x347.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-575x217.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13-380x143.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-13.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here are a few results from the tiles I generated:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1017\" height=\"544\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21.png\" alt=\"\" class=\"wp-image-8274\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21.png 1017w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21-300x160.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21-768x411.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21-920x492.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21-575x308.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/11\/image-21-380x203.png 380w\" sizes=\"auto, (max-width: 1017px) 100vw, 1017px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Although I wanted a more &#8216;pixelly&#8217; look for the terrains, I really love how they turned out. My next goal is to figure out if I can create some grass and tree surfaces that I can attach to my terrain. I know that directly coding them onto the object would be difficult, as changing the slider parameters already makes the computation quite complex. Luckily, no crashes yet. So I&#8217;ll look into creating a flat surface with the grass, trees, etc., and then attaching them using methods like &#8216;Surface Along Curves&#8217; to add the trees to the plane.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zoom Effect<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I call this a zoom effect but really I&#8217;m just messing with the parameters that control the frequency of the noise pattern along the respective axes. Higher frequency values will result in more rapid changes in the noise pattern, creating a more &#8220;zoomed in&#8221; effect, whereas lower frequencies will make the noise pattern appear more &#8220;zoomed out&#8221; or smooth. Again these videos won&#8217;t play, but I do have a link to my slides that will play. <\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"449\" data-id=\"8764\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-1024x449.gif\" alt=\"\" class=\"wp-image-8764\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-1024x449.gif 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-300x132.gif 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-768x337.gif 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-1536x674.gif 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-1140x500.gif 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-920x404.gif 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-575x252.gif 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_zoomFeature-380x167.gif 380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Jitter\/Randomness <\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-1024x576.gif\" alt=\"\" class=\"wp-image-8765\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-1024x576.gif 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-300x169.gif 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-768x432.gif 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-1536x864.gif 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-1140x641.gif 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-920x517.gif 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-575x323.gif 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/PerlinNoise_RandFeature-380x214.gif 380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vegetation Generation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I not only wanted a terrain surface but I also wanted some vegetation. So I created a square surface, and created code that generated n random pyramids and n random spheres for bushes. And got these results:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-1024x400.gif\" alt=\"\" class=\"wp-image-8776\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-1024x400.gif 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-300x117.gif 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-768x300.gif 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-1140x445.gif 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-920x359.gif 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-575x224.gif 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/Tree_Bush_Terrain-2-380x148.gif 380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I then had to perform a surface morph to place this surface on top of my terrain surface. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"863\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-1024x863.png\" alt=\"\" class=\"wp-image-8781\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-1024x863.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-300x253.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-768x647.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-1536x1294.png 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-1140x960.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-920x775.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-575x484.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11-380x320.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-11.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also wanted to create little people in my print but I knew they wouldn&#8217;t come out as great as I&#8217;d like given some printing complications that might occur.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-1024x551.png\" alt=\"\" class=\"wp-image-8782\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-1024x551.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-300x161.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-768x413.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-1536x826.png 1536w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-1140x613.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-920x495.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-575x309.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12-380x204.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-12.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I successfully created my terrain tiles as planned. Additionally, I had the ambition to generate a globe-like representation of these surfaces, similar to the Earth. Initially, I attempted to apply surface morphing directly onto a sphere, but I encountered several complications along the way. As time was running out, I opted for a different approach. I divided my terrains into four sides and then joined them together. This decision led to the following results:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"296\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-1024x296.png\" alt=\"\" class=\"wp-image-8787\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-1024x296.png 1024w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-300x87.png 300w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-768x222.png 768w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-1140x329.png 1140w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-920x266.png 920w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-575x166.png 575w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14-380x110.png 380w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-14.png 1396w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Rhyno Baked Objects <\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Final Prints<\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"567\" data-id=\"8788\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-15.png\" alt=\"\" class=\"wp-image-8788\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-15.png 468w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-15-248x300.png 248w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-15-380x460.png 380w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><figcaption class=\"wp-element-caption\">Tile Surfaces<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"565\" data-id=\"8789\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-16.png\" alt=\"\" class=\"wp-image-8789\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-16.png 474w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-16-252x300.png 252w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-16-380x453.png 380w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><figcaption class=\"wp-element-caption\">Globe Surfaces<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"451\" height=\"559\" data-id=\"8790\" src=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-17.png\" alt=\"\" class=\"wp-image-8790\" srcset=\"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-17.png 451w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-17-242x300.png 242w, https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-content\/uploads\/2023\/12\/image-17-380x471.png 380w\" sizes=\"auto, (max-width: 451px) 100vw, 451px\" \/><figcaption class=\"wp-element-caption\">Globe Surfaces<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.canva.com\/design\/DAF1gso_OLg\/fC_7f1adU4BGau7SEBhUYQ\/edit?utm_content=DAF1gso_OLg&amp;utm_campaign=designshare&amp;utm_medium=link2&amp;utm_source=sharebutton\">https:\/\/www.canva.com\/design\/DAF1gso_OLg\/fC_7f1adU4BGau7SEBhUYQ\/edit?utm_content=DAF1gso_OLg&amp;utm_campaign=designshare&amp;utm_medium=link2&amp;utm_source=sharebutton<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>My project involves terrain generation with the goal of creating tiles that mimic the terrain generation in the game &#8216;Minecraft,&#8217; while incorporating some vegetation elements. Although my initial intention was to closely emulate the &#8216;Minecraft&#8217; theme, the final outcome took a different direction. However, I&#8217;m happy with the results. I apologize for the videos not displaying correctly; they are in [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-8501","post","type-post","status-publish","format-standard","hentry","category-studentwork23"],"_links":{"self":[{"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/posts\/8501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/comments?post=8501"}],"version-history":[{"count":4,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/posts\/8501\/revisions"}],"predecessor-version":[{"id":8792,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/posts\/8501\/revisions\/8792"}],"wp:attachment":[{"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/media?parent=8501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/categories?post=8501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/handandmachine.org\/classes\/computational_fabrication\/wp-json\/wp\/v2\/tags?post=8501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}