Skip to content

TextureProjectory

Projects textures outwards from the location of the Camera

This is a shader and can be applied to Canvas nodes.

TextureProjectory Node

TextureProjectory vs Beamer

Both project content, but serve different purposes:

TextureProjectory Beamer
Virtual projection — projects textures onto 3D surfaces within SPARCK Physical projection — represents real-world projector output
Used for texture mapping, pre-visualization, baking Used for actual projection mapping installations
Works with SceneCamera, BoxMapCamera Requires calibration to physical projector
No physical output Outputs to display/projector hardware

TextureProjectory lets you virtually project textures onto a virtual canvas, then capture the result with a Beamer to project onto the physical world.

Reference

The following properties can be configured for this node:

TODO: Add images of projection types

Property Type Description
shader - choose between the different projection types.
  • 'single' to project one texture
  • 'multiblend' to project multiple textures
  • '360VR.single' project equirectangular textures. For this the camera needs to be a BoxMapCamera
  • '360VR.multiblend' project normal and equirectangular textures. To project a equirectangular texture, the camera needs to be a BoxMapCamera
  • 'boxmap' for projecting boxmap textures
  • project to -
  • 'canvas' to us it as a standard shader
  • 'bake texture' to bake the result into a texture.
  • projectionA-F - select the Beamer, SceneCapture or BoxMapCapture
    3d viewer - display mode of the model on which this shader is applied onto.
  • 'Textured' shows the projected texture(s)
  • 'Colored' shows the projections in colors
  • 'Overlap' shows the amount of overlap
  • 'Map' shows the differentiation
  • 'BeamX' shows projection X
  • project on - Onto which face of the model this texture is projected:
  • 'back'
  • 'both sides'
  • 'front'
  • blend bg - benables blending with the background
    use bgcolor - use this color if no specific background texture is used
    bgcolor - color if no projected texture reaches the surface
    angle mode - angle differentiation:
  • 'viewray' will differentiate based on the angle between the surface normal and the viewray,
  • 'direction' will differentiate based on the angle between the surface normal and the camera direction.
  • spread - spread factor will increase the differentiation between overlapping projections (1 = full spread)
    distance - use distance as an additional differentiator. It will show its influence when the spread is increased. (0 = no influence)
    angle limit - angle limit, how much of the visible surface area is considered (0 = no limit)
    angle falloff - size of falloff gradient at the angle limit
    bevel size - bevel size. it creates a gradient falloff defined by the frustum cone of the camera
    bevel curve - bevel gradient shape
    bevel rounded - use rounded bevel
    interpolation - interpolation correction. if strange artefacts start to appear, raise the value until the artefacts disappear. the artefacts are a result of interpolation errors between the vertex and fragment shader and occur close to the local x-y plane of the camera. increasing the subdivisions of the model can help, too
    Inlet Type Description
    properties properties properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties
    boxmap boxmap boxmap (list)
    camera texture camera A - texture one (mono, if stereo -> left texture)
    camera texture camera A - texture two (if stereo -> right texture)
    camera texture camera B - texture one (mono, if stereo -> left texture)
    camera texture camera B - texture two (if stereo -> right texture)
    camera texture camera C - texture one (mono, if stereo -> left texture)
    camera texture camera C - texture two (if stereo -> right texture)
    camera texture camera D - texture one (mono, if stereo -> left texture)
    camera texture camera D - texture two (if stereo -> right texture)
    camera texture camera E - texture one (mono, if stereo -> left texture)
    camera texture camera E - texture two (if stereo -> right texture)
    camera texture camera F - texture one (mono, if stereo -> left texture)
    camera texture camera F - texture two (if stereo -> right texture)
    Background texture Background texture
    Outlet Type Description

    Shader Modes

    Choosing the Right Shader Mode

    TextureProjectory offers five shader modes for different projection scenarios:

    Mode Description Camera Type
    single Project one texture from one camera SceneCamera / LookAtCamera
    multiblend Blend multiple textures from multiple cameras SceneCamera / LookAtCamera
    360VR.single Project equirectangular (360°) texture BoxMapCamera required
    360VR.multiblend Blend equirectangular with standard textures BoxMapCamera required
    boxmap Project BoxMap textures (6-face cubemap) BoxMapCamera required

    For 360° content from external engines (Unreal, Unity, TouchDesigner), use 360VR.single mode with equirectangular content received via Spout/Syphon.

    Debugging Visualization

    3D Viewer Display Modes

    Use the 3d viewer property to debug and visualize your projection setup:

    • Textured: Shows the actual projected texture(s) — use for final output
    • Colored: Shows each projection source in a unique color — useful for identifying coverage
    • Overlap: Visualizes where projections overlap — helps optimize blending
    • Map: Shows the differentiation between projections
    • BeamX: Shows individual projection X only — isolate specific sources

    Common Workflows

    Single Texture Projection

    For projecting a single texture onto a 3D surface:

    1. Create a SceneCamera or LookAtCamera positioned as your virtual projector
    2. Add a SceneCapture linked to the camera
    3. Apply TextureProjectory shader to your Canvas
    4. Set shader mode to single
    5. Set projectionA to your SceneCapture
    6. Connect your texture to the camera A inlet

    360° BoxMap Projection

    For seamless 360° content from external render engines:

    1. Create a BoxMapCamera at your desired viewpoint
    2. Add a BoxMapCapture linked to the camera
    3. Receive 360° content via SpoutReceiver or SyphonReceiver
    4. Apply TextureProjectory shader to your Canvas
    5. Set shader mode to boxmap
    6. Connect the BoxMapCapture's boxmap outlet to the boxmap inlet

    Troubleshooting

    Interpolation Artifacts

    If strange visual artifacts appear (especially near the camera's local X-Y plane):

    1. Increase the interpolation value until artifacts disappear
    2. Alternatively, increase the subdivisions of your target model

    These artifacts result from interpolation errors between vertex and fragment shaders.


    IMPORTANT: Projection Selection

    This shader is usually applied to a Canvas which in turn is rendered (or captured) by a capture node (be it a Beamer, SceneCapture or BoxMapCapture). It is of utmost importance that the 'projection' selection points to the capture node that renders the canvas this shader is applied to, otherwise this shader will not work as intended.



    Need help or want to suggest improvements?

    Report an issue Improve the Docs

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