OpenMLTD / MLTDTools

Tools for THE iDOLM@STER Million Live! Theater Days (MLTD/MiriShita/ミリシタ) / 偶像大师百万演唱会剧场时光工具箱
BSD 3-Clause Clear License
139 stars 17 forks source link

About issues on recent files #15

Closed 11-59pm closed 4 years ago

11-59pm commented 4 years ago

It seems that the file structure on scrobj file has changed once - though the exact time is unsure. For some songs MillionDance is able to translate the facial motions like blinking or winking to MMD near perfectly - especially for older songs (e.g. Jireru heart ni hi wo tukete) However for more recent songs (like Mirai Hikou, Kururiuta) the program only translates the lipsync. Would you look over the structure of "scrobj" file so that the program can translate the file? Thanks in advance.

hozuki commented 4 years ago

About facial expressions... MLTD uses an internal "morph table" to indicate facial expressions. In the scrobj files, they put a "morph index" instead of storing the full morph animation (like in VMD). Unfortunately, MillionDance does not know about unseen facial expressions. For example, if morph 100 represents a laughter, but it is not seen before (suppose we only know about 1 to 99), MillionDance just outputs the default facial expression. So my guess is that they just used new facial expressions. I need to check the file to confirm it.

If that is the reason, how to fix the problem? Hmm, it is complicated.

  1. Find the moments when the model should show an expression but doesn't
  2. Read the scrobj and find its morph index.
  3. Reproduce the facial expression in other software, say, PmxEditor.
  4. Enter the values in TDFacial and save the JSON file (facial_expr.json).
  5. Now MillionDance can understand the facial expression.

Step 2 is the most complicated one, esp. for common users. I did this by hand and it is like a torture, because scrobj is a huge mess of many different kinds of data. I'll think a way to make the whole thing easier... :(

hozuki commented 4 years ago

It turns out that some scrobjs split their facial expressions: one set in the landscape view, the other in the portrait view. In previous files, there is only one set of facial expressions, located in the base scrobj.

So an option was added in MillionDance:

image

Also a utility was added in TDFacial:

image

Hope it helps to ease the pain.

But beware! It seems more facial expressions are added. This is the current state of default mapping file:

image

I can't trace all of it so the user himself have to find out the specific morph values.

hozuki commented 4 years ago

Can you confirm that this problem is solved?

11-59pm commented 4 years ago

Sorry for late reply. This has been resolved and I forgot to comment. I closed the issue.