code wiki / (root) / nx_fbx_affine_gate_t32.nx

nx_fbx_affine_gate_t32.nx source

↩ module page · 37 lines · 3581 B

1// Real original Knight affine qualification; no asset or page mutation. 2import "nx_fbx_affine_t32.nx" 3func main()->i64{ 4 let bytes:i64=8769868;let input:*u8=sys_mmap(bytes);let state:*i64=sys_mmap(24) as *i64 5 if rc_read_file_into("/tmp/nx_bind_source_t29.fbx" as *u8,input,bytes,state)!=bytes||rc_complete(state)==0{return 2} 6 let original:*u8=sys_mmap(bytes);var k:i64=0;while k<bytes{original[k]=input[k];k=k+1} 7 let scene:*FbxAffineScene=sys_mmap(__size_of(FbxAffineScene)) as *FbxAffineScene 8 let rc:i64=af_load(input,bytes,463784955,10125520,6,147,4893,scene) 9 nb_text("affine_load_rc=" as *u8);nb_num(rc);nb_text(" models=" as *u8);nb_num(scene.count);nb_text(" curves=" as *u8);nb_num(scene.curve_count);nb_text("\n" as *u8) 10 if rc!=0||scene.count!=147||scene.curve_count!=1026{return 3} 11 let out:*i64=sys_mmap(scene.count*128) as *i64 12 if af_evaluate(scene,0,0,out,scene.count*16)!=0{return 4} 13 let bind:*FbxBindScene=sys_mmap(__size_of(FbxBindScene)) as *FbxBindScene 14 bind.count=scene.count;bind.objects=sys_mmap(scene.count*__size_of(FbxBindObject)) as *FbxBindObject 15 k=0;while k<scene.count{let object:*FbxBindObject=fbb_object(bind,k);object.id=af_model(scene,k).id;object.kind=FBB_MODEL;k=k+1} 16 if fbb_pose_models(input,bytes,bind)!=0{return 5} 17 var max_linear:i64=0;var max_translation:i64=0;var matched:i64=0;k=0 18 while k<scene.count{let object:*FbxBindObject=fbb_object(bind,k);if object.matrix!=0{matched=matched+1;let pose:*i64=object.matrix as *i64;var j:i64=0;while j<16{var delta:i64=out[k*16+j]-pose[j];if delta<0{delta=0-delta};if j>=12&&j<=14{if delta>max_translation{max_translation=delta}}else{if delta>max_linear{max_linear=delta}};j=j+1}};k=k+1} 19 nb_text("bind_reference matched=" as *u8);nb_num(matched);nb_text(" max_linear_q20=" as *u8);nb_num(max_linear);nb_text(" max_translation_q20_cm=" as *u8);nb_num(max_translation);nb_text(" correspondence=MEASURED_NOT_ASSUMED\n" as *u8) 20 var exact_keys:i64=0;k=0;while k<scene.curve_count{let curve:*FbxAffineCurve=af_curve(scene,k);var j:i64=0;while j<curve.count{let ticks:i64=fbxc_i64le(curve.times,j*8);if af_sample(curve,ticks)!=vm_f32_to_int(fbxc_u32(curve.values,j*4),FBB_Q){return 6};exact_keys=exact_keys+1;j=j+1};k=k+1} 21 if exact_keys!=4893{return 7} 22 let ids:*i64=sys_mmap(64) as *i64 23 ids[0]=344107585;ids[1]=991253731;ids[2]=213878811;ids[3]=739546166;ids[4]=990627664;ids[5]=58492909;ids[6]=384732476;ids[7]=858048952 24 var frame:i64=0 25 while frame<3{let ticks:i64=frame*28866348750 26 if af_evaluate(scene,ticks,1,out,scene.count*16)!=0{return 8} 27 k=0;while k<8{let index:i64=af_find(scene,ids[k]);if index<0{return 9};nb_text("MATRIX tick=" as *u8);nb_num(ticks);nb_text(" model=" as *u8);nb_num(ids[k]);nb_text(" q20=" as *u8);var j:i64=0;while j<16{if j>0{nb_text("," as *u8)};nb_num(out[index*16+j]);j=j+1};nb_text("\n" as *u8);k=k+1};frame=frame+1 28 } 29 // Refusal controls use the parsed private scene, never original FBX bytes. 30 let first:*FbxAffineModel=af_model(scene,0);let saved:i64=first.parent;first.parent=0 31 out[0]=717;if af_evaluate(scene,0,1,out,scene.count*16)!=FC_AMBIGUOUS||out[0]!=717{return 10};first.parent=saved 32 if af_evaluate(scene,0-1,1,out,scene.count*16)!=AF_TIMING{return 11} 33 if af_evaluate(scene,0,1,out,scene.count*16-1)!=AF_CAPACITY{return 12} 34 k=0;while k<bytes{if original[k]!=input[k]{return 13};k=k+1} 35 nb_text("PASS all4893 original key times; cycle/time/output-capacity refusal; original bytes unchanged\nAFFINE evaluation=PRIVATE_NUMERICAL_QUALIFICATION bind_correspondence=PENDING animation_artifact=NONE playback=UNQUALIFIED\n" as *u8) 36 return 0 37}