Saturday, November 3, 2018

Animation Processing

Hi guy,
I thought you'll might be want to know a bit about how I make animations(and animation experiments).
The following is a bit technical, but hopefully it won't be too confusing.


For Conception Maiden, the characters are created, customized and posed mainly with 3DCG.  After posing the character, screenshots can be taken.  For example, this is a new screenshot(render) of lorelei:

Lorelei

Currently, there are two different way I can animate Lorelei, the first way is something I call the "figure" animation system. For this, I would take an image like this and cut the body into parts using photoshop or another image editor(I could also enhance the image a little while doing it).  Parts could be things like arms, legs, head, eyes, etc.  Then I export all these into a folder and I will have a folder fill of body part images.  The folder would look something like this:


For game development I use GM studio.  Ideally I would add these images into my game project and animate each body part.  However there isn't really much options for doing this in GM studio, so I wrote the "figure" animation system.  This system can load/unload the large parts(the images) into the game, and can then animate them using advanced deformations and easing effects.  It can also create an set of actions for each part to perform in order(like a timeline).  If you've used adobe flash before, it is kind of like tweening.  This is the most complex set of scripts I've ever written but is very powerful.  This is an example of the end result(with a cross-breed image):


Easing is a special way for animations to move from one point to another(or rather, setting how one number changes to another over time).  Using this, it's possible to create animations that are very fluent like the one above.  All commands on how each body part should move is given through  strings of text commands.  This is the first way I can animate(This is also how the erotic scene is animated in the last demo).

------------------------------------


 The second way I can animate lorelei is by using MikuMikuDance(MMD).  Instead of using an 3DCG screenshot, I convert the model itself into a MMD file and open it in MMD.  The model can then be posed and animated.  Afterward, I save the animation as a video and convert the video to images(frames) with photoshop.  The reason the video must be converted to images is because GM Studio doesn't have video playback.

Up until recently I would only use MMD to create low res animations(like the characters walking in-game).  This is due to the high memory usage of large images, but recently very I've found a way that I can get around this.  Here is an example of a 720p image in-game animated with MMD(note that the gif below is greatly scaled down):



So here's a comparison of the two animation methods(figure and mmd):

Figure method (transforming images(body parts) with easing)
- Uses body part images that originally came from a single screenshot.
- much lower memory usage
- Very flexible
- Higher fps won't really use more system resources
- Each part of the Figure can be given animation commands to create all kinds of animations


MMD method (playing a set of large images one after the other)
- Uses image frames that were created using MMD
- very high memory usage(*currently uses far less)
- Great with physics
- Can rotate models when animating with MMD(but can't be rotated once in-game)
- Animation is static, only speed can be adjusted


If you're wondering why I didn't use MMD to create all the animations, part of the reason why is because I wanted to have high-resolution animations, which would mean alot of large images would need to be saved to the computer's memory.  In fact the memory usage could be so high that it maybe impossible to have more than 1-2 animations on screen(depending on RAM).  Also, another thing was the filesize of a single animation(a set of images) would be very large(like 25MB added to the game's filesize, for the Victoria animation above, which is about 2 seconds of animation). 

That's not the only reason I made the figure animation system though, It was also a bit of an experiment which I wanted to try to create a different way to animate that would give a lot of control over animations and have a high fps.

Very recently though, I found a way I can add large animations created in MMD.  By optimizing things(code/images) more, using 1/2 the frame rate, using jpg files(this doesn't make the images smaller in memory though as far as I can tell), and using transparency mask for the jpgs.  Doing this, an animation went from using about 1.3GB of memory, down to about 210MB of memory, a very big difference.  Initially I didn't consider jpgs(which compresses better but lower quailty) partly because they don't have transparency(as for as I know), but by using tiny images that act as transparency mask I can completely get around problems related to transparency.

Now that I got this working too(MMD method), I will likely use this also to help animate the game's future erotic events(note though, that both methods involve many steps).

In summary, "MMD method" swaps image frames to create what looks like animation(frames were created from MMD), while "Figure method" transforms smaller images to create animation(smaller images were created with a single 3DCG screenshot).

 ------------------------------------

Hopefully what I said isn't too confusing, but here's one more comparison:

                                                MMD method                 Figure method




There's a bit more involved with this but that's the basic idea.  Right now I'm making the game's next h-event and once it's complete, I'm planning to release a mini-demo of it on my patreon.

That's all for now,
see you later.

No comments:

Post a Comment