Skip to content

Commit e16dd05

Browse files
committed
Add new joints to XrBodyTracker
1 parent e45cc68 commit e16dd05

File tree

4 files changed

+72
-2
lines changed

4 files changed

+72
-2
lines changed

doc/classes/XRBodyTracker.xml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,40 @@
289289
<constant name="JOINT_RIGHT_PINKY_FINGER_TIP" value="75" enum="Joint">
290290
Right pinky finger tip joint.
291291
</constant>
292-
<constant name="JOINT_MAX" value="76" enum="Joint">
292+
<constant name="JOINT_LOWER_CHEST" value="76" enum="Joint">
293+
Lower chest joint.
294+
</constant>
295+
<constant name="JOINT_LEFT_SCAPULA" value="77" enum="Joint">
296+
Left scapula joint.
297+
</constant>
298+
<constant name="JOINT_LEFT_WRIST_TWIST" value="78" enum="Joint">
299+
Left wrist twist joint.
300+
</constant>
301+
<constant name="JOINT_RIGHT_SCAPULA" value="79" enum="Joint">
302+
Right scapula joint.
303+
</constant>
304+
<constant name="JOINT_RIGHT_WRIST_TWIST" value="80" enum="Joint">
305+
Right wrist twist joint.
306+
</constant>
307+
<constant name="JOINT_LEFT_ANKLE_TWIST" value="81" enum="Joint">
308+
Left ankle twist joint.
309+
</constant>
310+
<constant name="JOINT_LEFT_ANKLE" value="82" enum="Joint">
311+
Left ankle joint.
312+
</constant>
313+
<constant name="JOINT_LEFT_MIDDLE_FOOT" value="83" enum="Joint">
314+
Left middle foot joint.
315+
</constant>
316+
<constant name="JOINT_RIGHT_ANKLE_TWIST" value="84" enum="Joint">
317+
Right ankle twist joint.
318+
</constant>
319+
<constant name="JOINT_RIGHT_ANKLE" value="85" enum="Joint">
320+
Right ankle joint.
321+
</constant>
322+
<constant name="JOINT_RIGHT_MIDDLE_FOOT" value="86" enum="Joint">
323+
Right middle foot joint.
324+
</constant>
325+
<constant name="JOINT_MAX" value="87" enum="Joint">
293326
Represents the size of the [enum Joint] enum.
294327
</constant>
295328
<constant name="JOINT_FLAG_ORIENTATION_VALID" value="1" enum="JointFlags" is_bitfield="true">

scene/3d/xr/xr_body_modifier_3d.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ XRBodyModifier3D::BoneUpdate XRBodyModifier3D::get_bone_update() const {
8282
}
8383

8484
void XRBodyModifier3D::_get_joint_data() {
85-
// Table of Godot Humanoid bone names.
85+
// Table of Godot Humanoid bone names with some additions.
8686
static const String bone_names[XRBodyTracker::JOINT_MAX] = {
8787
"Root", // XRBodyTracker::JOINT_ROOT
8888

@@ -168,6 +168,19 @@ void XRBodyModifier3D::_get_joint_data() {
168168
"RightLittleIntermediate", // XRBodyTracker::JOINT_RIGHT_PINKY_FINGER_PHALANX_INTERMEDIATE
169169
"RightLittleDistal", // XRBodyTracker::JOINT_RIGHT_PINKY_FINGER_PHALANX_DISTAL
170170
"RightLittleTip", // XRBodyTracker::JOINT_RIGHT_PINKY_FINGER_TIP
171+
172+
// Extra Joints.
173+
"LowerChest", // XRBodyTracker::JOINT_LOWER_CHEST
174+
"LeftScapula", // XRBodyTracker::JOINT_LEFT_SCAPULA
175+
"LeftWristTwist", // XRBodyTracker::JOINT_LEFT_WRIST_TWIST
176+
"RightScapula", // XRBodyTracker::JOINT_RIGHT_SCAPULA
177+
"RightWristTwist", // XRBodyTracker::JOINT_RIGHT_WRIST_TWIST
178+
"LeftAnkleTwist", // XRBodyTracker::JOINT_LEFT_ANKLE_TWIST
179+
"LeftAnkle", // XRBodyTracker::JOINT_LEFT_ANKLE
180+
"LeftMiddleFoot", // XRBodyTracker::JOINT_LEFT_MIDDLE_FOOT
181+
"RightAnkleTwist", // XRBodyTracker::JOINT_RIGHT_ANKLE_TWIST
182+
"RightAnkle", // XRBodyTracker::JOINT_RIGHT_ANKLE
183+
"RightMiddleFoot", // XRBodyTracker::JOINT_RIGHT_MIDDLE_FOOT
171184
};
172185

173186
// reset JIC.

servers/xr/xr_body_tracker.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ void XRBodyTracker::_bind_methods() {
126126
BIND_ENUM_CONSTANT(JOINT_RIGHT_PINKY_FINGER_PHALANX_INTERMEDIATE);
127127
BIND_ENUM_CONSTANT(JOINT_RIGHT_PINKY_FINGER_PHALANX_DISTAL);
128128
BIND_ENUM_CONSTANT(JOINT_RIGHT_PINKY_FINGER_TIP);
129+
BIND_ENUM_CONSTANT(JOINT_LOWER_CHEST);
130+
BIND_ENUM_CONSTANT(JOINT_LEFT_SCAPULA);
131+
BIND_ENUM_CONSTANT(JOINT_LEFT_WRIST_TWIST);
132+
BIND_ENUM_CONSTANT(JOINT_RIGHT_SCAPULA);
133+
BIND_ENUM_CONSTANT(JOINT_RIGHT_WRIST_TWIST);
134+
BIND_ENUM_CONSTANT(JOINT_LEFT_ANKLE_TWIST);
135+
BIND_ENUM_CONSTANT(JOINT_LEFT_ANKLE);
136+
BIND_ENUM_CONSTANT(JOINT_LEFT_MIDDLE_FOOT);
137+
BIND_ENUM_CONSTANT(JOINT_RIGHT_ANKLE_TWIST);
138+
BIND_ENUM_CONSTANT(JOINT_RIGHT_ANKLE);
139+
BIND_ENUM_CONSTANT(JOINT_RIGHT_MIDDLE_FOOT);
129140
BIND_ENUM_CONSTANT(JOINT_MAX);
130141

131142
BIND_BITFIELD_FLAG(JOINT_FLAG_ORIENTATION_VALID);

servers/xr/xr_body_tracker.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,19 @@ class XRBodyTracker : public XRPositionalTracker {
129129
JOINT_RIGHT_PINKY_FINGER_PHALANX_DISTAL,
130130
JOINT_RIGHT_PINKY_FINGER_TIP,
131131

132+
// Extra joints that aren't part of the Godot humanoid skeleton, but are commonly used in some VR avatars.
133+
JOINT_LOWER_CHEST,
134+
JOINT_LEFT_SCAPULA,
135+
JOINT_LEFT_WRIST_TWIST,
136+
JOINT_RIGHT_SCAPULA,
137+
JOINT_RIGHT_WRIST_TWIST,
138+
JOINT_LEFT_ANKLE_TWIST,
139+
JOINT_LEFT_ANKLE,
140+
JOINT_LEFT_MIDDLE_FOOT,
141+
JOINT_RIGHT_ANKLE_TWIST,
142+
JOINT_RIGHT_ANKLE,
143+
JOINT_RIGHT_MIDDLE_FOOT,
144+
132145
JOINT_MAX,
133146
};
134147

0 commit comments

Comments
 (0)