• 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.
Posesaver

Plugins + Scripts Posesaver

Download [<1 MB]

PoseSaver 1.4.8 – Minor Fix Update


Small fix this time — thank you fttp for reporting the issues! 🙏


Fixes in this update:


  1. Missing Arrow Buttons
    When repeatedly using “Save New Pose”, thumbnails stopped showing after 8 entries and the arrow buttons disappeared.
    This is now corrected — pagination shows properly again.
  2. NullReferenceException on Pagination
    Some users received this error when saving multiple poses in a row:
    CreatePaginationControls: Object reference not set to an instance of an object
    This has been fixed and pagination is now stable.
  3. Character Distortion When Clicking Thumbnails
    In some cases, clicking a newly saved pose thumbnail after “Save New Pose” caused the character’s shape to distort.
    This happened mostly with certain presets.
    The issue is now resolved.
  4. Handstab UI Adjustments
    The handstab section has been cleaned up and improved for better usability.

All known issues from the report are now fixed.(if i missed something please tell)
Thank you for helping me improve PoseSaver! 🙌

Update 1.4.7 – Timeline Auto-Keyframe Protection


✔ Fixed: Timeline overwriting animations when loading poses


Some users experienced that loading a pose in PoseSaver would trigger Timeline’s “Auto-keyframe all controllers”, causing Timeline to automatically create new keyframes and overwrite existing animation data.


This is now fully resolved.




What’s New


🛡 Automatic Timeline Auto-Keyframe Protection


PoseSaver now detects any active Timeline plugin and temporarily disables its auto-keyframe system while a pose is loading.


This prevents Timeline from generating unwanted keyframes.


How it works


  • Detection
    PoseSaver scans all atoms for Timeline and uses reflection to access the internal autoKeyframeAllControllers flag.
  • Protection
    Before loading a pose, PoseSaver disables auto-keyframing on all detected Timeline instances and stores their original state.
  • Restoration
    Once the pose is fully applied, all Timeline instances are returned to their previous settings automatically.

Works with different Timeline versions (includes safe try/catch handling).




Benefits


  • ✅ No more accidental overwriting of Timeline keyframes
  • ✅ You can load poses freely while animating
  • ✅ Seamless and invisible — no buttons, toggles, or setup required
  • ✅ Timeline settings are restored exactly as they were before pose load
  • ✅ Fully safe and non-intrusive



User Experience


You can now:


  • Use PoseSaver while animating in Timeline
  • Keep auto-keyframe on without worrying
  • Switch poses rapidly with zero risk to your animation work

The fix is automatic — the only thing you’ll notice is that your Timeline keyframes stay exactly where they should.

Thank you Babul for pointing this out! ❤️🫡
✅ Features Added

1. Pagination System

File: PoseScreenCanvas.cs
- Previous (◄) and Next (►) arrow buttons
- Page counter display (e.g., "1/3")
- 12 poses per page (4 rows × 3 columns for 1080p)
- Auto-hides when ≤12 poses

2. Smooth Pose Transitions

Files: PoseData.cs, PoseSaver.cs, PoseSaver.cslist
- Enabled the existing PoseSaverTransition system (was built but not connected)
- Smooth lerp/slerp animation between poses
- Controlled by "Transition Time" slider (0-10 seconds)
- Camera moves first, pose follows after 1 second delay
- Added "Enable Smooth Transitions" checkbox toggle

---
🐛 Bug Fixes

Compilation Error

- Added PoseSaverTransition.cs to PoseSaver.cslist (was missing from compile list)

✅ PoseSaver Update – Multi-Camera System + Full Hand/Finger Morph Control


This update brings two major new systems to PoseSaver, designed to give creators more control, better workflow, and smoother cinematics.




🎥 1. Multi-Camera System (CAMERA Tab)


PoseSaver now supports multiple camera angles per pose, with a clean on-screen button layout directly under each pose thumbnail.


Highlights:


  • Multiple camera angles per pose (up to 6)
  • Clickable on-screen camera buttons (1–6)
  • Active camera shown in blue, inactive in gray
  • Smooth camera transitions:
    • Instant
    • Linear
    • Smooth (SmoothStep)
    • EaseInOut
  • Adjustable transition speed
  • Camera thumbnail previews
  • Event triggers for camera enter/exit
  • Fixed UI jitter during transitions

