Alex Martinelli Profile picture
Data Scientist @Zalando Previously @IBMWatson. CV, Generative-Models, Representation-Learning. Drawings+Generative-Art @ https://t.co/q19ioCuZIR

Feb 7, 2022, 34 tweets

A collection of #geometrynodes tips and tricks (full node-tree + optional demo video)

Starting with a simple but very useful value-loop. Can tweak the RGB curve from the current linear behavior to your preferred setup.

#b3d

Can also add your tweening function in between.

Here using cx^2 + (1-c)x

(for more details about tweening see: )

#b3d #geometrynodes

Displace geometry along normals. Another simple one, but needed as foundation for future examples.

Here the noise factor (single value per position) determines how much to offset each point along its normal. Multiply-node controls global noise strength

#b3d #geometrynodes

Examples with different texture configs

Mirrored displacement. Handy if you need some noise randomness while maintaining symmetry. Not limited to noise only, the trick is simply to have centered geometry and take the absolute of the position before passing it to the next processing node

#b3d #geometrynodes

From this node setup, keep the absolute math-node only for the wanted mirrored axis (e.g. taking the absolute of position.x will give you mirrored symmetry on the x axis)

Array. I'm expecting to see this soon as an official node (together with the other most popular modifiers), but for now this simple setup does the trick, and is easy to expand upon.

#b3d #geometrynodes

Circular Array. The trim-curve node doesn't work on curve-line (nor any other cyclic spline) so you'll have to hack in some other way if you want just partial circle segments.

#b3d #geometrynodes

Curve profile modelling. Profiling a circle-curve with a line manipulated via the float-curve node.

#b3d #geometrynodes

node-tree

Raycast + curves + noise. I'm sure the setup can be improved, but it's already a simple/good enough foundation for many effects like cables, electric bolts, plants, etc.

#b3d #geometrynodes

Spiral. GN has already a "Curve Spiral Node", so most likely you can just use that, but I like this setup because it relies on the mathematical formulation, so I can easily get different types of spirals (see next tweet)

#b3d #geometrynodes

Archimedian, hyperbolic, fermat and logarithmic spirals. Tweaking the logarithmic can also give you the golden spiral

Randomized distribution along curve. Given a curve, allows to distribute any given geometry along it, and randomize such distribution via the Selection socket.

Sample a defined max number of points and for each get a random value (between 0 and 1, based on the ID), if value is below 0.5 instance the geometry on the point

Displacement by geometry proximity. Here the icosphere (external object) geometry controls the strength of the wave displacement for the GN grid. The closer a point of the grid is to a face of the sphere, the least displacement will get.

#b3d #geometrynodes

All depends on how we want to map the proximity to the displacement. Here it tends to zero strength based on icosphere scale and faces, but could use the same info to build more rich logic.

Displacement by geometry proximity. Worth stressing that this setup can control not only displacement strength, but in fact any "field" property (any diamond shaped socket). Here wave texture properties are controlled at position level based on proximity val

#b3d #geometrynodes

Faces extrusion driven by video. Each face extruded along its normal, here using video texture intensity as multiplier factor. The input vector to the group is the UVMap, useful to properly map the video to the faces. Extrude node is available in Blender 3.1

#b3d #geometrynodes

Node-tree and UVmap parameter detail

Quick and dirty camera culling for distributing points. Assumes camera is track to the object of interest and ignores the actual view frustum. The "cosine threshold" value (-1,1) gives control on the "culling strength".

#b3d #geometrynodes

This relies on the fact that the dot product of two normalized vectors is equal to the cosine of the angle between them. By comparing the cosine value we can filter out faces based on how much they "look away" from the camera location

Loop texture. My setup for proper looping (e.g. noise), using W parameter of 4D node. I don't use the "position" param because often makes motion too visible.
Downside here is extra computation and "softening" during blend/mix of the two textures

#b3d #geometrynodes

The "noise texture" group is simply to have single texture setup, the only difference is the passed W value. With the map-range you can control when the two texture blend (e.g. spread across full run or on shorter span)

Dangling Splines. Simulates gravity for each spline assuming start and end points to be unmovable. "math power" + vector (strength) to control "looseness". The float curve can also be used to customize behavior.

#b3d #geometrynodes

You can then simply plug-in some noise to have the effect of wind or other kind of affectors motion.

3D point grid. Handy initial setup to work on full volumes instead of faces. I used this for many of my recent posts regarding point-cloud and scientific viz.

#b3d #geometrynodes

Allows for example to evaluate 3D texture for the full volume, like in this example with a Voronoi texture.
Filtering of points can then be added via the "delete geometry" node.
#b3d #geometrynodes

Mesh volume to points. More complex setup compared to the above one, but give full flexibility of using an existing mesh to create the point grid. Only points inside the mesh are considered. Setup isn't perfectly accurate, but is sufficient for basic cases.

#b3d #geometrynodes

First a 3D grid is created out of the geometry bounding box, then points outside the mesh are removed. We again leverage dot-product as selector for the "delete geometry" node

As show in the past you can then have textures computed at each point, and get effect like the Wave shown here on Suzanne

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling