• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
SceneDirector

Plugins + Scripts SceneDirector

Download [<1 MB]

Introduction​

SceneDirector is meant to become the Swiss Army knife of atom state management and scene scripting.

It's based on my personal ScenePlugin, which was used to drive the DildoLanguage demo scene, as well as all my personal scenes. But it had no UI to speak of and was never intended for public release. This is a complete rewrite, based on similar ideas, with proper UI. Hopefully you will find one of its many features useful!

This version is considered a preview release. It's still under heavy development and probably missing some features you'd expect to be already there. But maybe not missing various annoying bugs. It's already powerful enough to drive the stand-alone release of the DildoLanguage Scene, where it's used to control the states of all atoms in the scene:
  • Move the dildos around, switch their Master Presets.
  • Pose and Animate the girl, now with randomized idle animations smooth transitions between the poses. Note: all animations in the scene are pose-based, this plugin is not meant to replace Timeline in any way.
  • Control the UI, including the small sliding animations, dynamic text on the buttons, switching the text and images on the main panel, as well as presenting the penetration data on a text panel in the last part of the demo.

Feature Overview​

Atom States​

The plugin is built around working with Atom States. It's a Scene Plugin and can control any atom in the scene, whichever ones you assign to it on the Add/Remove tab.

For each atom controlled by the plugin, you can record any number of states. Think of a state as something like VaM's presets for atoms, but they are stored and controlled directly in the plugin. The goal is to be able to record pretty much any properties you want of any atom in those states. Then you can quickly recall any of the recorded states and apply them to the scene. But also much more. You can have the plugin smoothly transition from one state to another and use that to animate any aspects of the controlled atoms. Or you can have the plugin semi-randomly animate an atom by transitioning between random mixes of pre-recorded sub-states. This can be used for quickly setting up a character's idle animations, animating a randomly flickering light or a candle, animating UI elements and so on.

Components​

What exactly is recorded in an atom's state is controlled by components. A component is a built-in part of the plugin responsible for some parts of an atom's state. You can decide which components should be enabled for which atom, it's not all-or-nothing. Some of the already implemented components are:
  • Placement: Records positions, rotations and other properties of atom's control nodes. It can be used to record positions and poses of any atoms in the scene, and to smoothly transition them for simple pose-based animations. It also records some of the Physics properties of the control nodes, their on/off/link states and objects they are linked to. And even those can be smoothly transitioned and animated.
  • Morphs: You can define any number custom morph groups from any morphs available in VaM and then record/animate their morph values per-state. Even if you do not intend to use the plugin for state-based animations, it can be useful to organize your morphs on a character for much faster and organized access when setting up poses.
  • Lights: Control and animate various light properties, including some advanced Unity's light settings not directly available in VaM.
  • Material: Control and animate material properties of VaM objects.
  • UIObject: Control states of various VaM's UI object. Change/animate canvas or font sizes, object colors and textures. Control sliders and toggles. Customize the texts using rich formatting using the variables and expressions system.
  • Plugin: Direct support for some plugins, naturally starting with some of mine. You can control presets and actions of DildoLanguage, SexyFluids and CustomCollider directly from atom states. Direct support for any other plugins can be added as well if requested.
  • CUA: Control various aspects of CUA atoms. Override their colors, turn on/off particles inside a CUA scene, and more ; whatever is needed/requested.
Planned components and features include:
  • Custom component - control anything that can be accessed from triggers ; choose which triggerable params you want to control, then have easy access to them via sliders/toggles inside the plugin's UI.
  • Global lighting controls
  • Mirror controls - turn them on/off or dynamically change their resolution depending on where you are in the scene
  • Improved Placement controls especially for person atoms (choose which nodes to control, perhaps smarter animation during transitions)
  • Physics - control forces applied to rigidbodies, cyclic forces, physics tweaks and overrides especially for CUA
  • Clothing materials and physics
  • More advanced CUA tweaks - control colliders in CUA objects and scenes, hide/show and move objects around, reparent objects
  • Split Atoms - define separate sets of states for one atom, each set controlling different aspects/components of the atom

