Pure Data: GEM
Here I will be presenting my final project in Pure Data using GEM, and what I have learned from the experience of using pure data to create motion graphics.
The code will be sectioned into separate processes and explain in the order 1 through 7 as shown in the figure below.
The code will be sectioned into separate processes and explain in the order 1 through 7 as shown in the figure below.
![]() |
| Figure 1 |
Step 1: Created [gemwin] object and connected it to three messages; [create] creating a window to draw graphics to, [destroy] to terminate the window, [lighting] which would initiate the world lighting. A toggle were added to [gemwin] to start and pause graphics, and another toggle to lighting to switch on or off.
Step 2: Next I created a [gemhead] to begin drawing graphics to the empty window, I start off by creating a 3D object; a cube, and defining some properties; its XYZ rotation, XYZ translation, and colour. Two messages; draw fill and draw line, were connected to the cube, which would either fill the render into a solid shape, or draw the rendered shape with out-lines.
Step 3 & Step 4: A counter was created to continuously loop an animation, referring back to step 2; the cube object. The counter counts the number of bangs received, that number can then be sent and received without patch cords. In this case, the XY rotation for the cube and Z rotation for the cone was receiving messages from the counter, which locked the two shape in a rotation.
Step 5 & Step 6: There are two different particles emerging from the window; in step 5, default particles are drawn as points, and in step 6, sphere particles are rendered into the window. To begin creating a particle system, another head must be created [part_head], then the particle source [part source] controlling the amount spawned and domain of the particles can be integrated. Other properties such as [part_killold] are added to kill particles that have been on screen for a specific amount of time, [part_orbitpoint] forces particles to orbit around either the X, Y, or Z positions and the gravity is how attracted these particles are to the positions. The difference between Step 5 and 6, is that Step 6 renders a 3D shape, the shape can then have its size increased/decrease and detail/segments added (increasing segments can slow down the render).
Step 7: One last [gemhead] was created to manage the lighting back in Step 1. The [world_light] has two outlets can can be set-up for two different lighting options, in this case, a normal white-light was added to the environment (Figure 1).
In the end, this was the final result:
Using pure data, I took advantage of 3D shapes and render effects to create a "space-like vacuum", with particles shooting towards the window whilst also being pulled back into the orbit. My only inspiration was the idea of space and an infinite amount of stars compiled into a cube, expanding and retracting.
To further improve my work, different external images (photographs) could have been used in someway, and maybe a few sound effects to create the effect of immersion, but space is a vacuum, which would break the whole "outer-space" theme.
Patch link: https://drive.google.com/a/greenwich.ac.uk/file/d/1Ual0N50edJsDBaFvC0ea51YrI5dfaASp/view?usp=sharing
Patch Notes: When loaded, settings for the visuals are all "messages" due to "number" always resetting. All the "message" inputs have the correct settings in-order to view the visuals, thus all "message" inputs must be clicked upon creating the window, otherwise the visual wont be properly view-able as show in the above video.
I made a quick video showing how to make sure the visuals work:
(I know its a chore... sorry about that)

Comments
Post a Comment