General Category > Ongoing Anim8or Development

Figure Editor: Simultaneously Add, Lengthen, Rotate Bones

<< < (18/20) > >>

Steve:
raxx: I'm still having trouble finding a good way to add and rotate bones. The video you posted on Mar 2 only shows a 2D skeleton. All the bones and their coordinate systems stay aligned to the screen (as far as I can tell).

I have a build that does the following:

Add new bone: New bones initially have the same orientation (coordinate system) and direction as the parent.

Rotate: Rotation (Add Bones and the new Rotate+Length tool) rotate according to the view. It doesn't realign the Z axis to point out of the screen like build 1170. If a bone points out of the screen at a 45 degree angle it will keep that same relative angle to the screen.

This initially seemed to work well. However it has some weird side effects. If you start with a view where the parent bone points out of the screen at a small angle, and keep adding child bones with a rotation in the same direction, it builds a spiral not a flat skeleton.

What should I be doing?

Raxx:
Hm, I see. It may be more advantageous to keep the Add Bone tool the way you had it, based on the screen coordinate system, and the rotate/scale tool based on itself.

While testing and comparing in other programs like Blender, I can see that not having a rotation widget is really hurting. Currently, Anim8or is entirely reliant on the local coordinate system of the bone when animating. You can only rotate along the bone's axis using the three mouse buttons, and not relative to the screen or global coordinate system. Having a widget removes the need for three mouse button movement, enables screen X/Y based rotation, and frees up the animating experience a lot.

I know you're working on the figure editor at the moment, but I think this is a fundamental issue that extends into the figure editor as well. Because due to this restricted style of animation, the user has to mind the orientation of each bone while rigging, with absolute care and precision. In the other 3D programs I've used, the orientation of the bone doesn't have as much importance when rigging because when animating you can rotate either globally, locally, or along the screen XY coordinates. It's still good practice to have at least one axis aligned close to its main plane of movement, especially in some cases when working with constraints, but that's what the child-independent transformation feature I suggested in the earlier post is for.

When doing animation, guess which coordinate system I never use? Local. I animate almost entirely based on the screen coordinates, and then otherwise mostly global since it's more intuitive to animate relative to the entire world and the surrounding elements. All this is one of the reasons why I don't bother with joint limits.

^^^^And all that is justification to keep the Add new bone tool as you originally had it, being based off the screen.

You know, the graphic that shows the bone's joint limits (Bone Axis <X>), can be converted into a rotation widget. Draw it on top of everything, add detection on if/which axis was clicked and dragged on, and add an outer circle for screen coordinate rotation. Then make it change and transform based on which coordinate system the user has selected, and you're set. The pivot graphic is almost a translation widget as well.

Even if you don't implement widgets now, I think you're going to be forced to move away from the LMB/MMB/RMB axis transformation deal when it comes time to work on the sequence editor. It'll be a situation where you have to change it to screen coordinate rotation using the LMB, and then use the X/Y/Z axis buttons on the left toolbar to restrict to certain axis if necessary. That's the only way to drastically improve the animation experience without widgets (it's sort of a half-baked alternative), though I'd certainly recommend just getting the widgets done and over with now to save time in the long run...

Steve:
Maybe I should just start working in widgets. I had planned on making a quick pass through all the editors to whip things into better shape for an "official" release, then another pass to do more ambitions things like property sheets and widgets. But working widgets now could save a lot of work in the long run.

On a related note, I'll be gone for two months again this summer and another month and a half in the fall (Italy again :) ) so I won't be writing any code during these times.  But I'll certainly be back at it when I return.

Steve:
I posted a new build 1172 that makes these changes to the following tools:

Add Bones: Bones are always added parallel to the screen with Z-axis pointing out.

Add Bones and Rotate+Scale Bones: Fixes annoying bug that forced bones to align their Z-axis to the screen when you rotated them.

Rotate Bones: New mouse behavior:
Screen Space Rotation:
    LMB - Rotate around screen Z-axis, bone follows mouse.[1]
    MMB - Rotate around screen X-axis, move mouse up/down to rotate.
    RMB - Rotate around screen Y-axis, move mouse left/right to rotate.
Bone Axis Rotation:
  With Shift key pressed:[2]
    LMB - Rotate around bone's X axis, move mouse left/right to rotate.
    MMB - Rotate around bone's Y axis, move mouse left/right to rotate.
    RMB - Rotate around bone's Z axis, move mouse left/right to rotate.

[1] The reason that the LMB rotates around the Z-axis of the screen is because that's the more common way that you rotate things when you think of a rotation in screen space.
[2] This is how widgets would work (not with the L/M/RMB but with along one bone axis at a time) but widgets aren't written yet.

neirao:
Very cool this new version! :)

STEVE,
can you insert "diameter" of bones
for memorize the "Dia" option in  "joint angles dialog"?  :)
in add selecteds/all bones buttons,  this is very usefull too..

PS: need change the TITLE VERSION, in topic.. "Current Development Release - Build 1171, April 15, 2015"

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version