Variables and Drivers​

Another powerful feature of the plugin is the variables/expression system, allowing for custom scene scripting. This allows you to use MATH to control any of the properties exposed by the plugin's components.

This feature is documented in more detail on its own page HERE.

Examples​

Here are few examples of the plugin in action in one of my personal scenes. Featuring Tifa by JackyCracky. Scene is Rocky Cabin by TacoCat.

1. Custom Morph Groups
Separate morph groups for Left/Right Hand, Face and Gens tweaks.
mainMorphs.jpg


2. Pose-based Animations
Transitioning between poses by simple state interpolation, animating the poses by sub-state mixes.

3. UI Controlled by Variables/Expressions
Another pose-based animation, this time with UI elements showing various values controlled by BodyLanguage's stimulation and orgasm count values.
  • The slider matches the stimulation value
  • The texts use rich formatting to show the orgasm count, as well as a debugging view of various for-fun variables
  • Heart rate estimated from recent stimulation and orgasm count values

4. Night-time Lighting Transition
This shows a more complex pose change, transitioning several atoms and their states:
  • Main directional light changes its state to night-time-like blue lighting.
  • But this is not enough for this scene's CUA, since it has a lot of ambient lighting baked in. The scene CUA's state also transitions, changing the CUA color tint from orange to blue.
  • Similar color tint transition is used for the CUA skybox asset.
  • The CUA state transition also enables the candle particles.
  • Candle light is enabled. It uses mid-states to semi-randomly animate the flickering candlelight.

Basic Usage​

