Jump to content

Cheat Engine Pose Editor


Recommended Posts

I just saw your work progress about animations Dogcookie and it's great to see what you've done so far, congratz.

Last week I investigate a bit into MMD animation to DOA5LR via Blender, I partially succeed to convert vmd file into cvs but I encountered some problems.

 

First, DOA5LR models have Hips bone as Root, that is making a big conflict to convert MMD animation, since MMD models are using Root and Hips bones as separated bones.

To make it more clear, DOA models have Hips bone as root meaning it move the entire body and not just the hips.

I may missed something important here but so far I didn't saw a separated root bone for DOA models that make me stuck to convert a complete motion correctly resulting to partial conversion (only upper part moving correctly -From waist to head including arms and fingers).

 

Also the legs, MMD model have IK support, not DOA models unless I missed this info too.

 

Another annoying problem for me (dunno if others who worked with .cvs encountered this problem too), if I want to export a long animation it will take me age with Blender.

Under 1 minute is doable even if it can take a hour depending of the motion but over 1 minute... Blender freeze and I can't even say how much time it take to export since I'm also abandonning the export process before as it's too long.

Specially that the motion need to be separated into body, left & right hands cvs.

 

So in short, if I have some infos about hips / root bones for doa model and IK legs I could make more progress about converting MMD motions to DOA, doing it via Blender to convert them as .cvs after and include it in a .MPM, making a motion permanent and not via CheatEngine.

 

Oh and the axis rotation is different from MMD to DOA, I confirm it from my tests, as long as we don't have a functionnable script to make conversion easier it will require a manual edit on the motion to fit the model better.

I just need to confirm what axis is reversed (it look like it's the Z axis but I need to confirm it I didn't get too much attention).

Link to comment

I am glad you as an expert have joined this effort.  I am not quite familiar with MMD and Blender animation. I just try to create a simple tool to convert the VMD into the CSV file format.

There are couple of issues with this approach.  

 

1. Translation and match bone names from Japanese from English

 

2. Figure out missing frame number and group them together to the DOA5 template

 

3. Hip bone and RotW as you mentioned

 

I don't know you can export to CSV with Blender. Do you need plugin to do that after importing the VMD file into Blender? Can I take a look of your converted csv file?  I really want to give it a try in your approach.

 

Here is sample data I converted from VMD before translation and formatting:

 

上半身2,FrameNo:14,0,0,0,-0.3559232,-0.1245431,-0.03105874,0.9256572,
左腕,FrameNo:14,0,0,0,0.3004318,-0.6974252,-0.08931942,0.6444832,
右腕,FrameNo:14,0,0,0,0.6150151,-0.5226975,-0.1356914,0.5745684,
右ひじ,FrameNo:14,0,0,0,0.1776803,-0.37753,-0.00171247,0.9087882,
下半身,FrameNo:14,0,0,0,0.1774006,0.1324158,0.02409562,0.9748915,
センター,FrameNo:29,0,-2.304206,-3.166193,-0.03890336,0.01586289,-0.02987705,0.9986696,
下半身,FrameNo:29,0,0,0,0.1720572,-0.2718907,-0.0494757,0.9455279,
センター,FrameNo:44,-0.07864418,-3.488051,-7.072728,0.1852874,0.005488785,0.01721928,0.9825162,
左足IK,FrameNo:3,-1.800001,1.8,-0.8,0,0,0,1,
左つま先IK,FrameNo:3,0,-1.4,2.2,0,0,0,1,
左足IK,FrameNo:7,-0.8500008,0,-0.5000001,0,0,0,1,
左つま先IK,FrameNo:7,0,0,0,0,0,0,1,
下半身,FrameNo:44,0,0,0,-0.03575728,-0.03382909,0.02921308,0.9983587,
左足IK,FrameNo:10,-0.8500008,2.049999,-5.050003,0,0,0,1,
右足IK,FrameNo:10,0.25,0,-4.350001,0,0,0,1,
センター,FrameNo:39,-0.05340697,-2.118113,-5.549775,0.1110648,0.009006729,0.001498422,0.9937702,
左肩P,FrameNo:14,0,0,0,0.06120869,-0.009688966,0.2397127,0.9688638,
センター,FrameNo:35,-0.05603957,-2.63343,-5.194296,0.05119412,0.01178384,-0.01108908,0.9985572,
右肩P,FrameNo:14,0,0,0,-5.357878E-08,-0.2279775,3.040558E-09,0.9736664,
センター,FrameNo:48,-0.07107324,-3.751176,-7.497824,0.2000037,0.005746445,0.01713501,0.9796264,
下半身,FrameNo:51,0,0,0,0.2415375,-0.0244385,0.03742424,0.9693602,
下半身,FrameNo:47,0,0,0,-0.02363193,-0.0334719,0.02962169,0.9987195,
左足IK,FrameNo:14,-1.950001,0,-7.800002,0,0,0,1,
右足IK,FrameNo:14,2.049999,1.45,-4.350001,0,0,0,1,
右つま先IK,FrameNo:14,0.9000001,-1.3,2.549999,0,0,0,1,
左足IK,FrameNo:18,0.09999856,-0.1000012,-7.550004,0,0,0,1,
右足IK,FrameNo:18,0.0999995,0,-5.800004,0,0,0,1,
右つま先IK,FrameNo:18,0,0,0,0,0,0,1,
左足IK,FrameNo:20,0.04999856,0.899999,-5.550002,0,0,0,1,
左足IK,FrameNo:24,-0.7500016,0,-2.250002,0,0,0,1,

 

