Jump to content
Hash, Inc. Forums

It Can't Be Done Mini-Series! Bone Snapping


Recommended Posts

That's how I set up a similar rig in one of my previous posts. But as I pointed out, the setup time

to create the cp groups makes this method too time consuming for High Mesh Models.

 

Can it be done: YES

 

IS it way too time consuming on a high mesh model: YES.

 

BUT WITH THAT SAID.....This group constraint method is a good tool and method for a low cp count situation..

Link to comment
Share on other sites

Yes, unless you need to implement Episode 2, this whole setup is a bit of a Heath Robinson.

For strictly Episode-1 stuff you'd be better off taking screenshots of CPs' info boxes and punching the position values into bone properties.

Link to comment
Share on other sites

HEY RC!!,

 

Don't take my post the wrong way.... What you've done there is great and I appreciate your efforts.

 

The group constraint itself is used very little by most A:Mers. It has valuable uses. And your example here is

certainly worthy of the effort.

 

There's no telling what kind of cool setup for a rig could be created by using your method there. I think with some thought and

planning what you have a base for there could open the door for AUTOMATIC rig morphs and the like.

 

I like your example. It is very good.

Link to comment
Share on other sites

  • Hash Fellow

No, I'm just saying that if the repetitive nature of the concept is the problem, that much could be automated with text editing.

 

That said... I'm not sure what a Heath Robinson is. :unsure:

Link to comment
Share on other sites

No, I'm just saying that if the repetitive nature of the concept is the problem, that much could be automated with text editing.

 

That said... I'm not sure what a Heath Robinson is. :unsure:

 

Maybe the Heath Robinson here: https://en.wikipedia.org/wiki/W._Heath_Robinson

 

What I think is being misunderstood is that the setup would be a pre-made construct and wouldn't have to be made from scratch every time. There would be some hurdles, but a character installation rig could be made using this method.

Link to comment
Share on other sites

Yes....I'm not good at all with explaining things via text:

 

BUT yes....I was attempting to make note of the rigging potentials.

 

ALSO......Robert is correct. A macro to place bones on every cp of a heavy model would be ideal.

 

There are models out there with morphs on them that could be automatically matched in a pose and

then the pose could be connected to the joint movement. That way a heavy meshed, imported model would

not need to be re-weighted. Therefore the textures from the external could also remain intact.

Link to comment
Share on other sites

  • Hash Fellow

 

There are models out there with morphs on them that could be automatically matched in a pose and

then the pose could be connected to the joint movement. That way a heavy meshed, imported model would

not need to be re-weighted. Therefore the textures from the external could also remain intact.

 

 

I don't see bone snap helping that. If you have 1000 points you have to match between poses, doing it with 1000 bones won't be any faster than snap-to-point which we already have.

 

Why is snap-to-point not enough for that?

Link to comment
Share on other sites

  • Admin

I'm trying to imagine what success might look like so bear with me here.
Of course there is solving the process of matching Bones to CPs but there is also the matter of what that would accomplish that couldn't be accomplished in some better way.
But... moving on...

I note the following:

It appears the minimum required for a CP to be assigned to a Group is the following entry in the Model:
(Scroll down in window to see all code)
[Model]
Name=CP1

1

Pivot=-13.3138 0 0


Name=CP2

2

Pivot=14.8886 -0.0715798 0
[/Model]

 

And for the Group Constraint it gets a bit more complicated but we need it's corresponding Bone (already existing in a/the Model) to have the following (in an Action):

(Scroll down in window to see all code)

[Action]
MatchName=Bones
MatchName=Bone1
GroupTarget=..|..|Groups|CP1
MatchName=Rotate
MatchName=X
1 0 -2.71051e-018
MatchName=Y
1 0 5.55112e-015
MatchName=Z
1 0 0
MatchName=W
1 0 100
MatchName=Translate.X
1 0 0
MatchName=Translate.Y
1 0 0
MatchName=Translate.Z
1 0 -0.000134537
[/Action]

 

The Action may not require all these various channels (we'd have to test) but that is what is created in the natural order of activating the Group constraint. The critical part of the assignment being:

 

/// The beginning of the constraint container

GroupTarget=..|..|Groups|CP1 /// GroupTarget= followed by the location and name of the Group to connect to which we can assume could be same name for easy identification

... /// Additional Orientation information as required**

/// The end of the constraint container

 

 

** While I'm sure this ommission (and direct manipulation of the file) is not recommended my tests indicate the orientation data can be omitted and A:M will resolve the constraint automatically.

 

Somewhat related...

This process of creating Bones and attaching (or placing) them at CPs is not unlike the creation of Skydome/Light Rigs where an array of Lights (basically the same as Bones in A:M) is created. The primary addition is that of 'parenting' the Bones/Lights to specific CPs (in this case using the Group Constraint.

 

Note that in the above I haven't moved on to look at the orientation and length of the Bone that would place the Bone at a specific location. In Robert's video he shows how to get the ends of the Bones at the next CPs (By using the base of the next Bone in the chain) but I would imagine that where the Bone points could be any number of different locations. Alternately, the bases of every Bone might be desired to be all be at the same location while their tips/ends might be where individual CPs are located.

 

And another observation...

In some cases a workflow helper to match Bone locations to CPS might be as simple as this:

 

1. Establish your Model/mesh at a scale where the grid (of the Model space) most accurately places the majority of Control Points at or on a grid intersection

2. Establish your Bones at the same or similar scale

3. Select all CPs, Right Click and Snap to Grid

4. Select a Bone, Right Clock and Snap to Grid (Note that we cannot multiple select Bones so another approach may be necessary)

When creating Bones the Snap Manipulator to Grid icon could be toggled on to ensure all Bone origins are already at an intersection of the grid.

 

Or something like that...

 

I'd be curious to see a mockup of what success might look like for even a simple case.

I can thing of one: connecting all of the CPs of a mouth to a ring of Bones to better facilitate dialogue/articulation

Link to comment
Share on other sites

Robert is correct.

 

The cp "snap to" works really well. I for one am very greatful that they chose to add that.

 

For a case where someone would like to have each cp controlled by a bone, a macro would cut

down on the setup time.

Link to comment
Share on other sites

  • Admin
a macro would cut down on the setup time.

 

As A:M doesn't have macros I assume you refer here to a text editor like Notepad ++?

 

 

And DOH! I forgot a very important step in my setup of what I'll call the Grid Alignment Method (GAM) above:

 

1. Establish your Model/mesh at a scale where the grid (of the Model space) most accurately places the majority of Control Points at or on a grid intersection

2. Establish your Bones at the same or similar scale

3. Select all CPs, Right Click and Snap to Grid

4. Select a Bone, Right Clock and Snap to Grid (Note that we cannot multiple select Bones so another approach may be necessary)

When creating Bones the Snap Manipulator to Grid icon could be toggled on to ensure all Bone origins are already at an intersection of the grid.

ADDED: In either Model Mode or Bones Mode, Right Click and select Auto Assign Bones to connect Bones to CPs.

Link to comment
Share on other sites

  • Hash Fellow

You may like to have a look at the next versions... ;)

 

See you

*Fuchur*

Is it possible to make this more interactive, so a trip to a menu isn't needed for each bone?

 

What if holding down a control key while you moved the bone would make it snap to whatever bone the cursor is nearest? Sort of like moving points in "snap to grid"; the CP follows the cursor and jumps to whatever grid point the cursor is nearest.

 

 

I also think people were wanting to be able to snap the end of the bone. If the dragging scenario were available you could use it for both the origin and endpoints.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...