How to place bones *precisely*?

andya_b341b7c5f5andya_b341b7c5f5 Posts: 694
edited October 2018 in Daz Studio Discussion

Is it possible, and if so how, to place the center and end points of bones precisely in relation to other items (without manually calculating the coordinates of said position first)?

For example, suppose I have a cylinder with open ends.  i want a bone with its center point exactly in the center of one end of the cylinder and the end point exactly in the center of the other end of the cylinder.  Further suppose the cylinder is not aligned with any of the world axes and cannot be aligned in that way (it's part of a larger object).  Is there a function to automatically align the center/end point as described, or a method to achieve it?  I am thinking something along the lines of what exists in other 3D applications, where you can select all the verts at one end of the cylinder, then have an option to place a mark or cursor at the median point of the selected verts, and then 'snap' one end of the bone to that mark.  Repeat for the other end of the cylinder with the other end of the bone, et voila!

Post edited by andya_b341b7c5f5 on

Comments

  • Syrus_DanteSyrus_Dante Posts: 983
    edited October 2018

    You are talking about Blender and the 3D cursor. Select edge loop Ctrl+Alt, Shift+S snap cursor to selection, Tab to Object Mode select something else Shift+S snap selection to cursor.

    The only time DazStudio alinges the bones automaticly to the Face Groups is by using the Figure Setup pane. The Joint Editor action Adjust Rigging to Shape does something similar but only works with morph shapes to automaticly fix the joint centers.

    With the settings Auto Align Node and Auto Snap End Points in the Joint Editor tool right-click menu you have some usefull options to have the other nearby bone in the chain follow while you drag the Center Point. There is also an Align pane in DazStudio you have to select both items that should get alinged and then choose a setting and hit apply, needs a bit of practice to understand what needs to be selected in which order.

    For the object alignment you can turn off Parent Items In Place and they start snapping to the other objects Center Point if you change parent (Drag&Drop in Scene pane or use the Change Parent dialogue). For to have someting like Blender's 3D cursor you could select something (face, edge, point) in the Geometry Editor tool, then right-click and choose Geometry Assignment > Create Rigit Follow Node From Selected [Edit]: Rigit Follow Nodes can only be assigned to face selections. This gives you an item that looks like a Null that is centered to the selection and attached to the geometry. Now you can snap other items to this Rigit Follow Node with parenting and Parent Items In Place off or the Change Parent dialogue.

    I also did some youtube videos about rigging. Maybe those can help you, even though those don't count as tutorials.

    DazStudio Rigging a Cylinder

    image

    DazStudio Twi'lek for G8F 01 Editing ZarconDeeGrissom's Version

    image

    Post edited by Syrus_Dante on
  • Thanks for the information.

    The Figure Setup is not doing a good job of aligning the bones, so I have to adjust them with the Joint  Editor.  I am using the options to align the bones and snap the end points, but this still leaves the placing of the end points to be done 'by eye', which isn't accurate enough for something mechanical.

    Creating a rigid follow node is an interesting idea, and I will give that some more thought after the weekend to see if it helps achieve the result I want.

  • OK, I have tried using Rigid Follow Nodes as the basis for a method to place the center and end points of bones exactly, and it's a partial solution only.  When the rigid follow node is created, it appears in the center of the selected faces only in some (mostly simple) cases; in other cases it is obviously not in the center of the selected geometry, and in that case it isn't going to help.  I have some custom modelled mechanical shapes to rig, and they are not all nicely aligned along the world axes, which seems to throw the placement of the rigid follow nodes.  I am beginning to feel that DS is not designed to rig figures that need to move very precisely e.g. to rotate something around a precise point without any 'pitch' or 'yaw'.

    A secondary problem is that there is a lot of geometry in a small space - about the size of a G8 hand - and it's difficult to select faces accurately, especially because the zoom function jumps from being not near enough to half way inside the object in one 'click' of the mouse wheel.

  • When the rigid follow node is created, it appears in the center of the selected faces only in some (mostly simple) cases...

    Yeah thats the reason why its not as useful as the Blender 3D cursor in this case. The Rigid Follow Nodes are meant to use in case you want to attach something to the mesh even if this mesh can be shaped by morphs. Maybe someone should write a script for the case you have faces, edges or points selected in the Geometry Editor and you want to have a Null node in the center of the selection.

    A secondary problem is that there is a lot of geometry in a small space...

    I've talked about this issue in another thread see here: Rigging issue

    The solution would be to temporary scale the mesh up and/or customize the zoom Mouse Button Modifier to for example Alt+MiddleMouseButton to zoom stepless by moving the mouse up-down.

  • Syrus_Dante:

    Well, a script like that would be very useful in my current situation, but it may have limited uses.  It seems like most people have managed to achieve what they wanted to achieve until now without anything like it - or they wrote their own script. 

    I thought of working around this by adding small planes to the model in every position where I need a bone center/end point to be.  I could then import these as objects via OBJ.  A rigid follow node can be created at the center (origin) of each plane, and the coordinates of these nodes transferred to the center/end points of the bones in the Joint Editor. 

    I checked the other thread you referenced.  I had wondered already about scaling up my model, but am reluctant to do so because it's been modeled to a very particular scale.  I am concerned it will not return to exactly the original scale with all the vertices exactly where they started, perhaps due to rounding errors.  But the information about using the zoom tool in the viewport and/or the ctrl+alt+middle mouse button combo to get gradual scaling helps.

  • Well, I finally worked something out, so in case anyone has a similar problem, here's the method I came up with.

    Model a small plane positioned exactly where the center/end points of bones should be.  Export each of these individually as OBJ and import them into DS.  They will appear in the Parameters tab as being at 0,0,0 coordinates, though they are clearly not.  I needed the actual coordinates in space, so created another plane in DS, and then aligned it's center with the imported plane's center using the Align pane.  Now the coordinates of the DS-created plane show the values I needed.  Finally, transfer the coordinates to the center and end points of the bones as appropriate, and use the snapping and align node options in the Joint Editor to finalise the bone positions.  This is tedious to say the least, as each plane has to be imported individually, and then the relevant bone operations performed before moving on to the next one.

    I could not find a way to snap the center/end points of bones to the DS-created plane; it seems you cannot do this, only snap bones to other bones.  Rigid follow nodes proved of no help ultimately.  I tried created one for each imported plane, using 'Create Rigid Follow Node from selected', but they appeared a long way from the position of the plane.  This is a puzzle, as I have used rigid follow nodes a couple of times before and they were positioned acceptably on those occasions.

  • Without knowing exactly what you're trying to build, it's difficult to offer solutions. However, for objects that rotate freely around body parts, parent a Null to the body part and the spinning object to the Null, then spin the object along whichever axis you need. No matter which axis alignment the parent is actually on, the spinning object's XYZ rotations will be relative to itself.

    As for clustered and layered meshes, you can hide the various layers of an object in the Tool Settings pane when the Geometry Editor is active, as long as they have separate Surfaces/Materials, or Regions recognized by DS. Also, for the zoom, grabbing the magnifying glass in the top right is smoother than a mouse wheel.

Sign In or Register to comment.