Perfect for storytelling, dialogue scenes, showpieces, and cinematic animations.




✋ 2. Full Hand & Finger Morph System (HANDS Tab)


A complete hand-posing system is now integrated into PoseSaver.
Hand morphs automatically save and restore with each pose.


Features:


  • Person Selector to choose which character’s hands you adjust
  • Auto-Save toggle for automatic morph saving
  • Status indicator showing morph count per character
  • Quick Actions:
    • Zero All
    • Reset to Default (DAZ)
    • Copy L → R
    • Copy R → L
    • Swap L ↔ R
  • Morph groups:
    • Hand Morphs (5)
    • Finger Morphs (5)
    • Individual Finger Controls (9)
  • Real-time slider updates
  • Each pose stores its own hand morph profile
  • Correct morph ranges:
    • Most: –1 → 1
    • Hand Chop & Fingers In-Out: 0 → 1
  • Removed non-working sliders for a clean, reliable UI

This brings fast and intuitive hand posing without needing external tools.
PoseSaver Update - Scene Graph Flow System

New Features Added:

1. Scene Graph / Story Flow System
- Link poses together to create branching narrative paths
- Each pose can have multiple "next poses" with different paths
- Create interactive, non-linear pose sequences

2. FLOW Tab (New Tab in Pose Editor)
- Visual interface for creating pose connections
- "Link to: [pose name]" buttons to connect poses
- Shows all connected poses with ability to remove them
- Flow Timing section with delay slider (0-10 seconds)
- "▶ Test This Flow" button for instant testing
- Yellow save reminder to persist connections

3. Flow Navigation (Main Screen)
- "Scene Graph Navigation" section
- Current pose indicator showing loaded pose and connection count
- "Next (Follow Story Flow)" button to navigate the flow
- Auto-advances if only one connection
- Shows choice prompt if multiple connections

4. Flow Delay System
- Per-pose delay setting (0-10 seconds)
- Controls pacing before auto-navigation or showing choices
- Saves with preset data

5. Enhanced Logging
- Detailed debug messages showing flow state
- Shows which pose is loaded, connection count, navigation actions
- Helps troubleshoot flow issues

Technical Implementation:
- Added nextPoseIndices, branchLabels, requiredVariables, setVariables, and flowDelay fields to PoseData
- Full JSON serialization/deserialization for all Scene Graph data
- Coroutine-based delay system for smooth timing
- Public currentPoseIndex for UI access

All features are fully functional and tested.(but if you find anything then as always i appreciate feedbacks :) )

How to Use Scene Graph Flow System

Creating a Branching Story:

Step 1: Create Your Poses
- Create 3+ poses (e.g., "Greeting", "Happy", "Sad", "Flirty")
- Save each pose using the pose list

Step 2: Link Poses Together
- Select first pose → Click FLOW tab
- Set Delay Before Next slider (e.g., 2 seconds for pacing)
- Click "Link to: [pose name]" buttons to add connections
- You can link to multiple poses for branching paths

Step 3: Test Your Flow
- Still in FLOW tab, click "▶ Test This Flow from This Pose"
- Watch it navigate automatically (or show choices if multiple paths)

Step 4: Save Your Work
- Go back to main screen
- Click "Save Preset" (or connections will be lost!)

Using Flow in a Scene:

Auto-Navigation (Single Path):
- Load a pose from the list
- Click "Next (Follow Story Flow)"
- Waits for delay → auto-navigates to next pose

Choice Prompt (Multiple Paths):
- Load a pose with 2+ connections
- Click "Next (Follow Story Flow)"
- Waits for delay → shows choice buttons
- Click your choice → navigates to that pose

Current Pose Info:
- Main screen shows: "Current: [pose name] (X flow connections)"
- Always know your flow state

That's it! Create interactive, branching pose sequences like a visual novel or interactive story.
PoseSaver - Update Log: Pose Navigation

New Feature: Pose Navigation Trigger Actions

1. Navigation Trigger Actions (NEW)

