Inspired by: PPPANIK - IMAGE TO POPs: POINTCLOUD / LINE GRID
This tutorial covers the “Image to POPs” workflow shown by PPPANIK: converting a 2D texture into a 3D point cloud or a structured line grid on the GPU. It suits clean, “holographic” blueprint looks and dense generative visuals.
Operator Families in this Recipe
- TOPs (Texture Operators): Pre-processing the source image for the GPU.
- POPs (Point Operators): Converting and manipulating millions of points on the GPU.
- MATs (Materials): Applying the Line MAT for the classic wireframe/grid aesthetic.
Part 1: Source Preparation (TOPs)
The density of your point cloud is directly tied to the resolution of your source image.
- Movie File In TOP: Load your image or video.
- Fit TOP:
- Fit Method →
Fit Outside. - Common Page > Output Resolution →
200 x 200(40,000 points) or500 x 500(250,000 points). - Interpolation →
Nearest. This prevents pixel values from blending together during resize, so each point gets a clean, discrete color value.
- Fit Method →
- Level TOP: Increase Contrast to sharpen the distinction between light and dark areas.
Part 2: Pixel-to-Point Conversion (POPs)
- Geo COMP: Create a new Geometry component and enter it. Delete the default Torus.
- TOP to POP:
- TOP → Reference your Level TOP.
- Position Mode →
UVorHeight. - This maps the pixel coordinates (0-1) to 3D space.
- Delete POP:
- Operation →
Delete by Expression. - Expression →
me.inputPoint.color.r < 0.1. - This “culls” the background, leaving only the points that represent the bright parts of your image.
- Operation →
- Noise POP:
- Amplitude →
0.15. - Transform (Translate Z) →
absTime.seconds * 0.1. - This adds a subtle, organic ripple to the point cloud.
- Amplitude →
Part 3: The Line Grid Aesthetic
There are two main ways to achieve the “Grid” look:
Method A: Instancing (Copy POP)
- Rectangle POP: Create a very small, thin rectangle.
- Copy POP:
- Input 1: Rectangle POP.
- Input 2: Your point cloud (from Part 2).
- Copy Page > Use Template Point Attributes →
On.
- Line MAT: Apply a Line Material to the Geo COMP with Draw Lines and Draw Points enabled.
Method B: Line Strips (Joining Points)
- Join POP: Connect your point cloud to a Join POP.
- Set the Maximum Join Distance to a small value.
- This connects neighboring points with line primitives, creating a structured mesh/grid.
- Line MAT: Apply a Line Material. Since the Join POP creates actual line primitives, the Line MAT renders them as a wireframe grid.
Part 4: Rendering & Post-Processing (The “Pro” Look)
PPPANIK often finishes with a composite trick:
- Render TOP: Standard setup with a Camera and Light.
- The Glow (Feedback):
- Render TOP → Feedback TOP → Blur TOP (Filter Size 2) → Level TOP (Opacity 0.9) → Add TOP.
- Softlight Composite (Pro Tip):
- Create two versions of your render: one clean (Pointcloud) and one with the Line Grid.
- Composite TOP: Combine both versions.
- Operation →
Softlight. - Softlight blends the sharp lines into the soft glow of the point cloud.
Pro Tip: Texture Indexing
If you want to instance thousands of different images onto these points (rather than just drawing lines), you must use Texture Indexing:
- Index Creation: Use a Math POP or Attribute POP to create a custom attribute called
tex_index. - Expression: Set the value to
me.inputPoint.id % [number_of_images]. - Geo COMP: In the Instance 2 page, drag your POP into the “Texture Index OP” and set the “Texture Index Attribute” to your
tex_index. - Result: Every point in your cloud now displays a unique image from your texture array.
Parameter Tuning & Behavior
| Parameter | Behavior |
|---|---|
| TOP Resolution | Directly controls “resolution” of the 3D form. 500+ requires a strong GPU. |
| Delete Threshold | Higher = “thinner” form; Lower = more background pixels included. |
| Join Distance | (Method B) Higher = more “messy” connections; Lower = strict grid structure. |
| Feedback Blur | Controls the “bloom” and softness of the digital trails. |
Network Architecture
[ SOURCE TOPs ]
Movie File In ──▶ Fit ──▶ Level ──▶ [ TOP to POP ]
│
▼
[ POPs ] [ Delete POP ] ──▶ [ Noise POP ]
│
▼
[ MAT ] [ Join POP ] ◀─────[ POP NETWORK ]
Line MAT ────────────────────────▶ [ Geo COMP ]
│
▼
[ RENDERING ] [ Render TOP ] ──▶ [ Feedback Loop ]
│
▼
[ POST-EFFECT ] [ Composite TOP (Softlight) ] ──▶ OUT(y) Return to Recipes & Projects | (y) Return to TouchDesigner | (y) Return to Home