• Hi Guest!

    Please be aware that we have released a critical security patch for VaM. We strongly recommend updating to version 1.22.0.7 using the VaM_Updater found in your installation folder.

    Details about the security patch can be found here.
PosingHelper

Plugins PosingHelper

Ruvik

Well-known member
Messages
103
Reactions
321
Points
63
Ruvik submitted a new resource:

PosingHelper - this plugin adds an alternative way to pose using mirrors and IK

inspired by HSPE for honey select
this simple plugin lets you mirror legs and arms to the other side as well as in my opinion an easer way to pose
this plugin is still in early development and any feedback is appreciated

how does it work?
1 - add it to a character
1.1 - optionally click "link" to go from this to this(so we can use IK to animate)
[ATTACH type="full"...

Read more about this resource...
 
Great job on creating this plugin! Simple and incredibly useful.

As for controls, I would assign keybinds for toggling modes, for example, shift for movement along the z-axis, and ctrl for rotation. That way, shift+space - would be z-axis movement, ctrl+space - rotation, and shift+ctrl+space changes the rotation axis.

And is it possible to do the unlink without resetting a pose?
 
Great job on creating this plugin! Simple and incredibly useful.

As for controls, I would assign keybinds for toggling modes, for example, shift for movement along the z-axis, and ctrl for rotation. That way, shift+space - would be z-axis movement, ctrl+space - rotation, and shift+ctrl+space changes the rotation axis.

And is it possible to do the unlink without resetting a pose?
your controls are way more intuitive and i will patch them in, in the next update which is coming soon
also yeah it's possible i just created the reset button a long time ago and never used it much so didn't notice how frustrating resetting the pose every time can be..
next update will feature better controls and a more reasonable reset button
thanks for your feedback
 
Last edited:
Hey, great idea! I have one issue so far though. Looks like when I try to mirror left hand to right hand, rotation isn't applied.
 
Hey, great idea! I have one issue so far though. Looks like when I try to mirror left hand to right hand, rotation isn't applied.
im working on it right now and i think i see the issue working on fixing it and will update very soon
 
Strange... I put this in my add-on folder but it isn't showing up as a plugin I can add to a look.
sorry to hear that , i have the same problem on my other machine and the only way to fix it was to send the source code directly,
im updating now soo let's hope that can fix it
 
Good news, I am able to add the plugin to a person now. But is this plugin meant for VR use or desktop? On desktop I can only move linked body parts left, right, up and down* with my left mouse held down. I cannot move them forward or backward or do any rotation, or at least I don't know how.

If that is not possible yet, maybe adding that option to happen when holding down the right mouse button, or assigning a key to it like ALT or CTRL while holding down the left mouse would be great.

I'm looking forward to what you do with this because I can see the potential the plugin might offer in making it easier to link body parts and pose, something I always found kind of a challenge.

*Also, one potential bug: I had a model in an A pose (standing, arms at sides) and could not get the model to reach down to touch their toes even though I had all the body parts linked. Should there be another button for waist or pelvic bone so a model can bend over? Or if you think you can do that now what would be your steps?
 
Nice implementation of the controls. Here are some more ideas:
  1. Shift+click on a bone on the character model to select this bone in the plugin (similar to how buttons are currently work), with a change in color of that bone so you can see which ones are selected right on the model. Shift+click on empty space to reset the selection. Ctrl+shift+click for multiple selection.​
  2. The Z-axis movement and all rotations are currently inverted, I think it's causing some difficulties.​
  3. Currently "hip" bone is acting as the control and can't be posed while IK is active, is it possible to change the bound to "pelvis" for example?​
  4. Adding a toggle for global/local coordinates could be useful. Maybe caps lock, that way it's clear what's enabled as well.​
 
I can only move linked body parts left, right, up and down* with my left mouse held down. I cannot move them forward or backward or do any rotation, or at least I don't know how.

. now there's movement mode and movement axis
. Positional = default , Rotational = hold left Control
. XY = default , Z = hold left shift
 
Good news, I am able to add the plugin to a person now. But is this plugin meant for VR use or desktop? On desktop I can only move linked body parts left, right, up and down* with my left mouse held down. I cannot move them forward or backward or do any rotation, or at least I don't know how.

If that is not possible yet, maybe adding that option to happen when holding down the right mouse button, or assigning a key to it like ALT or CTRL while holding down the left mouse would be great.

I'm looking forward to what you do with this because I can see the potential the plugin might offer in making it easier to link body parts and pose, something I always found kind of a challenge.

*Also, one potential bug: I had a model in an A pose (standing, arms at sides) and could not get the model to reach down to touch their toes even though I had all the body parts linked. Should there be another button for waist or pelvic bone so a model can bend over? Or if you think you can do that now what would be your steps?
this plugin is meant for desktop only at this moment since i don't own a vr headset yet, and as user xexka mentioned , you should re-read the plugin description i will always update it with the new controls.

as for the custom key im thinking of adding that but it's not my priority at the moment, sure once i can call this plugin stable, custom key bindings would be nice to have.

so at the moment linking body parts isn't really what i want my plugin to do but thinking about that now yeah i guess i could add the option to actually link every bone quickly and easily from a single menu.

and yeah adding a pelvic control button would be very helpful, when i started working on this plugin i looked at every controls location and thought that this structure will do for now , but i never really updated it , and i will do that in the next update
 
Last edited:
Nice implementation of the controls. Here are some more ideas:
  1. Shift+click on a bone on the character model to select this bone in the plugin (similar to how buttons are currently work), with a change in color of that bone so you can see which ones are selected right on the model. Shift+click on empty space to reset the selection. Ctrl+shift+click for multiple selection.​
  2. The Z-axis movement and all rotations are currently inverted, I think it's causing some difficulties.​
  3. Currently "hip" bone is acting as the control and can't be posed while IK is active, is it possible to change the bound to "pelvis" for example?​
  4. Adding a toggle for global/local coordinates could be useful. Maybe caps lock, that way it's clear what's enabled as well.​
for the new controls im not very clear on what you meant by "Ctrl+shift+click for multiple" do you mean like to clear multiple selections ? , and if so does the "Shift+click on an empty space" clears only the last selection?

the z-axis and the rotation i think it's because the movement is as you said still global, and that will change next update with an indicator on what mode is currently active.

i answered the pelvic bone thing in the previous post, both of these functionalities will be added in the next update.
 
Sorry if I was a bit confusing. For example, I want to move the character's left arm, I do shift+click on the arm on the model (with Toggle Targets enabled) and the arm is selected in the plugin so I can move it with Space. If I then do a shift+click on another arm, that arm is selected in the plugin and the previous selection is cleared. But if I do a shift+click on another arm while holding down ctrl, then the previous selection isn't cleared and both arms are selected. And the shift+click on empty space just clears all selections in plugin, this is probably not even necessary.
 
Ruvik updated PosingHelper with a new update entry:

Local mode , new bones and a new slider

New Bones:
. added pelvis and waist bones

New Local Editing mode:
. added a new button where you can toggle the local editing mod ( or you can press "capslock")

New Controls:
.
Press capslock toggle to local editing mode
. Press backspace to unselect previously selected bones
. new slider to control the rotation speed (both the sliders control the rotation speed but the second one has a lot more impact on how fast things rotate)

Unfixed bugs:
. still couldn't...

Read the rest of this update entry...
 
Sorry if I was a bit confusing. For example, I want to move the character's left arm, I do shift+click on the arm on the model (with Toggle Targets enabled) and the arm is selected in the plugin so I can move it with Space. If I then do a shift+click on another arm, that arm is selected in the plugin and the previous selection is cleared. But if I do a shift+click on another arm while holding down ctrl, then the previous selection isn't cleared and both arms are selected. And the shift+click on empty space just clears all selections in plugin, this is probably not even necessary.
i got you but im putting this feature to the next update because it's a little more complex that i first imagined... here's the two problems with it
1 - vam doesn't let you edit the color of the bone, how ever it does let you edit the color of the position state.
EX: i can set the color of the position mode "On" to be black but then the bone has to be in that mode for the changes to take effect, so i need to manage what state the bone was in as well as making sure i don't ruin the original state color, which is doable but i rather push to the new update
2 - to get the selected bone i have to use unitys physics engine, that's all i gotta say.
i also have some exams coming up in a few days.
other than that the feature would be really helpful and intuitive , maybe you could suggest another way of selecting bones easily?
also let me know if the Z axis and the rotation are flipped or not because i honestly can't tell.
 
Hey, I noticed that in the newest version if you move either hand with space + mouse movement, up/down works nicely, but moving mouse to the left moves the hand to the right (and other side the other way around), tested on default scene position.

Last updaes were very nice, it's already efficient to use it for animation. Also, it seems to update it's coordinates every time you move it/rotate (except the mirrored part), so that is very good for Timeline because you don't need to hit manual keyframe button. I guess if you make mirrored mode when moving, it will work even better for Timeline in that case.

EDIT:

Looks like it's fixed in line 295:
Code:
moveby = Input.GetKey(KeyCode.LeftShift) ? new Vector3(0, 0,x+y) : new Vector3(-x, y, 0);
changed x to -x in the last parenthesis. Still, looks like when you pose from behind, it's reversed. Maybe a switch that toggles this for positions/rotations if you want to pose from the front/behind?

I also have some issues with navigating hand rotation, but maybe I'll need to get used to it.. or try tweaking those axis, because I feel when it should go right it goes left etc.

EDIT 2:

Inverting all axises on local rotation seems to be good for me (form the front). That way when you move your mouse, hand is kind of rotating intuitively.
 
Last edited:
Hey, I noticed that in the newest version if you move either hand with space + mouse movement, up/down works nicely, but moving mouse to the left moves the hand to the right (and other side the other way around), tested on default scene position.

Last updaes were very nice, it's already efficient to use it for animation. Also, it seems to update it's coordinates every time you move it/rotate (except the mirrored part), so that is very good for Timeline because you don't need to hit manual keyframe button. I guess if you make mirrored mode when moving, it will work even better for Timeline in that case.

EDIT:

Looks like it's fixed in line 295:
Code:
moveby = Input.GetKey(KeyCode.LeftShift) ? new Vector3(0, 0,x+y) : new Vector3(-x, y, 0);
changed x to -x in the last parenthesis. Still, looks like when you pose from behind, it's reversed. Maybe a switch that toggles this for positions/rotations if you want to pose from the front/behind?

I also have some issues with navigating hand rotation, but maybe I'll need to get used to it.. or try tweaking those axis, because I feel when it should go right it goes left etc.

EDIT 2:

Inverting all axises on local rotation seems to be good for me (form the front). That way when you move your mouse, hand is kind of rotating intuitively.
so the way the plugin moves parts is exactly how they would move if you were to manually move them by dragging that's why it works well with timeline,but if you mirror, it changes the position directly instead of moving them normally, i didn't knew that timeline didn't like that so the change is coming next update.

so about the change you made to the code , i was actually going back and forth each update to -x or x because i it's always relative to how i was looking at the character

lastly about the whole is it inverted or am i doing it in-reverse ? i don't know but i have two ideas and would like your help to pick which one you think will work better , i could either
make the changes always relative to the player ( so if you were looking at the scene from above the Y will actually become the Z ,but if you were looking at the scene from the side X will become the Z , i think you get the idea)
or let the user decide what to invert and what to keep in a separate tab dedicated to settings such as sensitivity and the Local/Global toggle.

let me know what you think, and thanks for letting me know people actually find this plugin helpful (even though it's kind of a mess at this point).
 
Last edited:
vam doesn't let you edit the color of the bone, how ever it does let you edit the color of the position state.
I assumed it was possible because I saw this mod:
Maybe it can help in this matter.

changed x to -x in the last parenthesis.
I managed to get the best results when viewing it from the front with this combination:
C#:
                x = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity.val;
                y = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity.val;
                moveby = Input.GetKey(KeyCode.LeftShift) ? new Vector3(0, 0, x) : new Vector3(-x, y, 0);

                selected[i].RotateControl(new Vector3(-vec3.y, vec3.x, vec3.z), rotationDegree.val);

maybe you could suggest another way of selecting bones easily?
As for the other way of selecting bones, I initially had the idea of creating a small UI in the bottom right corner for example, in the form of a human body, where you can simply click on parts of it to select. I mean something like this:
i was actually going back and forth each update to -x or x because i it's always relative to how i was looking at the character
I like the idea of making the changes always relative to the player, but if we're talking about inverting the front/back view, then I can suggest a solution. I think it's important to get the world global coordinates for the object and the camera in this case, but I don't know what variables are available in VAM, so an example for a cube in Unity:
C#:
using UnityEngine;

public class MoveObject : MonoBehaviour
{
    private Transform cameraTransform;
    private Transform objectTransform;

    private void Start()
    {
        cameraTransform = Camera.main.transform;
        objectTransform = transform;
    }

    private void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            float x = Input.GetAxis("Mouse X");
            Vector3 moveby = objectTransform.right * x * Time.deltaTime * 25;
            Vector3 cameraDirection = objectTransform.position - cameraTransform.position;;
            if (Vector3.Dot(cameraDirection, objectTransform.forward) < 0)
            {
                moveby = -moveby;
            }
            objectTransform.position += moveby;
        }
    }
}
And as for the new local/global button, it basically doesn't change anything for me. Maybe instead of having these modes, we could have a switch between the current control and control that is based on the player's position?
 