- "Load Next Pose" - Cycles forward through poses (wraps to first at end)
- "Load Previous Pose" - Cycles backward through poses (wraps to last at beginning)
- Availability: Appears in all trigger panels throughout VirtaMate
- Files: PoseSaver.cs:30-33, 87-92, 309-391

2. Current Pose Tracking

- New Variable: currentPoseIndex tracks which pose is currently loaded
- Updated Method: LoadPose() now updates current index
- Initial State: -1 (no pose loaded)
- File: PoseSaver.cs:30, 285

3. Transition Time Integration

- Fixed: LoadPose() now uses configured "Transition Time" slider
- Before: Hard-coded 0 seconds (instant snap)
- After: Uses slider value (0-10 seconds)
- Applies To: All pose loading (manual, triggers, navigation)
- File: PoseSaver.cs:287

4. Next Pose Delay Parameter (NEW)

- Parameter: "Next Pose Delay (seconds)" slider
- Range: 0-500 seconds (0 to 8+ minutes)
- Default: 0 seconds (instant)
- Purpose: Wait time BEFORE loading next/previous pose
- Implementation: Coroutine-based with WaitForSeconds()
- Files: PoseSaver.cs:37, 71-78, 327-391

---
How Users Can Use This:

Automatic Story Mode

1. Set "Next Pose Delay" to desired seconds (e.g., 10 seconds)
2. In each pose's "On Exit" trigger: PoseSaver → "Load Next Pose"
3. Manually load first pose
4. System automatically cycles through all poses with delays

Single Button Navigation

1. Create UI Button in scene
2. Add trigger: PoseSaver → "Load Next Pose"
3. Each click advances to next pose
4. Perfect for user-controlled progression

Timeline Integration

1. In Timeline keyframe triggers
2. Add: PoseSaver → "Load Next Pose"
3. Syncs pose changes with animations

---
Technical Details:

The Two Timer System:

1. Transition Time (0-10 seconds)
- Controls smoothness of pose animation
- How long it takes to morph between poses
2. Next Pose Delay (0-500 seconds)
- Controls wait time before loading next pose
- Allows automatic timed sequences

Coroutine Implementation:

