Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Obi Bone FixedRoot As Parent
#1
Is it possible to have the root bone be part of the chain as if there was a parent transform with same position and rotation with "Fix Root" enabled?

I feel this should be a opt in to have the root bone be driven by animation or fully simualted. It is not great for workflow to have to modify existing rigs to enable this behaviour.
Reply
#2
(23-04-2025, 11:03 PM)Jawsarn Wrote: Is it possible to have the root bone be part of the chain as if there was a parent transform with same position and rotation with "Fix Root" enabled?

I feel this should be a opt in to have the root bone be driven by animation or fully simualted. It is not great for workflow to have to modify existing rigs to enable this behaviour.

Hi,

I'm not sure I understand your question: isn't this what "Fix Root" already does? when enabled, it makes the root bone fully animation driven. When disabled, it's fully simulated.

If you want the root's parent transform to be the root instead, just move the ObiBone component one level up the hierarchy.

kind regards,
Reply
#3
(24-04-2025, 06:32 AM)josemendez Wrote: Hi,

I'm not sure I understand your question: isn't this what "Fix Root" already does? when enabled, it makes the root bone fully animation driven. When disabled, it's fully simulated.

If you want the root's parent transform to be the root instead, just move the ObiBone component one level up the hierarchy.

kind regards,

I see, I saw now that there was a ignore children toggle for ignore list elements. This seems to add a restriction that one can only have one bone hierarchy from the root however.

An hierarchy of
- pelvis
-- leftTigh
-- rightTigh
-- stomach
-- tail
-- fin

Will not be able to have bones on both "Tail" and "Fin" with individual settings if one wants the base bone of both hierarchies to have rotation affected by simulation as well.

Best regards,
Reply
#4
(24-04-2025, 11:16 AM)Jawsarn Wrote: Will not be able to have bones on both "Tail" and "Fin" with individual settings if one wants the base bone of both hierarchies to have rotation affected by simulation as well.

Why not? you can have have a single ObiBone at "pelvis" and still have different constraint values for every bone along the hierarchy. That's what per-property curves are for. If curves are not precise enough for your purpose (eg. you want to specify different bend compliance values for specific bones, eg. from "fin" down bones should be a lot more rigid) you can do that programmatically.

(24-04-2025, 11:16 AM)Jawsarn Wrote: This seems to add a restriction that one can only have one bone hierarchy from the root however.

You can't have multiple simulations on the same hierarchy, if that's what you are thinking about. For example, have a ObiBone at the character root, then another ObiBone at the base of the tail. The reason is that would result in two completely different sets of positions/orientations for bones at the tail, since they're driven by two simulations. These would need to be "merged" or reconciled somehow.

kind regards,
Reply
#5
Sorry, I don't quite follow. If I have a single ObiBone at "pelvis" and my "fin" child hierarchy and "tail" child hierarchy want e.g. different mass curve. How am I supposed to set that up from one ObiBone?

If the root "pelivs" is marked as fixed, no simulation should take place for that transform right? So there should be no need to merge any simulations if we would have two ObiBones for "fin" and "tail" sub hierarchies.

Thank you a lot for the patience Sonrisa
Reply
#6
(24-04-2025, 03:16 PM)Jawsarn Wrote: Sorry, I don't quite follow. If I have a single ObiBone at "pelvis" and my "fin" child hierarchy and "tail" child hierarchy want e.g. different mass curve. How am I supposed to set that up from one ObiBone?

You can't have different mass curves, but the curve you do have applies to all "branches" of the hierarchy. If you want different values for specific branches, you have to do that programmatically (you can assign parameters to every particle and constraint separately in Obi), as there's no way to do that from the UI currently.

What I can do is create a "ObiBoneOverride" component that when applied to a bone that's part of the hierarchy simulated by an ObiBone, overrides all curves for that specific branch. Would this solve your use case?

(24-04-2025, 03:16 PM)Jawsarn Wrote: If the root "pelivs" is marked as fixed, no simulation should take place for that transform right? So there should be no need to merge any simulations if we would have two ObiBones for "fin" and "tail" sub hierarchies.

If you only have ObiBones for "fin" and "tail", then there's no need to merge anything and things will work fine, since their hierarchies do not share any bones: they're completely independent. This is the approach used in the "CharacterTentacles" sample scene.

However if you have another ObiBone at "pelvis", it will simulate all bones below it in the hierarchy including "fin", "tail", and their sub-hierarchies. The only bone that would not be simulated is "pelvis" itself, if marked as fixed. As a result, you'd have two sets of simulation results for fin, tail, and all bones below them: the simulation carried out by the pelvis ObiBone, and the simulations carried out by the fin and tail ObiBones. Which one ends up being applied to the bones is undefined (and undefined behavior is not good!). Hope that makes sense!

kind regards,
Reply
#7
I think a "ObiBoneOverride" as an addition would be a nice solution if it's "FixedRootPosition" doesn't make sense.

I understand correctly that the override would include the bone for the transform it is attached to as well then. So I could get my intended behaviour with having a bone component at pelvis with zero values, override on both "fin" and "tail" for my intended values?

Thank you,
Reply
#8
(25-04-2025, 12:22 PM)Jawsarn Wrote: I think a "ObiBoneOverride" as an addition would be a nice solution if it's "FixedRootPosition" doesn't make sense.

I understand correctly that the override would include the bone for the transform it is attached to as well then. So I could get my intended behaviour with having a bone component at pelvis with zero values, override on both "fin" and "tail" for my intended values?

Thank you,

Correct, that would be the way I envision this working. Will get to work on it asap.
Reply
#9
Here's the updated ObiBone component and a new ObiBoneOverride component. Replace ObiBone and ObiBoneBlueprint with the ones attached, then add ObiBoneOverride.

- /Obi/Scripts/RopeAndRod/Actors/ObiBone.cs
- /Obi/Scripts/RopeAndRod/Blueprints/ObiBoneBlueprint.cs
- /Obi/Scripts/RopeAndRod/Actors/ObiBoneOverride.cs

When applied to any transform inside the hierarchy of an ObiBone, ObiBoneOverride will override all curve-driven values (including those of the transform it is added to). Let me know if this is what you need.

kind regards,


Attached Files
.cs   ObiBone.cs (Size: 29.77 KB / Downloads: 0)
.cs   ObiBoneOverride.cs (Size: 7.81 KB / Downloads: 0)
.cs   ObiBoneBlueprint.cs (Size: 14.9 KB / Downloads: 0)
Reply