Internship Blog #2 — Robotica Demo
- asmartiba4
- Mar 1, 2024
- 1 min read
This robotic arm model includes rigging and constraints, which are mathematical rules affecting its movement.
The model has 5 control points with their own IK rules and constraints:
base
arm4
arm5
arm_target
rotation

Toggling arm5's rotation shows how constraints affect the pistons. I used useState and onChange to write these constraints and added them to the GUI.
arm5: {
value: degToRad(0),
min: degToRad(-100),
max: degToRad(180),
step: 0.01,
onChange: (value) => {
const newRotation = new THREE.Euler(0, value, 0);
nodes.arm5.rotation.copy(newRotation);
console.log("arm 5 rotation: ", nodes.arm5.rotation);
},
}
In Blender, the skeleton rigging moves all connected bones. In ThreeJS, I had to code these constraints manually. For arm5, the GUI slider ranges from min: -π to max: π.

Using Python, I can log the model's constraints to understand what needs to be fixed. Future research topics:
Skinning
Rigging
Inverse Kinematics
IK Constraints
IK Chaining
Conclusions:
Blender reads kinematics and links chains natively, but these values aren't exported to the web automatically. With help, I exported the necessary values.
Challenges:
New concepts like rigging, skinning, and IK chaining are challenging. External libraries like CCDIK solver have limitations. I'll explore other methods to display IK chaining on the web.