= Readme
Discord - habeebweeb#6577
:toc:
:toclevels: 4
:pluginname: MeidoPhotoStudio
:photomode: Studio Mode
:config: BepInEx\config{backslash}{pluginname}
{pluginname} is an alternative to {photomode}.
Source can be found https://git.coder.horse/habeebweeb/COM3D2.MeidoPhotoStudio/src/dev[here]
_A full manual, which goes into more depth, will be included when {pluginname} 1.0.0 offcially releases._
== Installation
=== Requirements
{pluginname} is a BepInEx plugin. Get the latest release https://github.com/BepInEx/BepInEx/releases[here].
=== Installation
Move the contents of the `BepInEx` folder into `COM3D2\BepInEx`
== Files
{pluginname} reads and writes files to and from `{config}`.
[horizontal]
Translations:: Contains translation files.
Environments:: Contains saved environments.
Scenes:: Contains saved scenes.
Presets:: Contains poses and hand and face presets
+
_Sample presets are included._
Database:: Contains databases that {pluginname} uses.
+
--
`bg_ignore_list.json`:: List of BGs to ignore when building prop list.
`extra_dogu.json`:: List of extra props that I can't find through nei files
`mm_pose_list.json`:: Collection of in game poses to display.
`face_slider_limits.json`:: Upper limit of face slider values
_Each database file has comments at the top with further information._
--
`cache.dat`:: Cache file for menu files. (Generated at runtime).
`MeidoPhotoStudio.cfg`:: Configuration file. (Generated at runtime).
`mpstempscene`:: A save file that's made when pressing `Ctrl + S`.
NOTE: Environments, scenes, and each preset folder can have single level deep folders within them to allow for grouping.
== Hotkeys
=== Main
[%header, cols="1a, 3"]
|===
| Key | Action
| `F6`
| Activate/deactivate {pluginname} (Only in daily and edit mode)
| `Tab`
| Toggle main window
| `M`
| Toggle message box
| `H`
| Undress all maids
| `F8`
| Hide/show <>
|===
=== Camera
[%header, cols="2a, 3"]
|===
| Key | Action
| `Q + R`
| Reset camera
| `Q + S`
| Save camera
| `Q + A`
| Load saved camera
| `Q + 1-5`
| Switch to another camera
| `Shift + Scroll`
| Zoom camera faster
| `Control + Scroll`
| Zoom camera slower
| `Shift + Middle Drag`
| Pan camera faster
| `Control + Middle Drag`
| Pan camera slower
|===
=== Drag Handles
==== General
[%header, cols="2a, 3"]
|===
| Key | Action
| `A + Left Click`
| Select object
| `D + Left Click`
| Delete object
| `C + Drag`
| Scale object
| `C + Double Click`
| Reset object scale
|===
==== Movement
[%header, cols="2a, 3"]
|===
| Key | Action
| `Z + Drag`
| Move object along XZ plane
| `Z + Control + Drag`
| Move object along the y axis
| `Z (+ Control) + Double Click`
| Reset object position
|===
==== Rotation
[%header, cols="2a, 3"]
|===
| Key | Action
| `X + Drag`
| Rotate object along XZ axis
| `Z + Shift + Drag`
| Rotate object along the *world* Y axis
| `X + Shift + Drag`
| Rotate object along its *local* Y axis
| `X + Double Click`
| Reset object rotation
|===
==== Scaling
[%header, cols="2a, 3"]
|===
| Key | Action
| `C + Drag`
| Scale object
| `C + Double Click`
| Reset object scale
|===
==== Maid
[%header, cols="2a, 3a"]
|===
| Key | Action
| `Drag`
|
* Move arms and legs
** Moving from the hand/foot will move the arm/leg like a chain
** Moving from the elbow/knee will rotate the arm/leg using the shoulder/hip as the pivot point
* Move shoulders
| `Alt + Drag`
|
.All along XZ axis
* Rotate torso
* Rotate pelvis
* Rotate head
* Rotate hands/feet
| `Alt + Shift + Drag`
|
.All along local y axis
* Rotate torso
* Rotate pelvis
* Rotate head
* Rotate hands/feet
* Rotate arms/legs (when dragging on elbow/knee respectively)
| `Control + Alt + Drag`
|
* Move both eyes (When dragging on face)
* Move each breast
| `Control + Alt + Shift + Drag`
|
* Move eyes in opposite directions
* Rotate breasts
| `Control + Alt + Double Click`
| Reset eyes and breasts position
| `Control + Drag`
| Rotate forearm/calf using elbow/knee as pivot point
| `Space`
| Rotate fingers/toes
| `Shift + Space`
| Rotate base of fingers/toes along local y axis
| `A + Left Click`
|
* Make selected maid the active maid and switch to pose tab (When clicking on torso)
* Make selected maid the active maid and switch to face tab (When clicking on face)
|===
== Changelog
=== {pluginname}.1.0.0-beta.3.1
==== Fixes
* Fix memory leak when saving scenes to a file
* Handle errors when saving scenes to prevent {pluginname} from locking up
* Fix issue where {pluginname} crashes when trying to save a non-existent background
** SceneCaputre hides the background by destroying it so it caused issues for {pluginname}
=== {pluginname}.1.0.0-beta.3
==== New Features
* Add camera Z rotation and FOV slider
* Add camera slots
** There are 5 slots that function similarly to quick save slots
** Cameras can be switched between through the GUI or by holding `Q + (1..5)`
* Add textfield and reset button to some sliders
** textfield and reset buttons were added to the camera pane and lights pane
* Add clothing mask radio buttons to change dressing for individual maids
** Functions the same way as pushing `H` to change all the maid's dressing
* Add user configurable face slider limits
** `Config\MeidoPhotoStudio\Database\face_slider_limits.json` has been added
==== Enhancements
* Add spine as attach points for props
==== Changes
* Make bone mode drag handles way smaller and more transparent
==== Fixes
* Fix face tab sliders/toggles doing nothing when using face shapekeys in ShapeAnimator
* Fix face blush toggles doing nothing