To start with the basics, to even check out what the plugin is all about, follow these simple steps:
tabs.png

  1. This is a Scene Plugin, so add it as such.
    In this preview version it does not bother checking if it's installed as a scene plugin. In fact, nothing should change if you install it on any atom - it does not care, it will control atoms you tell it to, the one it's installed on does not matter. It will just make it less convenient to use.
  2. Tell the plugin which atoms it should control. Do that on the Atom-Add/Remove tab, which should open by default. In the images below we'll use a simple sphere.
  3. On the Components tab, you can choose which aspects of the atom will be controlled by SceneDirector. Let's leave it at defaults for now, that's advanced stuff.
  4. On the States tab, press Add State to record the first state of the added atom. This will tell all its enabled Components to capture the current state from VaM.
  5. If you want to, you can now tweak the state directly in the plugin's UI.
    This first version does not live-update the state properties, so you will need to click the Apply State button to see the changes.
  6. You can also rename the state to anything you want. I strongly recommend naming things in the plugin in a sensible manner, leaving everything to State N and Pose M and what not will lead to a hard to maintain mess sooner or later.
  7. Now move the atom around, or change its material color directly in VaM (not in the plugin, we don't want to modify the current state anymore).
  8. Then press Add State to capture another state.
  9. Now you have two different states of the atom captured in SceneDirector and you can quickly switch between them. Just select a state in the State Dropdown, and then press Apply State to apply it. You can naturally do that from triggers as well.
  10. By default the states will snap-apply. Or basically teleport to their captured position, and change its recorded attributes. But you can ask SceneDirector to transition smoothly between the recorded states instead:
    • Switch to the Transitions tab.
    • The selected state is the one we are transitioning from.
    • The individual rows below show all other captured states of the atom and represent the states we would be transitioning into.
    • Simply enable the toggle on the target state's row to enable the default transition between the two states (1 second long). You can tweak each transition's properties below
    • And that's it, applying the states will not transition between them smoothly
AddAtom.jpg

Step 2: Add an atom to SceneDirector's control

AtomState.jpg

Step 4-6: Capture atom's state, change the captured state, apply the state.

AtomState2.jpg

Step 7-8: Add and capture another state.

AtomTransition.jpg

Step 10: Transitions


Those are the very basics, the plugin can already do much more, which will be documented in more detail below. Some of the features include:
  • Many types of atoms implement components giving you access to features not available through VaM directly (for example, recoloring CUA atoms).
  • There are atom components specific to the plugin that's enabled on the atom. Giving easy access to basic plugin features without having to go into each plugin's options. And letting you smoothly transition those plugin settings too!
  • You can organize atom states into Poses. A pose is basically a list of atoms and which states should be applied for them. Applying a pose them applies all those states in one go.
    • You can use some poses as sub-poses, which is a simple way to define default states for a bunch of poses in one go, instead of telling each atom what to do in every single pose.
    • You can organize Poses into Chapters. For more convenient switching between the poses.
  • For person atoms, the Placement component can capture, apply and transition not only positions and rotations of all controllers, but also their parenting state, position/rotation state and many physics settings (spring strengths). You can smoothly transition from one character pose to another, while switching to which body part is a hand parented, for example.
  • For person atoms, you can capture any Morphs. You can categorize all existing morphs into groups, and then capture/apply/transition states of any of those morphs.
  • Define mid-states for transitions. The transition will then first interpolate to the mid-state, before continuing to the target state.
  • Enable and configure several sub-states for a state. When the state is then active, it will then automatically animate between mixes of those sub-states, according to the configured rules.
  • You can define Variables and Expression. This lets you use the power of math to driver various atom properties.
    This is currently under heavy development. The variables and expressions core is already quite complex and powerful, but where the results can be applied is rather limited at the moment, basically to dynamically producing texts on UI atoms.
As an example, how the features above are used to implement the DildoLanguage Demo scene:
  • All dildos in the demo have a ton of states captured for them, especially the main hero common-cock-dildo (Dildo1 atom). The states record various positions in the scene, the presets they should morph into, and also fluids toggles.
  • The poses are used for individual... well... poses in the demo. Telling each dildo, the girl, and the UI, what they should do.
  • Each section of the demo, represented by the individual buttons on the left side, is a chapter.
  • The chapter selection buttons change their state depending on which chapter is active, and use dynamically formatted text to show the progress through each chapter.
  • Same goes for the penetration monitor panel that pops up during the last chapter. All texts on there are driven by variables set from the dildo's penetration monitor.
  • The girl uses many poses, smoothly transitions between the poses with mid-states where a direct pose interpolation just looks plain-bad. Sub-states are used to animate all her idles.
Since this is a preview release, there are many features missing as well. Worth mentioning that these will be one day supported, but are not available yet:
  • Live editing. Changing atom properties in the plugin's UI is not reflected until Apply State is clicked.
  • Capturing more base properties of core atoms. Not all attributes you'd expected to be captured are supported yet, such as the atom scaling.
  • It will be possible to configure the plugin to capture any atom properties accessible through VAM's trigger/storable system. Until that's done, the amount of properties that can be captured in states is limited to only those supported directly by the implemented components.
  • A way to drive any atom property supported by the plugin (including custom ones from the step above) by expressions. You will be able to math the whole scene! For now the expression/variable system can be used only to format the results as texts on UI elements.

Terminology​

Already used in the basics overview above, but here is a "short" list of the terms used in the plugin:
  • Controlled Atom: Atom added to the plugin on the Add/Remove tab. It does not matter on which atom is the plugin installed, it will always control just the atoms you tell it to on this tab.
  • Atom Components: Depending on the atom's type and the plugins enabled on the atom, several components will be automatically enabled on the atom. Each component controls different aspects of the atom. On the Components tab you can then disable some of them if you don't want to control that atom's aspect, configure additional features of some components, or move the components around (just for UI ordering purposes).
    • For example, the Placement component controls the position, rotation of the atom. Also of all its controllers. And their linking/position/rotation state. And some of their physics properties (hold spring strengths and such). Also position and rotations of their bones (for character atoms) and rigidbodies (for atoms with physical objects in them, including CUAs.
    • The Material component lets you control various aspects of the object's materials, such as Diffuse Color, or glossiness attributes. To prevent UI clutter some material properties won't be exposed by default.
    • The Light component controls various aspects of the light (surprise, right?!). Such as its color, intensity or range. But also properties not normally available in VaM, such as advanced shadow settings, or Unity's global Shadow Quality settings.
  • Atom States: Each state stores all properties of the components enabled on the atom. You can capture a state, which will store the current atom's attributes from VaM. Or you can edit the state directly in the plugin's UI ; to some extent, for example it has no UI to move around character control nodes, naturally.
  • Atom State Transitions: By default, when applying an atom's state, it snap-applies. Which means, all the captured attribute values will be applied to the atom directly. For placement for example, the atom will effectively teleport. You can define transitions for any pair of the states, then the attributes will transition smoothly from one state to another according to the transition's configuration.
  • Transition Mid-State: An optional state recorded for a transition. If defined, the transition will go to the mid-state first, then to the target state.
  • Atom Sub-states: One state can have any amount of sub-states recorded. If this is enabled, the atom will the automatically animate itself by smoothly transitioning between the sub-states, or mixes of the sub-states, according to the configured rules
  • Poses: A pose is a collection of: a) Atom and their states ; b) Sub-poses. When a pose is applied, it tells all its atoms to apply the corresponding states. This includes atom-state pairs defined in any referenced sub-poses, recursively. If a state is defined multiple times for the same atom in the pose, the last one (top-down) "wins".
  • Chapters: Each pose belongs to one chapter, making it easier to cycle through poses within one chapter, or switching between chapters. A chapter can be marked as skip-over, in which case all poses inside the chapters will be... skipped over! When cycling through poses in the scene via the prev/next triggers.