Here is my translation for Body only:

 

private string GetEnglishBoneName(string JapaneseBoneName, bool isDOA)
        {
            var EnglishBoneName = string.Empty;
 
            switch (JapaneseBoneName)
            {
 
                case "":
                    EnglishBoneName = "MOT00_Hips";
                    break;
                case "頭":
                    EnglishBoneName = "MOT01_Head";
                    break;
                case "上半身":
                    EnglishBoneName = "MOT02_Chest";
                    break;
                case "左足首":
                    EnglishBoneName = "MOT03_LeftFoot";
                    break;
                case "左ひじ":
                    EnglishBoneName = "MOT04_LeftForeArm";
                    break;
                case "左手首":
                    EnglishBoneName = "MOT05_LeftHand";
                    break;
                case "左足":
                    EnglishBoneName = "MOT06_LeftUpLeg";
                    break;
                case "左ひざ":
                    EnglishBoneName = "MOT07_LeftLeg";
                    break;
                case "左腕":
                    EnglishBoneName = "MOT08_LeftArm";
                    break;
                case "右足首":
                    EnglishBoneName = "MOT09_RightFoot";
                    break;
                case "右ひじ":
                    EnglishBoneName = "MOT10_RightForeArm";
                    break;
                case "右手首":
                    EnglishBoneName = "MOT11_RightHand";
                    break;
                case "右足":
                    EnglishBoneName = "MOT12_RightUpLeg";
                    break;
                case "右ひざ":
                    EnglishBoneName = "MOT13_RightLeg";
                    break;
                case "右腕":
                    EnglishBoneName = "MOT14_RightArm";
                    break;
                case "首":
                    EnglishBoneName = "MOT15_Neck";
                    break;
                case "腰":
                    EnglishBoneName = "MOT16_Waist";
                    break;
                case "左肩": 
                    EnglishBoneName = "MOT17_LeftShoulder";
                    break;
                case "左つま先IK":
                    EnglishBoneName = "MOT18_LeftToe";
                    break;
                case "右肩":
                    EnglishBoneName = "MOT19_RightShoulder";
                    break;
                case "右つま先IK":
                    EnglishBoneName = "MOT20_RightToe";
                    break; 
                default:
                    if(isDOA)
                        EnglishBoneName = string.Empty;
                    else
                        EnglishBoneName = JapaneseBoneName; 
                    break;
            }
 
            return EnglishBoneName;
 
        }
Link to comment

It 's difficult to use. You should learn the method from you if possible video

 

Nothing difficult in this, just go to the main page of this forum and click the button "Start new topic"  And as for the creation of the video, ask Dogcookie, he is an expert in this matter

 

Link to comment

 

There are couple of issues with this approach.  

 

1. Translation and match bone names from Japanese from English

 

2. Figure out missing frame number and group them together to the DOA5 template

 

3. Hip bone and RotW as you mentioned

1

When I decided to dig into the structure of the VMD file, I met a lot of names that are quite difficult to match with the names of bones in DOA5. And such names are not unique, but dozens. I think it would be more appropriate to take a specific MMD model for which the given VMD (ie PMD file) was created and see where this particular bone is located.