- LoadNextPoseCoroutine() - Delays, then loads next
- LoadPreviousPoseCoroutine() - Delays, then loads previous
- Non-blocking (doesn't freeze VirtaMate)
- Properly handles edge cases (no poses, first/last wrap)

---
Files Modified:

1. PoseSaver.cs - Navigation actions, delay system, coroutines

---
Summary:

- 2 new trigger actions: Load Next/Previous Pose
- 1 new parameter: Next Pose Delay (0-500 seconds)
- 1 bug fix: Transition time now actually used
- Automatic sequences: Full support for timed story progression
- Manual control: Single-button navigation through poses

1763934417856.png
PoseSaver - Update 1.4.3

1. Additional Atoms Feature (NEW)

- Feature: Save position/rotation of CUAs, props, and other atoms with poses
- How It Works: Atoms with matching name prefix are saved/restored with pose

Backend Implementation:

- New Fields in PoseData:
- saveAdditionalAtoms (bool, default: true)
- atomNamePrefix (string, default: "PoseSaver_")
- additionalAtoms (JSONClass storage)
- Capture Method: CaptureAtomTransform(Atom atom)
- Saves: type, on/off state, position, rotation
- Uses mainController transform
- Restore Method: RestoreAtomTransform(Atom atom, JSONClass transform)
- Restores position, rotation, on/off state
- Integration: Added to CaptureCurrentPose() and ApplyPoseCoroutine()
- Persistence: Full save/load support in JSON
- Files: PoseData.cs:40-43, 83-119, 372-453, 559-576, 1040-1046, 1123-1137

UI Implementation:

- Location: POSE tab in pose editor
- Controls Added:
a. Toggle: "Save CUAs/Props with matching prefix"
b. Text Field: Configure atom name prefix (editable, default: "PoseSaver_")
c. Status Display: Shows count of saved atoms (e.g., "Currently saved: 3 atom(s)")
- Visual: Section divider "Additional Atoms"
- Colors: Green status when atoms saved, gray when none
- File: PoseUI.cs:750-793

Usage Example:

1. Name your atoms: "PoseSaver_Light1", "PoseSaver_Prop2", "PoseSaver_Chair"
2. Open POSE tab and enable "Save Additional Atoms" toggle
3. Optionally customize prefix (e.g., change to "MyScene_")
4. Capture/recapture pose - atoms with prefix are automatically saved
5. Load pose - atoms restore to saved positions

---
2. Bug Fix: Compilation Error

- Error: DAZMorph.resolvedPath property doesn't exist
- Fix: Changed morph path detection to use only uid property
- Location: IsPoseMorph() method
- File: PoseData.cs:248-268

---
Files Modified

1. PoseData.cs - Additional atoms backend + morph path fix
2. PoseUI.cs - Additional atoms UI controls

---
Summary

- 1 new feature: Additional Atoms saving with configurable prefix
- 1 bug fix: Morph path detection compilation error
- Full UI integration: Toggle, text field, status display
- Complete persistence: Saves/loads with pose JSON


1763901155782.png
1763901276577.png

✅ PoseSaver – Update v1.4.2


Major Improvements:

Trigger System Enhancements
- Each pose now appears as individual trigger action ("Load Pose 1: Name", "Load Pose 2: Name", etc.)
- Added up/down arrow buttons in Edit mode to reorder poses
- Triggers automatically update when poses are reordered

Massive Performance & File Size Optimization
- Reduced pose file sizes by ~95% (from 10,000+ lines to ~200 lines per pose)
- Poses now save ONLY positions and rotations
- Removed morph saving (let expression/arousal plugins handle this)
- Removed texture/skin/hair/clothing data saving
- Poses now work with ANY character appearance

Bug Fixes
- Fixed Decal_Maker layers being duplicated on pose load
- Fixed skin textures being reloaded on pose changes
- Fixed hair being reloaded on pose changes
- Fixed physics explosions during pose transitions
- Improved stability when switching between poses

Physics Improvements
- Smoother transitions between poses
- Reduced clipping issues
- Better handling of collision detection during pose changes

Code Cleanup
- Removed all external plugin dependencies
- Optimized codebase for better performance
- Removed unnecessary logging and debug code

✅ PoseSaver – Update v1.4.1


New Features

Trigger System Enhancements

- Each pose now appears as a separate trigger action: "Load Pose 1: My Pose Name", "Load Pose 2: Another Pose",
etc.
- Easy to trigger specific poses from scene triggers
- Trigger names automatically update when poses are reordered

Pose Reordering

- Up/Down arrow buttons (▲▼) in Edit mode to reorder poses
- Arrows disabled when poses are at top/bottom
- All triggers update automatically when reordered

Major Fixes

Texture/Appearance Separation ⭐

- Poses no longer save skin textures, clothing, or hair
- Create poses with one appearance, then change character looks completely
- Poses work with ANY character appearance now
- Poses ONLY save: body position, morphs, plugin states, camera, dialogs

Simplified Pose Transitions

- Cleaner, more reliable pose loading
- Note: Small physics "jump" is normal VirtaMate behavior - unavoidable when teleporting controllers

General

- Removed popup notifications for cleaner operation
- More stable codebase

Camera Support (Already Built-In!)

- CAMERA tab in pose edit screen (3rd tab)
- Capture current camera view per pose
- Smooth camera transitions option
- Each pose can have its own camera angle

✅ PoseSaver – Update v1.4


This update focuses on stability, workflow improvements, and a cleaner pose-switching experience.
Several core systems have been refined to make PoseSaver more reliable and creator-friendly.




🔧 Smooth Transition Removed​


The “Smooth Transition” option has been fully removed from both UI and internal pose logic.
This eliminates the physics drift and instability it caused, resulting in:
  • Faster pose switching
  • More accurate controller placement
  • More reliable physics after pose load

Pose changes are now instant and stable.




🎯 Improved Trigger-Based Pose Flow​


You can now control pose order using PoseSaver’s built-in trigger system.
This allows:


  • Custom pose sequences
  • Branching / non-linear pose flows
  • Trigger-based storytelling setups

This also makes PoseSaver more flexible for animation-style scenes.(yeah! Animatis 😁👌)



⚙️ Stability & Code Cleanup​

  • Removed deprecated fields
  • More robust JSON handling
  • Faster pose capture & restore



⭐ Summary​


Hopefully better than it was 😁
Back
Top Bottom