Plugins

Connect Kiosk to Blender, Cinema 4D, Maya, and Houdini.

How Plugins Work

Kiosk plugins create a direct bridge between your asset library and your 3D software. The communication happens through a watch folder on your local machine — no internet, no cloud, no ports to configure.

To start a live session:

  1. Install the plugin via App Menu → Plugin Manager.
  2. Open the Kiosk panel inside your DCC app.
  3. Click Launch Kiosk in the panel — this establishes the connection.
  4. A green dot appears in Kiosk’s top-right corner when a session is active.

From this point, clicking any asset in the DCC panel exports it straight to your scene.

Plugin manager

Integration

Blender

  1. Open Kiosk → App Menu → Plugin Manager
  2. Select Blender and click Install
  3. Browse to your Blender installation directory
  4. Kiosk copies the addon files automatically

Setup: In Blender, go to Edit → Preferences → Add-ons and enable Kiosk for Blender. The Kiosk panel appears in the N-panel (press N).


Maya

  1. Open Kiosk → App Menu → Plugin Manager
  2. Select Maya and click Install
  3. Browse to your Maya installation directory
  4. Kiosk copies the plugin files to your Maya scripts directory

Setup: Run the setup script. This adds a Kiosk shelf in Maya — click the shelf button to launch Kiosk from within Maya.


Houdini

  1. Open Kiosk → App Menu → Plugin Manager
  2. Select Houdini and click Install
  3. Browse to your Houdini user preferences directory (e.g., C:\Users\<user>\Documents\houdiniXX.X\)
  4. Restart Houdini

Setup: A Kiosk shelf is added to Houdini after install. You can also launch Kiosk via the Tab menu in any network editor.

Supported renderers: Redshift, Arnold, Karma, RenderMan


Cinema 4D

  1. Open Kiosk → App Menu → Plugin Manager
  2. Select Cinema 4D and click Install
  3. Browse to your Cinema 4D installation directory
  4. Kiosk copies the plugin files (.pyp format) to your C4D plugins folder

Setup: Restart Cinema 4D. Launch Kiosk via the Extensions Menu → Kiosk Library.

Supported renderers: Octane, Redshift


Custom Commands

How It Works

When you export an asset, Kiosk runs a command stack — an ordered list of Python functions that execute inside your DCC app. Each function receives a file_info dictionary with everything Kiosk knows about the selected asset.

To create your own commands:

  1. Open App Menu → Plugin Manager.
  2. Select a DCC and click Edit Commands for a category.
  3. Click the New Script button — Kiosk creates a new Python script pre-filled with example code.
  4. Adjust the script to your needs. It will appear in the commands list for that DCC immediately.
Edit commands panel

A comment on the line directly above the function definition is shown as its tooltip in the Kiosk UI.

The file_info dictionary contains:

KeyDescription
file_info['file_path']Full path to the asset file
file_info['file_name']Filename with extension
file_info['source_name']Name of the source the file belongs to
file_info['category_name']Active category (e.g. textures, hdri)
file_info['tags']List of subfolder names
file_info['render_engine']Renderer selected in Plugin Manager (e.g. Arnold, Redshift)

To see every available key for a specific file, right-click it and choose Development → Debug File Info.

Built-in commands (always available, start with kiosk_):

CommandDescription
kiosk_import_assetImport the file into the scene
kiosk_create_materialCreate a renderer-specific material from detected PBR textures
kiosk_import_hdriLoad an HDRI environment
kiosk_create_area_lightAdd an area light
kiosk_reveal_in_explorerOpen the file location in Explorer

Arguments

Any parameter after file_info with a default value becomes a user-configurable argument in the Command Stack editor. Click the ▸ arrow next to a command in the stack to expand its argument panel. Values are saved per-stack entry and never modify the script file.

The UI widget is inferred from the default value type:

Default typeWidget shown
boolCheckbox
intInteger spinbox
floatDecimal spinbox
strText field
# Import FBX with configurable scale and origin placement
def kiosk_import_fbx(file_info, center_on_import=True, scale=1.0):
    import bpy
    bpy.ops.import_scene.fbx(filepath=file_info['file_path'], global_scale=scale)
    if center_on_import and bpy.context.active_object:
        bpy.context.active_object.location = (0, 0, 0)

This produces two controls in the stack editor: a center_on_import checkbox and a scale decimal field. All DCC-specific imports must be inside the function body — Kiosk inspects the signature without executing it.

# Copy asset to a configurable project folder
def kiosk_copy_to_project(file_info, destination='C:/project/assets', overwrite=False):
    import shutil, os
    dst = os.path.join(destination, file_info['file_name'])
    if not os.path.exists(dst) or overwrite:
        shutil.copy2(file_info['file_path'], dst)

Here destination becomes a text field and overwrite becomes a checkbox — both editable per-stack without touching the script.


Examples

Basic — print file info (any DCC):

# Print asset info to the console
def kiosk_print_info(file_info):
    print(f"Exporting: {file_info['file_path']} from source '{file_info['source_name']}'")

Blender — import FBX and center at origin:

# Import FBX and move to world origin
def kiosk_import_fbx_centered(file_info):
    import bpy
    bpy.ops.import_scene.fbx(filepath=file_info['file_path'])
    if bpy.context.active_object:
        bpy.context.active_object.location = (0, 0, 0)

Blender — create image texture material:

# Create a Principled BSDF material with this texture
def kiosk_create_texture_material(file_info):
    import bpy
    mat = bpy.data.materials.new(name=file_info['file_name'])
    mat.use_nodes = True
    bsdf = mat.node_tree.nodes["Principled BSDF"]
    tex = mat.node_tree.nodes.new("ShaderNodeTexImage")
    tex.image = bpy.data.images.load(file_info['file_path'])
    mat.node_tree.links.new(tex.outputs["Color"], bsdf.inputs["Base Color"])

Cinema 4D — merge scene file:

# Merge the selected scene into the current document
def kiosk_merge_scene(file_info):
    import c4d
    c4d.documents.MergeDocument(
        doc,
        file_info['file_path'],
        c4d.SCENEFILTER_OBJECTS | c4d.SCENEFILTER_MATERIALS
    )
    c4d.EventAdd()

Maya — import as reference:

# Import file as a Maya reference
def kiosk_import_reference(file_info):
    import maya.cmds as cmds
    name = file_info['file_name'].split('.')[0]
    cmds.file(file_info['file_path'], reference=True, namespace=name)

Houdini — load geometry into a new geo node:

# Create a Geo node and load the file into a File SOP
def kiosk_load_geometry(file_info):
    import hou
    name = file_info['file_name'].split('.')[0]
    geo_node = hou.node("/obj").createNode("geo", name)
    file_sop = geo_node.createNode("file")
    file_sop.parm("file").set(file_info['file_path'])
    file_sop.setDisplayFlag(True)

Using the render engine:

# Create a renderer-specific material
def kiosk_smart_material(file_info):
    import maya.cmds as cmds
    name = file_info['file_name'].split('.')[0]
    engine = file_info['render_engine']
    if engine == 'Arnold':
        cmds.shadingNode('aiStandardSurface', asShader=True, name=f'{name}_mtl')
    elif engine == 'VRay':
        cmds.shadingNode('VRayMtl', asShader=True, name=f'{name}_mtl')
behind KioskMeet the maker →