Skip to content

Tachi: reload from empty with the slide held back - #170

Open
sunzenshen wants to merge 4 commits into
NeotokyoRebuild:masterfrom
sunzenshen:vm-empty-slide-assets
Open

sunzenshen wants to merge 4 commits into
NeotokyoRebuild:masterfrom
sunzenshen:vm-empty-slide-assets

Conversation

@sunzenshen

@sunzenshen sunzenshen commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Description

Companion of NeotokyoRebuild/neo#2248 (the empty pistol's slide). With that PR, the Tachi's slide locks back at the last shot, but a reload from empty plays the shipped reload, whose slide is forward from its first frame: the slide closes as the reload starts, not when the new magazine is in (reported in review of #2248). The Milso ships a reloadempty for this (ACT_VM_RELOAD_EMPTY); the Tachi does not.

This adds reloadempty to v_jinrai_tachi and v_nsf_tachi, built the way the Milso's shipped one is: the shipped reload (64 frames, 2.1 s) with only the slide bone changed, held at its idle01empty value (back) and eased forward over frames 54-62 (1.80-2.07 s), after the magazine is seated. Every other sequence is the shipped one, recompiled (within 0.01 u of the shipped model; reload within 0.14 u / 0.44 deg); the fire sequences keep their muzzle flash event. Reload length and timing are unchanged.

The two models are new in this repo; the game loads the original NEOTOKYO Tachi models today.

The neo side is NeotokyoRebuild/neo#2248: it plays ACT_VM_RELOAD_EMPTY on a reload from empty wherever the model has it. Without that PR the new sequence is never played; without this PR the Tachi keeps the shipped reload. NeotokyoRebuild/neo#2259 is the same code as NeotokyoRebuild/neo#2248, for merging both at once.

Sources: neo/modelsrc/weapons/{jinrai,nsf}_tachi/ holds the QC, the new animation (SMD), the row it was composed from (segments.csv) and a README. The reference mesh and the other animations are the shipped model decompiled; compiled with studiomdl from the Source SDK Base 2013 MP tools (MDL v48).

How to test

With NeotokyoRebuild/neo#2248 (or NeotokyoRebuild/neo#2259): fire a Tachi's magazine dry, then reload. The slide stays back through the reload and goes forward near its end. A partial reload plays the normal reload. Both teams' Tachi.

Results

Per-frame viewmodel log, Release build of NeotokyoRebuild/neo#2248 with these models: a Tachi reload from empty plays reloadempty (2.08-2.09 s, full clip at its end), Jinrai and NSF; a partial reload plays reload. On video, mid-reload the slide is back with this PR and forward without it.

Related

The Tachi viewmodels had no reload for an empty gun, so a reload from
empty played the normal reload, whose slide is forward from its first
frame, and the slide closed as the reload began. Add reloadempty
(ACT_VM_RELOAD_EMPTY) to the Jinrai and NSF Tachi, built the way the
Milso's shipped one is: the normal reload with only the slide changed,
held back and released over frames 54-62 after the magazine is seated.
Every other sequence is the shipped one, recompiled.
@sunzenshen

sunzenshen commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor Author

I'm expecting critical feedback on where to actually put the pre-compilation animation files. Probably don't want to commit every file as is in this initial commit to neoAssets.

Edit: Initial discussion seems to point to neoAssets being the right repo, but I need to prepare the project files in modelsrc/ to be more easily auditable by a Blender user.

@sunzenshen
sunzenshen marked this pull request as ready for review October 17, 2026 02:03
@sunzenshen sunzenshen added the enhancement New feature or request label Oct 17, 2026
@sunzenshen

sunzenshen commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor Author

TODO: I still need to make a Blender project example for the custom animation.

sunzenshen and others added 3 commits October 25, 2026 23:33
Make both Tachi animation sets editable in Blender with relative preview
textures and repeatable SMD export and model compilation. Include the
original reference mesh and all animation inputs for a complete rebuild.

Keep reference mesh export disabled to preserve original split normals.
Document the animator workflow and CMake-installed asset layout.

Verify both Blender exports, SDK compiles, and relocated project exports.
Preserve all 54 bones, 16 clips, sequence metadata and mesh attributes.
Removed redundant timing information for model export and compilation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant