Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Endoscope rod help
#2
(08-11-2025, 05:21 PM)Raidan Wrote: Key characteristic: The tip bending is mechanically isolated from the main shaft via internal pull-wires. When you deflect the tip, it doesn't create relevant opposing forces in the insertion tube body.

What's the best approach in Obi to implement this articulated structure where the tip can deflect independently without forces propagating to the body? I've done several test and thought of several implementations

Under normal circumstances, what you're asking for is physically impossible: If body A applies a force on body B, B applies a force of the same magnitude but opposite direction on A. This is Newton's third law of motion.

I'm not familiar with how endoscopes work, but if they have internal mechanisms to compensate/absorb the force that deflecting their tip causes on the main body of the endoscope, Obi does not implement anything remotely similar to this which means you'll need to modify the engine to achieve your goal.

(08-11-2025, 05:21 PM)Raidan Wrote: - Modify particle velocities/positions for just the tip section

This wouldn't result in persistent deformation of the rod, unless you calculated and applied velocity and position deltas yourself every constraint projection iteration. So, this would effectively be the same thing as building an entirely custom constraint type.

(08-11-2025, 05:21 PM)Raidan Wrote: - Body rod + Tip rod connected via ObiStitcher (or other method). Attachments seem too rigid for my needs.

Attachments are only as rigid as you want them to be: you can manually set their compliance (inverse stiffness).

(08-11-2025, 05:21 PM)Raidan Wrote: - Somehow prevent forces from propagating to the rest of the rod
- How would I achieve force isolation in this case?
- Does stitching provide any means for force isolation, or do forces still propagate?

There's no such thing as "force isolation" in conventional physics engines. There may be mechanisms to accomplish something similar in robotics or specialized industrial areas that use clever mechanical actuators, but I'm not familiar with them.

In any case, here's my proposed plan for implementing this: Rods are built of stretch/shear and bend/twist constraints. The former keep the rod's length, while the latter keep its shape. Bend/twist constraints have a "rest" shape, expressed as a Darboux vector. You can modify this vector to force the rod to bend, so pick the bend/twist constraint at the location where you want the rod to bend and set its rest Darboux vector to the desired value.

Doing this requires some knowledge of Obi's constraints architecture. See the ObiBone component (specifically, its UpdateRestShape() method) as an example of a custom actor type that modifies bend/twist rest Darboux vectors, in this case to follow the shape of an animated joint hierarchy.

Once you can control how the rod bends, achieving "force isolation" would require calculating the reaction force generated by the bend/twist constraint between the "tip" and the "body" on the body of the endoscope and then applying the same force multiplied by -1 to the body. This requires familiarity with position-based dynamics (specifically, position and orientation based Cosserat rods) which is the simulation paradigm upon which Obi is built.

kind regards,
Reply


Messages In This Thread
Endoscope rod help - by Raidan - 08-11-2025, 05:21 PM
RE: Endoscope rod help - by josemendez - 10-11-2025, 06:02 PM
RE: Endoscope rod help - by Kira0tori - 03-12-2025, 10:06 AM