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
![]()
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
![]()
![]()
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
By high demands (..by VL_13Thank you !!
) Here is an update for the Ui :
Scrollable Pose List (Edit Mode)
Editing poses is now faster and more intuitive than ever.
A new scrollable pose list has been added to the right side of the Edit UI.
This allows you to instantly switch between any saved pose without returning to the main menu.
How it works
- Enter Edit on any pose
- A scrollable list of all poses appears on the right
- Each pose is numbered and clearly labeled
- The currently selected pose is highlighted in blue
- Click any pose in the list to jump directly into editing it
Why this is useful
- Rapid navigation between multiple poses
- See your entire pose library at a glance
- Much faster workflow for creators managing complex scenes
- No more Next/Previous clicking when editing several poses
Bug Fixes
- Removed leftover debug logs that were cluttering the message log
- Improved spacing, alignment, and general UI consistency
Changelog
v1.3 — 2025-01-18
- Added scrollable pose list to the Edit UI
- Direct pose selection from the list (instant switching)
- Active pose is now visually highlighted
- Removed excessive debug logging
- Refined UI layout for a cleaner appearance
Streamlined pose editing for a smoother creative workflow.
Enjoy!