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:
- Install the plugin via App Menu → Plugin Manager.
- Open the Kiosk panel inside your DCC app.
- Click Launch Kiosk in the panel — this establishes the connection.
- 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.
Integration
Blender
- Open Kiosk → App Menu → Plugin Manager
- Select Blender and click Install
- Browse to your Blender installation directory
- 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
- Open Kiosk → App Menu → Plugin Manager
- Select Maya and click Install
- Browse to your Maya installation directory
- 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
- Open Kiosk → App Menu → Plugin Manager
- Select Houdini and click Install
- Browse to your Houdini user preferences directory (e.g.,
C:\Users\<user>\Documents\houdiniXX.X\) - 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
- Open Kiosk → App Menu → Plugin Manager
- Select Cinema 4D and click Install
- Browse to your Cinema 4D installation directory
- Kiosk copies the plugin files (
.pypformat) 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:
- Open App Menu → Plugin Manager.
- Select a DCC and click Edit Commands for a category.
- Click the New Script button — Kiosk creates a new Python script pre-filled with example code.
- Adjust the script to your needs. It will appear in the commands list for that DCC immediately.
A comment on the line directly above the function definition is shown as its tooltip in the Kiosk UI.
The file_info dictionary contains:
| Key | Description |
|---|---|
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_):
| Command | Description |
|---|---|
kiosk_import_asset | Import the file into the scene |
kiosk_create_material | Create a renderer-specific material from detected PBR textures |
kiosk_import_hdri | Load an HDRI environment |
kiosk_create_area_light | Add an area light |
kiosk_reveal_in_explorer | Open 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 type | Widget shown |
|---|---|
bool | Checkbox |
int | Integer spinbox |
float | Decimal spinbox |
str | Text 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')