nonnonstop / sd-webui-3d-open-pose-editor

3d openpose editor for stable diffusion and controlnet
MIT License
782 stars 95 forks source link

feature request: free form pose movement #9

Open vladmandic opened 1 year ago

vladmandic commented 1 year ago

like the work so far, but setting a pose using radials to rotate each bone is cumbersome - great for fine tuning, but not that great to set the general pose.

suggestion is to have free-move mode where click & drag moves a bone on two prominent axes and lock the third axis for example:

and determining which two axes are prominent can be determined from camera angle

second part of feature request is to actually utilize right click to add a popup menu - delete/duplicate/move-mode - they can all be embedded controls so main ui can be vastly simplified.

and entire camera params section can be removed - the full functionality is via mouse movement anyhow.

ZhUyU1997 commented 1 year ago

I will try to improve it, your advice is useful.

vladmandic commented 1 year ago

thanks!

fyi, i did something like that in an unrelated project (my older work, nothing to do with stable diffusion): https://motioniq-ai.github.io/demo/prototype.html

load any image in inputs and you can freeform click-and-move any anchor points.

ZhUyU1997 commented 1 year ago

@vladmandic We update a lot recently. You can open "Move Mode" and "Free Mode" to move joints.

vladmandic commented 1 year ago

@ZhUyU1997 thanks for the heads-up and all the work - overall feels much better. the axis selectors are still a bit cumbersome - i think in most cases you shouldn't even need them?

right now you need to click on joint, release the button, then select axis to perform move on (free move or rotation-based), hold the buttom and perform the move.

but axis can be determined from camera angle, so entire workflow can be simplified to click and drag joint (without needing to declick, select axis and then click-and-drag). and in that case, you can even hide orbit controls (show them as optional in the menu) as they are not required to perform the move.

and one off-topic comment - currently extension is extremely "chatty" - there is a lot of output in browsers console log which should not be the case - i suggest to have an internal "debug" mode or something and only print to console when debug is enabled.

and one more unrelated, there seems to be some sort of race condition during startup where canvas is blank first time i click on tab with webui fresh restart. then click back&forth and its ok.

nothings commented 1 year ago

Move mode doesn't really address the original request, since it simply stretches the bone to a new location. It doesn't preserve length or rotate everything else.

The suggestion is that the behavior would be like free mode, rotating the joint and all the nodes under it in the hierarchy, but the way to get the rotation in the UI is not to rotate a circle on the joint, but to grab and move the next joint down (like move mode does) and cause that movement to be matched with a corresponding joint rotation on the next node up. This is how lots of posing software works, as it gives the closest to direct manipulation of joint rotation as possible, and feels nice and simple and intuitive.