HK SceneControl
Light your scene without the weight. HK SceneControl adds lightweight Unity engine lights you can attach to atoms, transforms or the camera, light a scene in one click with saved rig templates, animate with pulse/flicker/strobe effects (including audio-reactive), and tint for VR passthrough β all from one plugin, with far less overhead than stacking VAM Lights.HK SceneControl must be added as a Scene Plugin (attached to the CoreControl atom). It will not function on any other atom.
Beta
Quick Start (60 seconds)
Light an atom in under a minute:- Add HK SceneControl to the CoreControl atom as a scene plugin.
- Open Lights β Manage Templates and click a built-in template β try ThreePoint for clean studio lighting.
- Pick the atom to light as the Apply To Atom target, then click Apply to Atom. A rig appears around the atom instantly.
- (Optional) Open Lights β Global Settings and adjust Light Warmth to set the whole scene's mood.
That's it β a lit subject in a few clicks. Everything below is refinement.
Common Setups
Studio portrait lighting
- Lights β Manage Templates: open ThreePoint, choose the person as the Apply To Atom target, click Apply to Atom.
- Lights β Global Settings: set Light Warmth warmer or cooler to taste.
- Fine-tune any single light via Manage Lights β Edit Light.
Handheld / VR working light
- Lights β Add Camera Lights: set Intensity, Range, Angle and Light Count, then Add Camera Lights.
- Result: lights that emit forward from your viewpoint and follow the camera.
Music-reactive light show
- Add a light, then Manage Lights β Edit Light β Effects β Strobe.
- Turn on Link to Audio, choose an Audio Type (RMS for loudness, Amplitude for peaks) and set Audio Sensitivity.
- Result: lights that pulse to the beat of scene audio.
VR passthrough scene
- Scene Control β Passthrough Control: set a Background Color to match your room.
- Add atoms as Hidden (invisible) or Change Material (painted the background colour) so they blend into the passthrough feed.
Showcase
Light EffectsAudio-Linked Lights
How the lights work
Lightweight Unity lights are created and linked to atoms or the camera, giving you automation without the overhead of VAM Lights.Light anchoring
- Camera Lights β emit from the camera; support positional and rotational offsets.
- Atom Lights β tethered to an atom by default (spot lights look at it). Can be made static (fixed in space) or set to emit from the atom, with offsets relative to it.
- Transform Path Lights β tethered to any transform in the scene hierarchy by its full slash-delimited path (e.g.
RootObject/Child/SubChild). Useful for bones, prop children or environment pieces that aren't top-level atoms.
Colour
- Lights use the Global Light colour by default (one setting to adjust scene ambiance), or you can give any light its own colour.
Effects
- Pulse, Flicker, and Strobe (time-based or audio-linked).
Templates
- Built-in rigs ship ready to apply: ThreePoint (studio), Daylight (Sunrise, Morning, HighNoon, Afternoon, Sunset), Moonlight, CandleLight (with flicker), Cyberpunk (two-point neon).
- Save your own scene lights as a named template and re-apply them to any atom later.
The Play Dock
Alongside the classic plugin panel, HK SceneControl also draws its own small floating dock β fixed to the screen edge on desktop, or attached to your chosen VR hand β with one-press play buttons for Animations, Presets, Lights and Passthrough toggles, Sub-Scene switching, and Embody POV. Group/entry setup (naming a group, picking which atoms and clips belong to it) always happens on the classic panel; the dock only ever carries the "press this to make it happen" controls, so it stays small and quick to use mid-scene. Configure its position, size and visibility from Scene Control β Custom UI Dock.
Full Reference
The plugin groups its menus into several top-level categories, plus two always-available global menus.- Lights β all lighting controls (Global Settings, Manage Lights, Add Custom Light, Add Atom Lights, Add Camera Lights, Configure Light, Light Groups, Configure Light Group, Manage Templates, Configure Template, Create Template)
- Scene Control β environment and dock controls (Custom UI Dock, Passthrough Control)
- Animation β reusable named groups of Timeline animations you can play with one press (Animation Groups, Configure Group)
- Presets β reusable named groups of atom presets you can apply with one press (Preset Groups, Configure Group)
- Collider Groups β stop a multi-piece prop's own parts from colliding with each other (Collider Groups, Configure Collider Group)
- Sub-Scenes (dock only) β switch between a scene's named "looks", each a set of animation, preset and light groups applied together
- Embody POV (dock only) β switch between community Embody plugin instances in the scene
- Data Store (global) β save, restore and load plugin data
- Settings (global) β feature toggles and dropdown filters
- External API β hidden actions/params for VaM triggers and other plugins (see below)
Data Store
Manage the plugin's saved data.- Save All Data β saves all plugin data. Trigger this before saving the scene so your changes are included. This is deliberate, to avoid unintended overwrites. Only shows up once you've saved the scene at least once; before that, a note reminds you to save the scene first.
- Restore Scene Save β re-reads this scene's own saved plugin data from disk and re-applies it, overwriting your current settings. Useful if you've re-added the plugin mid-session (for example, after updating it) and want your saved settings back, since the automatic restore only fires on a scene load. Asks you to confirm first; Cancel leaves everything as-is. If nothing has been saved for this scene yet, nothing happens β that's normal for a brand-new scene.
- Load from Scene Save β opens a file browser so you can pick any saved scene and pull its plugin data into the current one, instead of only the currently loaded scene. If that scene has no matching data, you'll see a message saying so. If it has one or more matches (for example, several saved presets), you'll get a button for each one to choose from, plus Cancel. Asks you to confirm before overwriting your current settings.
How Your Data Is Saved
Alongside the data saved inside the scene file itself, the plugin also writes a small companion save file next to your scene on disk. It's around 80% smaller than the old embedded data for the same settings, and built so future plugin updates are far less likely to break an older save.- You'll see this as a small
.hkfile sitting next to your scene file, named after the scene. - The same save format powers Templates (see Lights β Manage Templates below) β a template is just this same kind of save, given a name so you can re-apply it later. Templates are stored as
.hktfiles underSaves/PluginData/HoringKoning/instead of next to the scene. - Existing scenes upgrade to the new companion file automatically the first time you save them. There's nothing to configure and nothing you need to do.
Settings
Options that apply to the whole plugin.Feature Management
Ignore Atoms in Dropdowns
- Each major component (e.g. HK Scene Control) has an on/off toggle.
- Disabling a component stops it running without removing its data.
Ignore Atoms in Dropdowns
- Ignore Hidden Atoms β hidden atoms are excluded from all atom-selection dropdowns.
- Ignore Camera Rig β the camera rig atom is excluded from all atom-selection dropdowns.
- Ignore Core Control β the CoreControl atom is excluded from all atom-selection dropdowns.
Lights
Global Settings
Adjust the overall scene lighting baseline.- Light Warmth β colour temperature (Kelvin) applied to all lights using the global colour (1,000 K = very warm/orange, 10,000 K = very cool/blue). Default 6,500 K.
- Ambient Color β colour picker for Unity's ambient/environment light, affecting the scene's base illumination.
Manage Lights
The hub for viewing and managing every light added to the scene.- Light Group β lights are grouped by the atom or camera they're linked to; select a group to filter the list.
- Selected Light β choose an individual light; it becomes the target for Edit, Copy and Remove.
- Edit Light β opens Configure Light for the selected light.
- Copy Light β duplicates the selected light with all its settings, added immediately.
- Remove Light
β permanently removes the selected light. Asks you to confirm first. - Visualize Lights β renders debug gizmos in the scene for Directional, Point, Spot, or All Lights (works on all Unity lights, not just this plugin's). While active, a single Hide Light Visualization button replaces the options.
- Remove All Lights from Scene
β removes every Unity light and light atom in the entire scene, not just this plugin's. Asks you to confirm first; cannot be undone without reloading the scene.
Add Custom Light
Create a single, fully configurable light linked to a specific atom, transform, or the camera.- Relative Object β dropdown of all atoms; the new light tethers to the selected atom by default.
- Add Custom Light β creates a new Spot light linked to the chosen atom, with default settings you can fully configure in Configure Light. It can emit from or target the atom depending on your Emit From Target setting.
- Add Custom Light By Path β opens an object explorer to anchor the light to any transform in the scene hierarchy. Drill from root objects into children to find a sub-object (bone, prop child, environment piece) that isn't a top-level atom. The full path (e.g.
RootObject/ChildObject/SubObject) is saved and resolved at creation. - Add Camera Light β creates a new Spot light that emits from and follows the main camera; no atom selection needed.
Add Atom Lights
Build a custom ring rig of spot lights around an atom. For a ready-made look, use Manage Templates below instead.- Relative Object β the atom that becomes the target for all lights in the rig.
- Place around (Custom Rig) β Intensity (0.01β1), Range (0.01β25, expandable), Angle (1Β°β180Β°), Light Count (1β255 lights placed evenly around the atom).
- Color β Overwrite Global Color gives the whole rig its own colour via a picker (once set, Clear Custom Color returns it to the global warmth).
- Add Atom Lights β creates the custom rig using the values above.
Add Camera Lights
Add a rig of spot lights emitting forward from the main camera β handheld-torch, film-light or working-light effects.- Intensity β brightness of each light (0.01β1).
- Range β how far each light reaches (0.01β25).
- Angle β spot angle for each light (1Β°β180Β°).
- Light Count β number of lights around the camera viewport (1β255).
- Color β Overwrite Global Color gives the whole rig its own colour via a picker (once set, Clear Custom Color returns it to the global warmth).
- Add Camera Lights β creates the rig using the settings above.
Configure Light
Adjust how a light looks and behaves. Select a light in Manage Lights first.Light Groups
Top controls
Strength & Distance
Position & Rotation
Color
By default all lights use the global scene warmth. Override it to give individual lights unique colours.
Shadows
Control how shadows look from this light. Light types support shadows differently.
Effects
Add dynamic effects for animation and atmosphere.
Pulse β smooth rhythmic breathing/pulsing.
Flicker β realistic flicker like a candle or failing light.
Strobe β stroboscopic blinking on a timer or synced to audio.
Quick Tips
- One checkbox per group defined in Light Groups below β check a group to add this light to it, uncheck to remove it. A light can belong to any number of groups, or none.
Top controls
- Visualize β show/hide a visual of the light while editing, so you can see where it points and spreads.
- Save & Close β saves changes and exits the editor.
- Light Type β Spot (focused beam), Directional (parallel light like sunlight), or Point (spreads in all directions). Changing the type shows/hides the relevant settings below.
- On / Off β turn the light on or off.
Strength & Distance
- Intensity β brightness (0 = off, 8 = very bright).
- Range β how far the light reaches before fading (Spot and Point only; 0 barely reaches, 25 reaches far). Directional lights don't use range.
- Angle β beam width for Spot lights only (1Β° very narrow, 180Β° very wide).
Position & Rotation
- Rotation β aim the light with X, Y, Z (each -6 to +6 for fine control) and W (rotation quaternion component). Used for Spot and Directional lights.
- Position (or Position Offset) β X, Y, Z placement (each -25 to +25). For Static Lights this is an exact scene position; for offset lights it's relative to the linked atom or camera.
- Emit From Target β ON: the light emits from the atom's centre and follows it; OFF: it emits from a fixed offset. Not available for Camera Lights.
- Static Light β locks the light at a fixed scene position (absolute world coordinates), useful for background lighting that doesn't move. The position range becomes expandable, and enabling it disables Emit From Target.
Color
By default all lights use the global scene warmth. Override it to give individual lights unique colours.
- Overwrite Global Color β opens a colour picker to give this light its own colour (great for accent lights).
- Custom Color Settings β the picker panel; the light updates live. Clear Custom Color returns it to the global warmth.
Shadows
Control how shadows look from this light. Light types support shadows differently.
- Shadow Type β Hard (crisp edges), Soft (blurred, cinematic), or None (no shadows, less performance cost).
- Shadow Resolution β clarity of shadows (256β16384). Higher is crisper but costlier; start at 1024.
- Strength β how dark shadows appear (0 barely visible, 1 fully black).
- Bias β fixes shadow flickering/artifacts (nudge 0.0001β0.001 if shadows look choppy).
- Normal Bias β Directional lights only; prevents warped/twisted shadows.
- Near Pane β closest distance from which shadows render; rarely needs changing.
Effects
Add dynamic effects for animation and atmosphere.
Pulse β smooth rhythmic breathing/pulsing.
- Speed β how fast it pulses (0 none, 5 very fast).
- Min Intensity β dimmest point of the pulse.
- Max Intensity β brightest point (must exceed Min).
Flicker β realistic flicker like a candle or failing light.
- Speed β how fast it flickers (0 none, 5 very rapid).
- Intensity Variance β how much brightness varies (0 subtle, 1 extreme).
Strobe β stroboscopic blinking on a timer or synced to audio.
- Link to Audio β ON: pulses to the beat; OFF: fixed timer.
- Time-Based (when not linked) β Interval (how often it blinks; 0 continuous, 5 very slow) and Delay (offset so lights don't strobe simultaneously).
- Audio-Linked β Audio Sensitivity (the light switches on when the chosen audio value exceeds this), Audio Type (RMS overall loudness / Amplitude peak spikes), Amplitude Type (Rectangular, Triangle, Hamming/Hanning/Blackman/BlackmanHarris response shapes), and two read-only Audio Displays (Root Mean Square and Max Amplitude, 0β1).
Quick Tips
- Combine effects for complex animation (e.g. pulse + flicker for a candle).
- Use audio-linked strobe with music for synchronised light shows.
- Lower speeds read as more natural, higher as more dramatic.
- Use Visualize while editing to see changes in real time.
Manage Templates
Browse, apply and build reusable lighting rigs. A template is a named group of already-configured lights you can drop onto any atom in one click.- Create New Template β opens Create Template to build a new one from lights already in the scene.
- Templates β your own saved rigs, listed by name.
- Built-in Templates β the rigs that ship with the plugin: ThreePoint, Sunrise, Morning, HighNoon, Afternoon, Sunset, Moonlight, CandleLight, Cyberpunk.
- Click any template's name to open Configure Template.
Configure Template
Apply the selected template to an atom. Reached by clicking a template in Manage Templates.- Apply To Atom β dropdown of atoms; choose the one to light.
- Color Shift β Hue Shift (-180Β° to 180Β°), Saturation Shift and Value Shift (both -1 to 1) shift every light in the template's colours together, keeping their relative hues β handy for retinting a whole rig (e.g. warmer sunset, cooler moonlight) without editing each light. Leave all three at 0 to use the template's original colours.
- Apply to Atom β adds the template's lights to the chosen atom, with any colour shift baked in. The screen stays open, so you can pick another atom and apply the same template again without going back.
- Back β returns to Manage Templates.
- Delete Template
(your own templates only) β permanently removes the template. Built-in templates can't be deleted. Asks you to confirm first.
Create Template
Save already-configured scene lights as a new, named template.- Relative Object β pick the atom, camera or custom-path group whose lights you want to pull from.
- Light β pick a single light from that group.
- Add Light β stages the selected light into the draft.
- Add All From Object β stages every light targeting the selected Relative Object at once.
- Template Lights β the draft list; each entry has its own Remove button.
- Template Name β name the template, then click Save Template. Saving over an existing template name asks you to confirm before it's overwritten.
- Clear List β empties the draft without saving.
- Back β returns to Manage Templates, discarding an unsaved draft.
Light Groups
Name a group of lights so you can flip them all on/off together from the play dock β for example, every light in a "romantic" look versus a "harsh" one.- Name β type a name and click Add Group to create a new, empty group.
- Click any existing group's name to open Configure Light Group.
Configure Light Group
Rename or delete a light group. Reached by clicking a group in Light Groups.- Name β rename the group; auto-adjusted if it collides with another group's name.
- Member Lights β read-only list of lights currently in this group. Add or remove lights from the Configure Light screen's Light Groups checkboxes, not here.
- Back β returns to Light Groups.
- Delete Group
β permanently deletes the group and removes it from every member light. Asks you to confirm first.
Scene Control
Custom UI Dock
Configure the position, size and visibility of the floating play dock described above.- Show dock β turn the dock on or off. It can also be toggled from its own always-visible show/hide button, which keeps this checkbox in sync.
- Desktop scale / width / height β size of the dock when docked to the screen edge on desktop. Ignored in VR.
- Hand β which VR hand the dock attaches to. Ignored on desktop, which always docks to the screen's right edge.
- Offset (cm) β how far the dock sits from your hand along its forward axis.
- Angle (deg) β rotates the dock around your hand for a comfortable viewing angle.
- VR scale / width / height β size of the dock in VR. Ignored on desktop.
Passthrough Control
Configure the scene background for VR passthrough. Set a camera background colour and apply it to specific atoms β including full characters β so they blend with or vanish into the passthrough feed.- Background Color β full HSV picker for the main camera's background; the reference colour when atoms are set to passthrough material or hidden. Match it to your real-world environment.
- Quick Color Presets β Blue, Green (green-screen workflows), Magenta.
- Passthrough Atoms β dropdown of atoms not yet assigned a passthrough mode; once added, an atom appears in the removal list below.
- Update Renderers β re-applies the current background colour to all atoms already in the passthrough list (use after changing the Background Color).
- Add as Hidden β hides the selected atom by disabling its material renderers; it stays in the scene but is invisible (no material replacement).
- Change Material β replaces the selected atom's materials with a solid colour matching the background; useful when geometry must pass through where it overlaps a non-passthrough object. Works on Person atoms too: the whole body is painted a flat, unlit colour that a passthrough or mixed-reality compositor can key out cleanly.
- Removing Passthrough Atoms β each atom shows a Remove button labelled with its name and mode; asks you to confirm first. Removing a Material-replaced atom restores its renderer (a scene reload may be needed for full restoration); removing a Renderer-hidden atom makes it visible again immediately.
The play dock's Passthrough screen mirrors this list as one on/off toggle per configured atom, plus All On/All Off buttons β handy for flipping passthrough on and off mid-session without leaving Play mode. Adding, removing or changing an atom's mode still happens here.
Animation
Animation Groups
Name a group of Timeline animations across one or more atoms so you can start them all together with a single press β for example, every character and prop animation for one scene beat.- Name β type a name and click Add Group to create a new, empty group.
- Click any existing group's name (with its entry count) to open Configure Group.
Configure Group
Rename a group, and add or remove its entries. Reached by clicking a group in Animation Groups.- Name β rename the group; auto-adjusted if it collides with another group's name.
- Entries β one row per linked atom/animation pair, each with its own Remove Entry button (asks you to confirm first).
- Add Entry β Atom (which atom to drive), then a Plugin dropdown (the Timeline instances on that atom β an atom can host more than one, animating different parts), then a Clip dropdown of that instance's available animations. Clip choices also include any Timeline animation-group name suffixed with "/*", which picks a random matching clip fresh every time the group plays.
- Back β returns to Animation Groups.
- Delete Group
β permanently deletes the group. Asks you to confirm first.
Presets
Preset Groups
Name a group of atom presets (Appearance, Pose, Clothing, or any other atom-preset category) so you can apply them all together with a single press β for example, an outfit-and-pose combo across several atoms.- Name β type a name and click Add Group to create a new, empty group.
- Click any existing group's name (with its entry count) to open Configure Group.
Configure Group
Rename a group, and add or remove its entries. Reached by clicking a group in Preset Groups.- Name β rename the group; auto-adjusted if it collides with another group's name.
- Entries β one row per linked atom/preset-category pair, each with its own Remove Entry button (asks you to confirm first).
- Add Entry β Atom (which atom to preset), then Preset (which of that atom's preset categories β Appearance, General, Pose, Plugin, Hair, Clothing, Skin for a Person; a single "Preset" for most other atom types), then Browse for Preset File... to pick the
.vapfile. - Back β returns to Preset Groups.
- Delete Group
β permanently deletes the group. Asks you to confirm first.
Collider Groups
Collider Groups
Stop a multi-piece custom prop (e.g. a bed or sofa built from several separate atoms) from jittering against its own seams, by making its pieces stop colliding with each other.- Name β type a name and click Add Group to create a new, empty group.
- Click any existing group's name (with its member count) to open Configure Collider Group.
Configure Collider Group
Rename a group, and add or remove its member atoms. Reached by clicking a group in Collider Groups.- Name β rename the group; auto-adjusted if it collides with another group's name.
- Member Atoms β each with its own Remove button (asks you to confirm first). Removing an atom restores normal collision between it and the rest of the group immediately, no reload needed.
- Add Member β pick an atom not already in the group and click Add to Group. Every pair of member atoms stops colliding with each other as soon as they're both in the group.
- Back β returns to Collider Groups.
- Delete Group
β permanently deletes the group and restores normal collision between all its former members. Asks you to confirm first.
Sub-Scenes
The play dock always shows a β Prev | (current name) | Next βΆ strip above whichever screen is selected. Prev/Next browse which sub-scene is "current" β pressing the name in the middle applies it: turns on its referenced light groups (and off every other light group β switching a sub-scene replaces the current look rather than layering onto it), plays only the first animation group it references, and applies every preset group it references. Any other animation groups it references still show up as ordinary rows on the dock's Animations screen for you to trigger by hand as the scene progresses. There's nothing to configure here β a scene starts with just the permanent Default entry unless someone has already set up more.Embody POV
The play dock's Embody POV screen lists every community Embody plugin instance found in the scene, one row per instance with a toggle. Switching one on deactivates every other instance β including one you activated from Embody's own VaM UI. There's nothing to configure; the list always reflects whichever instance is active right now.
External API
Beyond its own menus, the plugin always publishes a small set of hidden actions and value params β usable from VaM triggers. They don't appear in this plugin's own menu; they're for wiring HK behaviour into your own trigger setups. Setting one of these updates the same setting shown in the menu, and vice versa.- Light Warmth (Float, 1,000β10,000) β sets the global colour-temperature baseline.
- Ambient Color (Colour) β sets the scene's ambient/environment light colour.
- Light Template (String Chooser) β selects a built-in or your own saved lighting template by name; combine with Apply Light Template To Atom to place it. Reading its choice list also gives you every template name.
- Apply Light Template To Atom (String Chooser, choices = atom names) β applies the template last selected via Light Template to the chosen atom.
- Remove Light (String Chooser, choices = current light names) β removes the named light.
Unlike the Remove Light menu button, calling this via a trigger skips the confirmation dialog and removes it immediately. - Remove All Lights From Scene (Action) β removes every light in the scene, the same as the menu button.
Calling this via a trigger skips the confirmation dialog and removes them immediately. - HK Integration Version (read-only String) β reports the plugin's version, for other plugins that want to detect it's present. Most users never need this.
Troubleshooting
- A template added lights in the wrong place. Applying a template adds the rig to whichever atom is selected in Apply To Atom β make sure that's the right atom before clicking Apply to Atom, then fine-tune via Manage Lights β Edit Light.
- Audio-linked strobe isn't reacting. Lower the Audio Sensitivity and check the read-only RMS / Max Amplitude displays are moving with the audio.
- A directional light has no range or shadow options. That's expected β directional lights light everything and don't use Range; some shadow settings don't apply to them.
- A person isn't keying out cleanly in passthrough. Use Change Material (not Add as Hidden) on the Person atom β it paints the body a flat, unlit chroma colour. Match the Background Color to your compositor's key colour (the Green or Magenta presets make clean keys).
- "Remove All Lights" took out lights I didn't create. That action clears every light in the scene by design; reload the scene to restore them.
- My changes weren't saved with the scene. Click Save All Data in Data Store before saving the scene.
- I re-added the plugin (e.g. after an update) and my settings are gone. Click Restore Scene Save in Data Store to reload this scene's saved data β the automatic restore only fires on a scene load, not when the plugin is re-added mid-session.
- I don't see the play dock. Open Scene Control β Custom UI Dock and check Show dock is on. In VR, check the dock isn't tucked onto the back of your hand (that's the "hidden" pose) and try adjusting Offset/Angle.
- Only one animation group in my sub-scene plays automatically. That's expected β applying a sub-scene auto-plays only its first listed animation group. Trigger the rest by hand from the dock's Animations screen as the scene progresses.
- Switching a sub-scene turned off lights I wanted to keep on. Sub-scene light switching is exclusive by design β applying one turns on its own light groups and off every other defined light group. Lights that aren't in any group are never touched, so leave a light ungrouped if it should always stay as-is.
- A light group's Toggle button turned lights on that I'd turned off individually. Toggle inverts every member's current on/off state rather than forcing them all the same way β if members already differ, pressing it again won't restore the exact previous mix.