Skip to content

First-person player

The hands seen in first person are the player model itself, posed by a separate set of first-person animations and drawn with only the arms and held items shown. Observed · the vanilla player of bedrock-samples v1.26.60.5 Resource packs that replace the player’s animations replace these too. Observed · the vanilla player and the La Nature resource pack

The player’s root animation controller picks its state from engine variables: paperdoll while v.is_paperdoll, first_person while v.is_first_person (and not v.is_paperdoll), map_player while v.map_face_icon, and third_person otherwise. Observed · the vanilla player of bedrock-samples v1.26.60.5 The render controllers are split the same way: controller.render.player.first_person applies while v.is_first_person && !q.is_spectator, the third-person one while none of v.is_first_person, v.map_face_icon and q.is_spectator holds. Observed · the vanilla player of bedrock-samples v1.26.60.5 See engine variables.

animation.player.first_person.base_pose turns the body bone by (q.target_x_rotation, q.target_y_rotation, 0) and the head by (q.target_x_rotation, q.target_y_rotation + 180, 0). Observed · the vanilla player of bedrock-samples v1.26.60.5 In the player’s geometry (geometry.humanoid.custom) the arms hang from the body, whose pivot is at the neck, [0, 24, 0]. Observed · the player geometry of bedrock-samples v1.26.60.5 The two rotations are the view’s pitch and its yaw from the body, so the body and the arms on it turn with the view about that pivot. Inferred The arms then stand still in the view only when the view turns about the same point, the eye at that pivot. Inferred The extra half turn of the head turns it away from the eye. Inferred

animation.player.first_person.empty_hand moves the right arm by [13.5, -10.0, 12.0] and turns it by [95, -45, 115] (plus small terms for VR). Observed · the vanilla player of bedrock-samples v1.26.60.5 The other first-person arm poses use positions of the same kind, an x of about ±13.5 to ±15.5 and a z of 8 to 12. Observed · the vanilla player of bedrock-samples v1.26.60.5 and the La Nature resource pack

Read with the axis convention Blockbench uses for Bedrock models, that position carries the right arm across to the body’s left side and 12 pixels behind it, so with the body facing the way the eye looks, the arms sit behind the eye. Inferred For them to be seen in front and on their own side, the whole pose is drawn turned a half turn about the view’s vertical axis. Inferred A turn about the view’s axis rather than the world’s is what keeps the arms still as the view pitches: about the world’s vertical, the body’s pitch would carry the arms the opposite way to the view, and they would move across it by twice the pitch. Inferred Drawn this way, the vanilla empty-hand pose stays put in the view for any pitch and any turn of the head from the body, and lands near where Java Edition draws its first-person arm. Inferred

Is the first-person pose really drawn turned about the view’s vertical?

The half turn is the transform that makes the published poses stand still in view and appear in front; no capture of the game’s first-person transforms confirms it.

animation.player.first_person.swap_item lowers each arm while the held item changes: the right arm by -10 * (1 - v.player_arm_height) pixels, the left by -10 * (1 - c.player_offhand_arm_height) unless the off hand holds a filled map or a shield. Observed · the vanilla player of bedrock-samples v1.26.60.5 shield_block lowers them the same way, the right arm only when the off hand holds no shield. Observed · the vanilla player of bedrock-samples v1.26.60.5 Neither value is assigned by any script. Proven · every JSON file of the v1.26.60.5 resource pack They are the hands’ raise, 0 lowered to 1 raised, which the engine moves as items are swapped; left at 0, the arms stay 10 pixels low. Inferred