code wiki / (root) / nx_gltf_pose_gate_t181.nx

nx_gltf_pose_gate_t181.nx source

↩ module page · 13 lines · 1314 B

1import "nx_gltf_pose_candidate_t181.nx" 2func gp(s:*u8)->i64{sys_write(1,s,gll_slen(s));return 0} 3func gn(v:i64)->i64{let b:*u8=sys_mmap(32);var x:i64=v;var i:i64=31;if x<0{gp("-");x=0-x};if x==0{b[i]=48 as u8;i=i-1};while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1};sys_write(1,(b as i64+i+1) as *u8,31-i);sys_munmap(b,32);return 0} 4 5func main()->i64{ 6 let ln:*i64=sys_mmap(16) as *i64;let src:*u8=sys_read_file("../knowledge/fetched/rigmodels-tifa-catwalk-143925f3.glb",ln);let cx:*i64=sys_mmap(GLD_CONTEXT_WORDS*8) as *i64 7 if gltf_view_open(src,ln[0],cx)!=0{return 1};let st:*i64=cx[5] as *i64;let count:i64=st[5];if count<=0||count>GLD_I64_MAX/128{return 2} 8 let parents:*i64=sys_mmap(count*8) as *i64;let local:*i64=sys_mmap(count*128) as *i64;let world:*i64=sys_mmap(count*128) as *i64;let done:*i64=sys_mmap(count*8) as *i64;let trs:*i64=sys_mmap(count*80) as *i64 9 if gld_parents(cx,count,parents)!=0{return 3};var i:i64=0 10 while i<count{if gld_node_trs(cx,i,(trs as i64+i*80) as *i64,(local as i64+i*128) as *i64)<0{return 4};i=i+1} 11 if gld_world_matrices(count,parents,local,world,done)!=0{return 5} 12 i=0;while i<count{gp("NODE ");gn(i);gp(" parent=");gn(parents[i]);gp(" world_q20=");var k:i64=0;while k<16{gn(world[i*16+k]);gp(",");k=k+1};gp("\n");i=i+1} 13 gp("AUTHORED_NODES=");gn(count);gp("\n");return 0}