code wiki / (root) / nx_bvhmotion.nx

nx_bvhmotion.nx

buildroot/runtime/nx_bvhmotion.nx

9841 B212 linesdepth 3pulls 3 transitivereach 0 importersview sourcekind tool
docsdependenciesstructsconstsfunctions

about

nx_bvhmotion.nx -- BVH MOTION CAPTURE CENSUS (thin CLI over nx_bvh_lib). NAMING (deliberate, do not "fix" to nx_bvh): nx_bvh.nx is a BOUNDING VOLUME HIERARCHY for the slicer. The collision is real and it already cost a false capability reading -- a grep for "bvh" reported this format as ALREADY SUPPORTED when nothing of the kind existed. *A NAME IS NOT A CAPABILITY. WHY: measured 2026-08-07 against vrstormlab.com/dancexr/play (their served bytes): the LW build ingests VMD + BVH motion. BVH is the universal interchange, and unlike VMD its corpus has a commercially-clean tier -- which matters because our banked license truth says the SMPL/AMASS academic stack is non-commercial even for TRAINING. PROVEN ON REAL THIRD-PARTY DATA 2026-08-07 (not only on a fixture I authored): test_mocapbank.bvh 19 joints / 60 chan / 455 frames -> 27,300 values = 455*60 EXACT test_freebvh.bvh 55 joints / 168 chan / 69 frames -> 11,592 values = 69*168 EXACT Both channel sums also reconcile independently (6 + 18*3 = 60; 6 + 54*3 = 168). usage: nx_bvhmotion info <file.bvh> joints, channels, frames, frame time, derived fps nx_bvhmotion joints <file.bvh> joint tree: index, parent, nchan, offset xyz, name nx_bvhmotion dump <file.bvh> [n] first n motion rows nx_bvhmotion --kat selftest: 7 teeth, 3 of them anti-vacuity exit 0 ok | 2 unreadable | 3 usage | 4 REFUSED | 1 selftest RED license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 1 imports · 0 importers

nx_bvh_lib.nx nx_bvhmotion.nx

imports: nx_bvh_lib.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main b_puts sys_write b_slen b_slen ↻ m_kat m_kat_build m_cat b_slen ↻ b_parse sys_mmap nxa_die sys_write ↻ sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ b_hierarchy sys_mmap ↻ b_token b_is_space b_tok_is b_slen ↻ b_parse_fx b_chan_code b_tok_is ↻ b_motion sys_mmap ↻ b_token ↻ b_tok_is ↻ b_parse_fx ↻ b_puts ↻

structs

none

consts

25const M_MAGIC_5000: i64 = 5000
26const M_MAGIC_33333: i64 = 33333
27const M_MAGIC_2500: i64 = 2500
28const M_MAGIC_11000: i64 = 11000
29const M_MAGIC_90000: i64 = 90000
31const M_DUMP_DEF: i64 = 4
32const M_KATBUF: i64 = 4096

functions

34func m_info(H: *i64) -> i64
called by 1: main calls 2: b_putsb_num
47func m_joints(H: *i64, names: *u8, parent: *i64, nchan: *i64, off: *i64) -> i64
called by 1: main calls 2: b_putsb_num
64func m_dump(buf: *u8, len: i64, H: *i64, maxn: i64) -> i64
called by 1: main calls 3: b_frame_valuesb_numb_puts
81func m_cat(b: *u8, o: i64, s: *u8) -> i64
called by 1: m_kat_build calls 1: b_slen
88func m_kat_build(b: *u8, frames: *u8, rows: i64) -> i64
called by 1: m_kat calls 1: m_cat
106func m_kat() -> i64
176func main(argc: i64, argv: *i64) -> i64