Skip to content

Commit 874f600

Browse files
committed
Update for v0.27.3
1 parent b943aa7 commit 874f600

File tree

9 files changed

+565
-159
lines changed

9 files changed

+565
-159
lines changed

MMD.js/MMD_SA.js

Lines changed: 80 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6320,7 +6320,7 @@ camera_mod.update_camera_base();
63206320
const pos = v1.copy(camera_mod.c_pos);
63216321
const 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
89568956
para.left_leg_length = ((para.pos0['leftUpperLeg'][1] - para.pos0['leftLowerLeg'][1]) + (para.pos0['leftLowerLeg'][1] - para.pos0['leftFoot'][1])) * vrm_scale;
89578957
para.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+
89598963
para.left_heel_height = para.pos0['leftFoot'][1] * vrm_scale;
89608964
para.hip_center = new THREE.Vector3().fromArray(para.pos0['leftUpperLeg']).setX(0).multiplyScalar(vrm_scale);
89618965
para.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

1003010044
var vrm_obj = new VRM_object(para.vrm_index, vrm, { url:url_raw });
@@ -13920,6 +13934,67 @@ obj.traverse(node => {
1392013934
console.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 (/Numpad(\d)/.test(code)) {
13967+
keyCode = 96 + parseInt(RegExp.$1);
13968+
}
13969+
else if (/Arrow(Up|Down|Left|Right)/.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)
1446914544
if (!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 (/Numpad(\d)/.test(code)) {
14499-
keyCode = 96 + parseInt(RegExp.$1);
14500-
}
14501-
else if (/Arrow(Up|Down|Left|Right)/.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

Comments
 (0)