I assumed it was possible because I saw this mod:
Maybe it can help in this matter.


I managed to get the best results when viewing it from the front with this combination:
C#:
                x = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity.val;
                y = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity.val;
                moveby = Input.GetKey(KeyCode.LeftShift) ? new Vector3(0, 0, x) : new Vector3(-x, y, 0);

                selected[i].RotateControl(new Vector3(-vec3.y, vec3.x, vec3.z), rotationDegree.val);


As for the other way of selecting bones, I initially had the idea of creating a small UI in the bottom right corner for example, in the form of a human body, where you can simply click on parts of it to select. I mean something like this:

I like the idea of making the changes always relative to the player, but if we're talking about inverting the front/back view, then I can suggest a solution. I think it's important to get the world global coordinates for the object and the camera in this case, but I don't know what variables are available in VAM, so an example for a cube in Unity:
C#:
using UnityEngine;

public class MoveObject : MonoBehaviour
{
    private Transform cameraTransform;
    private Transform objectTransform;

    private void Start()
    {
        cameraTransform = Camera.main.transform;
        objectTransform = transform;
    }

    private void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            float x = Input.GetAxis("Mouse X");
            Vector3 moveby = objectTransform.right * x * Time.deltaTime * 25;
            Vector3 cameraDirection = objectTransform.position - cameraTransform.position;;
            if (Vector3.Dot(cameraDirection, objectTransform.forward) < 0)
            {
                moveby = -moveby;
            }
            objectTransform.position += moveby;
        }
    }
}
And as for the new local/global button, it basically doesn't change anything for me. Maybe instead of having these modes, we could have a switch between the current control and control that is based on the player's position?
thank you for all these helpful suggestions, i think i know where i want this plugin to go next

