@@ -6320,7 +6320,7 @@ camera_mod.update_camera_base();
63206320const  pos  =  v1 . copy ( camera_mod . c_pos ) ; 
63216321const  target  =  v2 . copy ( camera_mod . c_target ) ; 
63226322
6323- ignore_list ?. forEach ( id => { 
6323+ ( ( ignore_list   ===   true )  ?  Object . keys ( camera_mod . mod_list )  :  ignore_list ) ?. forEach ( id => { 
63246324  const  c  =  camera_mod . mod_list [ id ] ; 
63256325  if  ( c )  { 
63266326    pos . add ( c . pos_last ) ; 
@@ -8956,6 +8956,10 @@ para.left_palm_length = v1.fromArray(para.pos0['leftHand']).distanceTo(v2.fromAr
89568956para . left_leg_length  =  ( ( para . pos0 [ 'leftUpperLeg' ] [ 1 ]  -  para . pos0 [ 'leftLowerLeg' ] [ 1 ] )  +  ( para . pos0 [ 'leftLowerLeg' ] [ 1 ]  -  para . pos0 [ 'leftFoot' ] [ 1 ] ) )  *  vrm_scale ; 
89578957para . spine_length  =  ( para . pos0 [ 'neck' ] [ 1 ]  -  para . pos0 [ 'leftUpperLeg' ] [ 1 ] )  *  vrm_scale ; 
89588958
8959+ const  b3  =  new  THREE . Box3 ( ) . setFromObject ( vrm . scene ) ; 
8960+ para . head_height_absolute  =  ( b3 . max . y  -  para . pos0 [ 'head' ] [ 1 ] )  *  vrm_scale ; 
8961+ //console.log(para.head_height_absolute) 
8962+ 
89598963para . left_heel_height  =  para . pos0 [ 'leftFoot' ] [ 1 ]  *  vrm_scale ; 
89608964para . hip_center  =  new  THREE . Vector3 ( ) . fromArray ( para . pos0 [ 'leftUpperLeg' ] ) . setX ( 0 ) . multiplyScalar ( vrm_scale ) ; 
89618965para . hip_center_offset  =  new  THREE . Vector3 ( ) . fromArray ( para . pos0 [ 'hips' ] ) . multiplyScalar ( vrm_scale ) . sub ( para . hip_center ) ; 
@@ -9877,6 +9881,9 @@ if (!mesh.matrixAutoUpdate) {
98779881    const  nj_list  =  [ "0" , "1" , "2" , "3" ] ; 
98789882
98799883    let  joint_stiffness_percent ; 
9884+     function  resetPhysics ( )  { 
9885+ MMD_SA . THREEX . get_model ( 0 ) . resetPhysics ( ) ; 
9886+     } 
98809887
98819888    return  { 
98829889      get  list ( )  {  return  vrm_list ;  } , 
@@ -9885,7 +9892,13 @@ if (!mesh.matrixAutoUpdate) {
98859892      get  vrm_scale ( )  {  return  vrm_scale ;  } , 
98869893
98879894      get  joint_stiffness_percent  ( )  {  return  ( joint_stiffness_percent  ==  null )  ? 100  : joint_stiffness_percent ;  } , 
9888-       set  joint_stiffness_percent  ( v )  {  joint_stiffness_percent  =  v ;  } , 
9895+       set  joint_stiffness_percent  ( v )  { 
9896+ joint_stiffness_percent  =  v ; 
9897+ if  ( MMD_SA_options . Dungeon . started )  { //(MMD_SA.MMD_started) {// 
9898+   System . _browser . on_animation_update . remove ( resetPhysics ,  0 ) ; 
9899+   System . _browser . on_animation_update . add ( resetPhysics ,  60 , 0 ) ; 
9900+ } 
9901+       } , 
98899902
98909903      get  bone_map_MMD_to_VRM ( )  {  return  bone_map_MMD_to_VRM ;  } , 
98919904      get  bone_map_VRM_to_MMD ( )  {  return  bone_map_VRM_to_MMD ;  } , 
@@ -10024,7 +10037,8 @@ mesh_obj.traverse( ( obj ) => {
1002410037  obj . layers . enable ( MMD_SA . THREEX . PPE . N8AO . AO_MASK ) ; 
1002510038}  ) ; 
1002610039
10027- if  ( ! MMD_SA . MMD_started ) 
10040+ // headless_mode 
10041+ if  ( ! MMD_SA . MMD_started  &&  ! MMD_SA_options . _XRA_headless_mode ) 
1002810042  data . scene . add ( mesh_obj ) ; 
1002910043
1003010044var  vrm_obj  =  new  VRM_object ( para . vrm_index ,  vrm ,  {  url :url_raw  } ) ; 
@@ -13920,6 +13934,67 @@ obj.traverse(node => {
1392013934console . log ( 'geo_disposed:'  +  geo_disposed ,  'map_disposed:'  +  map_disposed ,  'mtrl_disposed:'  +  mtrl_disposed ,  'misc_disposed:'  +  misc_disposed ) ; 
1392113935      } , 
1392213936
13937+ // headless_mode 
13938+       press_key : function  ( k )  { 
13939+ const  ck  =  k . split ( '+' ) ; 
13940+ let  command ,  code ; 
13941+ if  ( ck . length  ==  1 )  { 
13942+   code  =  ck [ 0 ] ; 
13943+ } 
13944+ else  { 
13945+   command  =  ck [ 0 ] ; 
13946+   code  =  ck [ 1 ] ; 
13947+ } 
13948+ 
13949+ let  altKey ,  ctrlKey ,  shiftKey ; 
13950+ switch  ( command )  { 
13951+   case  'Alt' :
13952+     altKey  =  true ; 
13953+     break ; 
13954+   case  'Ctrl' :
13955+     ctrlKey  =  true ; 
13956+     break ; 
13957+   case  'Shift' :
13958+     shiftKey  =  true ; 
13959+     break ; 
13960+ } 
13961+ 
13962+ let  keyCode ; 
13963+ if  ( / ^ [ A - Z ] $ / . test ( code ) )  { 
13964+   code  =  'Key'  +  code ; 
13965+ } 
13966+ else  if  ( / N u m p a d ( \d ) / . test ( code ) )  { 
13967+   keyCode  =  96  +  parseInt ( RegExp . $1 ) ; 
13968+ } 
13969+ else  if  ( / A r r o w ( U p | D o w n | L e f t | R i g h t ) / . test ( code ) )  { 
13970+   switch  ( RegExp . $1 )  { 
13971+     case  'Left' :
13972+       keyCode  =  37 ; 
13973+       break ; 
13974+     case  'Up' :
13975+       keyCode  =  38 ; 
13976+       break ; 
13977+     case  'Down' :
13978+       keyCode  =  39 ; 
13979+       break ; 
13980+     case  'Right' :
13981+       keyCode  =  40 ; 
13982+       break ; 
13983+   } 
13984+ } 
13985+ else  if  ( code  ==  'NumpadAdd' )  { 
13986+   keyCode  =  107 ; 
13987+ } 
13988+ else  if  ( code  ==  'NumpadSubtract' )  { 
13989+   keyCode  =  109 ; 
13990+ } 
13991+ else  if  ( code  ==  'Space' )  { 
13992+   keyCode  =  32 ; 
13993+ } 
13994+ 
13995+ document . dispatchEvent ( new  KeyboardEvent ( 'keydown' ,  {  code,  keyCode,  altKey,  ctrlKey,  shiftKey } ) ) ; 
13996+       } 
13997+ 
1392313998    } 
1392413999
1392514000  } ; 
@@ -14468,63 +14543,8 @@ const k = MMD_SA_options.gamepad[0].buttons[b_id]?.key;
1446814543//DEBUG_show(i+'/'+b_id+'/'+k) 
1446914544if  ( ! k )  return ; 
1447014545
14471- const  ck  =  k . split ( '+' ) ; 
14472- let  command ,  code ; 
14473- if  ( ck . length  ==  1 )  { 
14474-   code  =  ck [ 0 ] ; 
14475- } 
14476- else  { 
14477-   command  =  ck [ 0 ] ; 
14478-   code  =  ck [ 1 ] ; 
14479- } 
14480- 
14481- let  altKey ,  ctrlKey ,  shiftKey ; 
14482- switch  ( command )  { 
14483-   case  'Alt' :
14484-     altKey  =  true ; 
14485-     break ; 
14486-   case  'Ctrl' :
14487-     ctrlKey  =  true ; 
14488-     break ; 
14489-   case  'Shift' :
14490-     shiftKey  =  true ; 
14491-     break ; 
14492- } 
14493- 
14494- let  keyCode ; 
14495- if  ( / ^ [ A - Z ] $ / . test ( code ) )  { 
14496-   code  =  'Key'  +  code ; 
14497- } 
14498- else  if  ( / N u m p a d ( \d ) / . test ( code ) )  { 
14499-   keyCode  =  96  +  parseInt ( RegExp . $1 ) ; 
14500- } 
14501- else  if  ( / A r r o w ( U p | D o w n | L e f t | R i g h t ) / . test ( code ) )  { 
14502-   switch  ( RegExp . $1 )  { 
14503-     case  'Left' :
14504-       keyCode  =  37 ; 
14505-       break ; 
14506-     case  'Up' :
14507-       keyCode  =  38 ; 
14508-       break ; 
14509-     case  'Down' :
14510-       keyCode  =  39 ; 
14511-       break ; 
14512-     case  'Right' :
14513-       keyCode  =  40 ; 
14514-       break ; 
14515-   } 
14516- } 
14517- else  if  ( code  ==  'NumpadAdd' )  { 
14518-   keyCode  =  107 ; 
14519- } 
14520- else  if  ( code  ==  'NumpadSubtract' )  { 
14521-   keyCode  =  109 ; 
14522- } 
14523- else  if  ( code  ==  'Space' )  { 
14524-   keyCode  =  32 ; 
14525- } 
14526- 
14527- document . dispatchEvent ( new  KeyboardEvent ( 'keydown' ,  {  code,  keyCode,  altKey,  ctrlKey,  shiftKey } ) ) ; 
14546+ // headless_mode 
14547+ MMD_SA . THREEX . utils . press_key ( k ) ; 
1452814548        } 
1452914549
1453014550        const  buttons  =  { } ; 
0 commit comments