Common UI Features​

The UI uses the rather traditional tabbed interface. There is not much to explain there, I believe.

In addition to tabs, most of the UI sections are then split into parts by what I call Rich Separators. These separators reuse common elements:

ui_elements1.png
ui_elements2.png

ui_elements3.png
ui_elements4.png

1. Check toggle. Enables and Disables the whole section. Disabling a section not only hides the section, but also disables its effect. For example, disabling the Placement component on a controlled atom will completely stop the plugin from capturing and applying any placements for that atom (you can then control those by a timeline, for example), while using the ScenePlugin to control other aspects.
2. The up/down arrows simply move the section up or down in the UI. It has no effect on the functionality, it just lets you organize the UI to suit your needs.
3. This button lets you Collapse and Expand the section. This is also purely for UI organization, a collapsed section will simply hide its contents, but its effects will still be applied ; unlike Disabling a section (which will also hide the contents).
4. The cross button will completely Remove the section. In this example, it would delete the variable (but only if it's not used in any expressions or drivers).
5. The dot icon Captures the State. If used in the context of a component section, it will capture only properties controlled by that component, leaving everything else untouched.
6. The "play" icon Applies the State. Similar to capture, when used in a component's context, it will apply only properties captured by that component. Note that applying just one component's state is purely a UI feature. To make an atom apply only some of its components when applying its state through poses or triggers, disable that component from that atom's state instead.

Demos​

Rather than writing more walls of text, I will implemented few smaller demo scenes showcasing the features of the plugin. Once it's more mature.

Until then, I recommend checking the DildoLanguage Tutorial/Demo. Load it, open the scene plugin and check how it's been created.

More to come​

This documentation will be updated with more details in the near future. This might take few days, the plugin is already quite complex even in this early preview state
React to this content...

Share this resource

Latest updates

  1. v5 - custom params component

    Custom Parameters component This new features allows you to create your own component which will...
  2. v4 - drivers hotfix

    Fixes Fixed log and log10 expression functions being swapped Fixed empty expressions still...
  3. v3 - drivers

    Drivers The main new feature of this update is the addition of Drivers, which let you drive...

Latest reviews

Positive
Version: 1 (preview)
Posted:
Great plugin! Have a lot of use cases, thx for sharing
Upvote 0
Positive
Version: 1 (preview)
Posted:
What VaM is really missing are framework-type plugins, and this looks like a very promising start.
Upvote 0
Back
Top Bottom