I will quote a small quotation from the description of the VMD format:

 

Note that the position coordinates are relative to the "bind pose", or the model's default pose. The position data of the bones in the PMD model are relative to the world's origin, and the position data here is relative to that. So, for example, the bind pose of a bone is (1, 2, 3) and the VMD gives (10, 25, 30). The final world position would be (11, 27, 33).

 

2

Yes, there are a lot of frames missing. And those that are, are given in some kind of chaotic order.

Apparently, the values of the coordinates and rotations in the missing frames can be found only by the method of interpolation

 

3

Rotation in MMD is given by four numbers (quaternion), whereas in DOA rotation is described by Euler angles. If you want, I can give you an algorithm for translating from one system to another or look at wiki, there it should be.

 

But for me it remains a secret to assign the last 64 bytes in each frame. In the description of the VMD format, which I saw, almost nothing is said about them.

 

Link to comment

Jin, after today I hardly remember my nick.)))

B+[something]

You look at the site nakayoc, there is a full list of hot keys

And in this topic somewhere there is too.

Or press one finger on  B, and another click on everything you see near  L. You will definitely switch

 

The author strangely chose keyboard shortcuts. If I wrote this script I made it all much easier

  P+1 - player 1, P+2 - player 2. S+T - Stop, G+O - Go. etc.

And there was no need to train the memory

 

Link to comment

How to move from left to right

 

This already depends on the position of the camera at this moment in the coordinate system and here different variants are possible. To navigate in the horizontal plane, you can use keyboard shortcuts N+O N+U N+L N+J

Or in that script which I modified    X+I X+D Y+I Y+D

Try all these options and see what works best for the movement you need

As for your previous question, for return to player 1, use B+J

 

Link to comment

 

 

There are couple of issues with this approach.  

 

1. Translation and match bone names from Japanese from English

 

2. Figure out missing frame number and group them together to the DOA5 template

 

3. Hip bone and RotW as you mentioned

1

When I decided to dig into the structure of the VMD file, I met a lot of names that are quite difficult to match with the names of bones in DOA5. And such names are not unique, but dozens. I think it would be more appropriate to take a specific MMD model for which the given VMD (ie PMD file) was created and see where this particular bone is located.

I will quote a small quotation from the description of the VMD format:

 

Note that the position coordinates are relative to the "bind pose", or the model's default pose. The position data of the bones in the PMD model are relative to the world's origin, and the position data here is relative to that. So, for example, the bind pose of a bone is (1, 2, 3) and the VMD gives (10, 25, 30). The final world position would be (11, 27, 33).

 

2

Yes, there are a lot of frames missing. And those that are, are given in some kind of chaotic order.

Apparently, the values of the coordinates and rotations in the missing frames can be found only by the method of interpolation

 

3

Rotation in MMD is given by four numbers (quaternion), whereas in DOA rotation is described by Euler angles. If you want, I can give you an algorithm for translating from one system to another or look at wiki, there it should be.

 

But for me it remains a secret to assign the last 64 bytes in each frame. In the description of the VMD format, which I saw, almost nothing is said about them.

 

 

 

Wow, that is very helpful information. You are really an expert on this, thanks.  This project is much difficult than my original thought and I think interpolation logic is the key for this conversion and I can take a look of Python code to see how VMD is imported into the Blender. 

Link to comment

 

Wow, that is very helpful information. You are really an expert on this, thanks.  This project is much difficult than my original thought and I think interpolation logic is the key for this conversion and I can take a look of Python code to see how VMD is imported into the Blender. 

 

 

Expert? lolllll

The only thing I can say about this is that here we can not do without serious mathematical transformations. Or solve this problem in a completely different way.

 

Link to comment

 

 

Wow, that is very helpful information. You are really an expert on this, thanks.  This project is much difficult than my original thought and I think interpolation logic is the key for this conversion and I can take a look of Python code to see how VMD is imported into the Blender. 

 

 

Expert? lolllll

The only thing I can say about this is that here we can not do without serious mathematical transformations. Or solve this problem in a completely different way.

 

 

 

You are right, the VMD file use KeyFrames to link all the poses together and filling the missing frames between keyframes with interpolation algorithm. We need to find out that magic algorithm to make it work.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use