@@ -25,6 +25,24 @@ Description: MMD mesh root object
2525#include " module/tools/material/mmd_material.h"
2626#include " utils/string_util.hpp"
2727
28+ namespace
29+ {
30+ // / Pose morph slider used by MorphUIData comes from tag GetMorphID; CAMorph::SetStrength alone may not
31+ // / persist that parameter, so SyncMorphSlidersFromTags still read the default 1.0.
32+ static void ZeroPoseMorphSlider (CAPoseMorphTag* morph_tag, CAMorph* morph)
33+ {
34+ if (!morph_tag || !morph)
35+ return ;
36+ morph->SetStrength (0 .);
37+ const Int32 morph_idx = morph_tag->GetMorphIndex (morph);
38+ if (morph_idx >= 0 )
39+ {
40+ const DescID slider_id = morph_tag->GetMorphID (morph_idx);
41+ morph_tag->SetParameter (slider_id, GeData (0.0 ), DESCFLAGS_SET::NONE);
42+ }
43+ }
44+ }
45+
2846namespace cinema
2947{
3048 class CAWeightTag ;
@@ -784,7 +802,7 @@ Bool MMDMeshManagerObject::LoadPMX(
784802 morph->SetMode (setting.doc , morph_tag, CAMORPH_MODE_FLAGS::ALL | CAMORPH_MODE_FLAGS::COLLAPSE, CAMORPH_MODE::AUTO);
785803 morph_tag->UpdateMorphs ();
786804 morph_tag->Message (MSG_UPDATE);
787- morph-> SetStrength ( 0 );
805+ ZeroPoseMorphSlider (morph_tag, morph );
788806 break ;
789807 }
790808 case libmmd::PMXMorphType::UV: [[fallthrough]];
@@ -868,7 +886,7 @@ Bool MMDMeshManagerObject::LoadPMX(
868886 morph->SetMode (setting.doc , morph_tag, CAMORPH_MODE_FLAGS::ALL | CAMORPH_MODE_FLAGS::COLLAPSE, CAMORPH_MODE::AUTO);
869887 morph_tag->UpdateMorphs ();
870888 morph_tag->Message (MSG_UPDATE);
871- morph-> SetStrength ( 0 );
889+ ZeroPoseMorphSlider (morph_tag, morph );
872890 break ;
873891 }
874892 case libmmd::PMXMorphType::Flip:
@@ -1446,6 +1464,11 @@ Bool MMDMeshManagerObject::LoadPMX(
14461464 morph->SetMode (setting.doc , morph_tag, CAMORPH_MODE_FLAGS::ALL | CAMORPH_MODE_FLAGS::COLLAPSE, CAMORPH_MODE::AUTO);
14471465 }
14481466 morph_tag->UpdateMorphs ();
1467+ for (Int32 morph_index = 1 ; morph_index < morph_tag_count; ++morph_index)
1468+ {
1469+ if (CAMorph* morph = morph_tag->GetMorph (morph_index))
1470+ ZeroPoseMorphSlider (morph_tag, morph);
1471+ }
14491472 morph_tag->SetParameter (ConstDescID (DescLevel (ID_CA_POSE_MODE)), ID_CA_POSE_MODE_ANIMATE, DESCFLAGS_SET::NONE);
14501473 }
14511474 }
0 commit comments