. you apply the plugin.
. you can change the movement modes , sliders , key bindings and possibly the control colors from the plugin menu.
. you press a key to activate the linking and selecting menu , where you can select which character to control and possible even how to link all its parts.
. possible with support of selecting the controls from the scene (i have an idea of the controls color part but i still can't quite figure out how to use unitys raycasting abilities.

the movement modes will be:
. Local : every thing relative to the transform of the character
. Global: every thing relative to the transform of the camera (except for the rotation, will have to test this)

i am excited to start working on all of these things, but unfortunately i have some exams i have to study for and it might take me a week to get done with them.

sorry if you guys might have to wait a week or a little bit more to get a new update, but i think the next update will be the end of the beta phase for this plugin.

thanks for all the feed back i didn't think this plugin will go as far as it did.
 
No worries, take your time to study for your exams. No one wants you to rush and compromise your grades. We'll be eagerly waiting for the next update!
 
so the way the plugin moves parts is exactly how they would move if you were to manually move them by dragging that's why it works well with timeline,but if you mirror, it changes the position directly instead of moving them normally, i didn't knew that timeline didn't like that so the change is coming next update.

so about the change you made to the code , i was actually going back and forth each update to -x or x because i it's always relative to how i was looking at the character

lastly about the whole is it inverted or am i doing it in-reverse ? i don't know but i have two ideas and would like your help to pick which one you think will work better , i could either
make the changes always relative to the player ( so if you were looking at the scene from above the Y will actually become the Z ,but if you were looking at the scene from the side X will become the Z , i think you get the idea)
or let the user decide what to invert and what to keep in a separate tab dedicated to settings such as sensitivity and the Local/Global toggle.

let me know what you think, and thanks for letting me know people actually find this plugin helpful (even though it's kind of a mess at this point).

C#:
                    selected[i].RotateControl(containingAtom.freeControllers[0].transform.forward * -vec3.x
                    + containingAtom.freeControllers[0].transform.right * -vec3.y + containingAtom.freeControllers[0].transform.up * -vec3.z, rotationDegree.val);
                    else
                    selected[i].RotateControl(new Vector3(-vec3.x,-vec3.y,-vec3.z),rotationDegree.val);
lines 327-330. With those and when camera is facing the character (and the one at line 295 I mentioned), mouse movements seems reflect rotation better. If you pose character from behind, some rotation will become inverted.. I think the best choice would be perhaps to allow to customize rotation and movement of each individual axis separately (so it's either 'normal' or 'inverted'), and then save those as 2 presets ('front', 'back'). That way everyone could have their preferred movement when posing from either side, and with a keyboard shortcut to swap those two presets, that would become very efficient. But those tweaks I mentioned above are making it already much more consistent, so it's not bad.
 
Hey, insane update! I briefly tested it and here are my observations:

When pressing 'add' in the plugin menu to add a person I am getting
!> wrong button name
!> wrong button name

in the console. But it adds correctly. EDIT: I think you need to press add twice. First time it does nothing, second time seems to work (tested with plugin in session plugins). Regarding bugs, I found one - when using copying left to right and using symmetry, looks like one side is always a bit higher in the Y axis (tested using default pose). So, by pressing copy left -> copy right, you'll gradually go into the sky with hands for example.

Now, regarding positioning.. world UI is definitely great idea, but we'll need something like rotation sensitivity like we had before (maybe in the plugin UI?). Also, when front facing your character it bothers me that going left with X axis moves your body part to the right (hopefully changeable with the code changes that's been mentioned, could also count as personal preference, but I strongly suggest making optional toggles for inverting as many axis as possible...). For quick posing, I think hotkeys + mouse will be the best, so space/ctrl/shift and mouse wherever in the world was much better for that. World UI for selecting body parts is awesome, but moving into the corner each time you want to position anything makes it more cumbersome. However, for fine tuning, separating each axis, as the new UI does, will be definitely very useful, so that's a great addition! I'd suggest remapping UI show key and add old controls on top of that.

Maybe try looking for Acidbubbles Keybindings integration in the future? I recall it's not that hard to achieve and it would be awesome. If you exposed your parameters to Keybindings, users could simply do their own key mappings for selecting body parts, changing modifiers, and maybe even swapping axis of mouse directions (I recall there are mouse mappings in keybindings). I believe all of that doesn't have to be keybinded at all for it to work, e. g. Timeline has lots of bindings that are unbound by default.
 
Back
Top Bottom