Skip to content

Canvas

Reads and draws a variety of 3D model formats such as OBJ and Collada (see complete list under notes)

When providing a custom model file, ensure it has a proper UV mapping for texture projection (dense uv island packing and no overlapping).

Only tesselated polygons are drawn and surfaces that are not tesselated are converted before drawing

This node should be prefered for virtual projections over its sister node Model.

Canvas Node

Canvas vs Model

SPARCK provides two nodes for displaying 3D geometry:

Canvas Model
Optimized for projection mapping Full-featured with materials, lighting, shadows
Use for projection surfaces Use for scene decoration
Works with SpatialShadery & TextureProjectory Works with Material & Light nodes
Built-in texture baking No baking support
No lighting/shadow support Full lighting & shadow casting

Rule of thumb: Use Canvas for models that represent surfaces you project onto, use Model for objects that need realistic rendering.

Reference

The following properties can be configured for this node:

Property Type Description
drawto - set the render group. Capture/Beamer/3DViewer have an equivalent in which you can choose which group to render.
shape - select the shape or model file to draw. If a file, it needs to be located inside the ~/_assets/_model folder. you can also drag'n drop files, which will be copied into the _model folder and autmatically selected.
meshfile drag n' drop If the shape is a file, it needs to be located inside the ~/_assets/_model folder. you can also drag'n drop files, which will be copied into the _model folder and autmatically selected.
fileWatch - watches the model file. when it changes, it will be autmatically reloaded
shader - the shader applied to the canvas. If it is a SpatialShadery or TextureProjectory shader, additional paramaters allow
bake dim [px] the baked texure dimension
bake unique - attempts to execute the baking render pass for each individual canvas in another subsequent frame
border width [px] bleeds the baking results over its borders. Can fix some artifacts
parent - parent transformation node
position (local transformation) position x y z
rotation (local transformation) rotation x y z
scale (local transformation) scale x y z
color - object color
frontface draw..
  • polygons - only faces
  • lines - only lines
  • points - only vertices
  • backface draw..
  • polygons - only faces
  • lines - only lines
  • points - only vertices
  • cullface - choose cullface:
  • 0=Off
  • 1=Back
  • 2=Front
  • blend - enables blendmode
    blendmode - choose blendmode:
  • alphablend
  • add
  • multiply
  • screen
  • exclusion
  • colorblend
  • coloradd
  • alphaadd
  • depth - depth buffering
    showaxes - show axes of the models origin
    publish transformation - publishes this mode transformation as a transformation node
    Inlet Type Description
    properties properties properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties
    main texture main texture. press to reset to default
    custom matrix custom jit.matrix
    Outlet Type Description
    baked texture baked texture(s)
    baked texture baked texture used in current renderpass

    Built-in Shapes

    Quick Shape Selection

    Canvas provides several built-in shapes for common projection surfaces:

    • plane: Flat surface — ideal for floors, walls, screens
    • cube: Six-sided box
    • sphere: Spherical surface — for dome projections
    • cylinder: Cylindrical surface — for column projections
    • custom file: Load any OBJ or supported 3D format

    For complex or irregular surfaces (cars, heads, sculptures), load a custom mesh that matches your physical projection target.

    Typical Workflows

    Floor Projection Setup

    For a typical floor projection with multiple projectors:

    1. Add a Canvas node and set shape to plane
    2. Set scale to match your physical floor dimensions (1 unit = 1 meter)
    3. Assign a SpatialShadery shader for multi-projector blending
    4. Set drawto to include both 3DViewer and your Beamer render groups
    5. Connect content via texture inlet or SpoutReceiver/SyphonReceiver

    Texture Baking Workflow

    When using SpatialShadery or TextureProjectory with project to set to baked textures:

    1. The shader computes projector contributions onto the canvas
    2. Results are baked into textures (output via baked outlets)
    3. Set bake dim to control baked texture resolution
    4. Enable bake unique if multiple canvases cause rendering conflicts
    5. Adjust border width to fix edge artifacts from UV seams

    Canvas Types for Different Projections

    Unlimited Possibilities

    Only your imagination (or the physics of 3D space) limits what SPARCK can project onto. Common canvas types include:

    • Dome — planetarium-style 360° projections
    • Cylinder — surround projection for columns or rooms
    • Custom meshes — cars, sculptures, architectural elements, faces

    Create custom meshes in 3D software (Blender, Cinema 4D, etc.) that match your physical projection targets. Export as OBJ for best compatibility.


    Important Notes

    Supported File Types

    List of supported file types: - Wavefront Object Model File - .obj is the prefered file format. SPARCK likes it. - 3D GameStudio Model File - .mdl - 3ds Max 3DS Model File - .3ds - 3ds Max ASE Model File - .ase - 3D GameStudio Terrain File - .hmp - AC3D Model File - .ac - AutoCAD DXF Model File - .dxf - Biovision BVH Motion Capture File - .bvh - BlitzBasic 3D Model File - .b3d - CharacterStudio Motion Capture File - .csm - Collada Model File - .dae - Direct X Model File - .x - Doom 3 Model File - .md5 - Irrlicht Mesh File - .irrmesh - Irrlicht Scene File - .irr - Izware Nendo Model File - .ndo - LightWave Model File - .lwo - Milkshape 3D Model File - .ms3d - Modo Model File - .lxo - Neutral File Format File - .nff - Object File Format File - .off - Ogre3D XML Model File - .mesh.xml - PovRAY Raw Model File - .raw - Quake I Mesh File - .mdl - Quake II Mesh File - .md2 - Quake III Mesh File - .md3 - Quake III BSP File - .pk3 - Quick3D Q3D Model File - .q3d - Quick3D Q3S Model File - .q3s - Return to Castle Wolfenstein Model File - .mdc - Sense8 WorldToolKit File - .nff - Stanford Polygon Library Model File - .ply - Stereolithography Model File - .stl - Terragen Terrain File - .ter - TrueSpace COB Model File - .cob - TrueSpace SCB Model File - .scb - Valve SMD Model File - .smd - Valve VTA Model File - .vta

    File Locations

    ~/_assets/_model/          # 3D model files (.obj preferred)
    

    Scale Reference

    In SPARCK, 1 unit = 1 meter. When setting up your Canvas scale to match a physical space:

    • A 6m × 12m floor = scale 3 6 1
    • A 3m diameter dome = scale 1.5 1.5 1.5

    Correct scaling ensures alignment between virtual projection content and real-world visuals from external engines like Unreal or TouchDesigner.



    Need help or want to suggest improvements?

    Report an issue Improve the Docs

    Last updated: 2025-12-01 | Edit this page on GitHub