Image Extrude

Read with AI
All docs in one file (llms-full.txt)
ImageExtrude #3D #Node

Takes the silhouette of a Render Texture as a contour, extrudes it along Z, and outputs it as a Mesh. A logo or a cut-out becomes a “thing” with thickness rather than a flat “board”. Connect the Mesh to Mesh Renderer or CopyToPoints to draw it. The extrusion puts the center of the image at the origin, with the front face (the side facing the default camera) on the negative z side and the back face on the positive side.

The computation runs in the background without stalling the frame, and the mesh is swapped in once it finishes. A rebake runs when the input is connected or swapped, when a parameter changes, when Bake is operated, and when the resolution of the input video changes. The baked result is not saved in the project, so one bake also runs automatically on load.

Settings on the node

  • Alpha / Luma — what counts as the silhouette. Alpha (default) is opacity, Luma is luminance (0.299R + 0.587G + 0.114B)
  • Res256 / Res512 (default) / Res1024 / Res2048 — the number of samples used to pick up the contour (along the long edge). It will not get finer than the source video
  • Live — OFF (default) is Hold behavior that bakes only under the conditions above. Turning it ON reads the video back and keeps baking every frame (it uses CPU constantly, so only when you want to follow moving video)
  • Bake — bakes again with the current video. The Bake port (a trigger) and the Live port are how you operate this button and this toggle from the graph

Notes on the ports

  • Threshold — clamped to 0-1 (default 0.5). Values at or above this are treated as the inside of the silhouette
  • Depth — the thickness of the extrusion (default 1)
  • Size — the width of the image in world units (default 20, lower limit 0.1). The height is determined by the aspect ratio of the video
  • Simplify — clamped to 0-1 (default 0.3). How strongly the contour points are thinned out. 0 means no thinning
  • Bevel — the width of the bevel on the front and back edges (in world units, default 0 = no bevel). Contours where the bevel breaks down in thin areas have their width reduced automatically, and the status shows “面取りを縮めた輪郭N本” (bevel narrowed on N contours)
  • Bevel Segments (labeled Segments on the node) — the number of subdivisions of the bevel. Clamped to 1-8 (default 1). 1 is a flat 45° bevel, 2 or more gives a rounded bevel
  • Smooth — clamped to 0-1 (default 0.25). How strongly the stair-stepping of the contour (the jaggies of 8-bit alpha) is smoothed out
  • FrontFace / BackFace (labeled Front Face / Back Face) — whether to cap the front and back faces (default: both ON). Turning only the back face OFF gives a vessel-like shape, and with both OFF you get a tube of the contour

The contour points total at most 16384; anything beyond that is thinned out evenly (a large contour is never dropped whole).

The status line shows “In 未接続” (In not connected), Baking… and Baked: N polys / M verts (Live: … while Live is on). If reading the video back fails three times in a row it stops, and Bake retries it.

Input ports

Port IDType
Render TextureRenderTexture
Thresholdfloat
Depthfloat
Sizefloat
Simplifyfloat
Bevelfloat
Bevel Segmentsint
Smoothfloat
FrontFacebool
BackFacebool
Baketrigger
Livebool

Output ports

Port IDType
MeshMeshOutput

Scriptable members

PathType
thresholdInputfloat
depthInputfloat
sizeInputfloat
simplifyInputfloat
bevelInputfloat
bevelSegmentsInputint
smoothInputfloat
frontFaceInputbool
backFaceInputbool
liveInputbool
currentLivebool

Synapse Apps (scripting)

await synapse.modules.create({ type: "ImageExtrude" })

Pages linking here

Also referenced from