I've been hard at work figuring out the full pipeline to go from 3D renders -> Live2D -> Ren'py, and have another short demo to highlight some of the progress that has been made. Check it out for yourself !
PC
Mac
Android (If you're on Android please let me know what the experience is like, I haven't been able to find much information about Ren'pys Live2D support for Android)
If you haven't read it already, I've written a post detailing what advantages I'm looking to gain by moving to a Live2D based system for displaying characters. The first demo was a quick proof of concept, checking that all of the really basic functionality (drawing characters, recolouring textures, displaying multiple characters at once) were possible. That test was a success, so I moved onto creating the workflow I would need to create an entire games worth of art assets.
This second demo exists to test that workflow and identify any issues that might pop up as I expand this into a full display system. A lot of the work the work that has gone into it is behind the scenes stuff, which I'll briefly lay out here:
- Rendering Automation - Fully automated rendering in the Live2D system won't be as critical as it was in the old image based one, but it is still important to save me a lot of time and ensure all of the clothing assets work properly together. The biggest change is that character poses are chopped up into regions that are rendered separately. This allows for poses where one part of the body would be obscured - an arm held in front of a girls face, for example - to still have all of the important information captured. This is critically important for animation stuff later, and for allowing for good looking perspective warps (where that hidden information is needed in some angles).
- Live2D Experimentation - A lot of my time went into experimenting with Live2D and figuring out how best to structure the models so they would work well when I moved them over to Ren'py. Some of that has been directly useful in this demo, like shared "part" opacity for clothing items and using "glue" in Live2D to connect bits of a model to warp together. It has shown me potential problems that otherwise might not have been noticed until much later in development, like the need for higher res character images if I intend to warp them significantly.
- Ren'py Code - This new system is only really possible because Ren'py (relatively) recently added Live2D support. Unfortunately the way the Live2D displayables are implemented isn't ideal for Lab Rats 2, so I will need to make a number of changes to it. Animations are one particular aspect that I realised are a problem while making this demo. Ren'py plays each animation in the order they are received, which wouldn't allow me to have two different animations playing at once. Ren'py does give me direct control over parameters (the value used to control a Live2D model), so I should be able to solve this by just implementing my own animation reading code. This demo revealed tons of small problems like this, and designing a solution is much easier now than it is when I have half a display system already written.
The demo goes through all of the display based stuff (including a mock up of the outfit system), so if you want to know more about that go try it out! That leaves the question of what's left to do, and what will the release of v0.52 look like. Well, there's a fair bit left on my TODO list.
- Face Options - I experimented with using Live2D morphs on a single base face and the results fell very deep into the uncanny valley. To avoid that each face type will be get it's own render that is used as-is. I have the rendering code ready for this, but I do need to add some support in my Live2D model structure for it,
- Skin Tone Options - I'm planning to use a single body image and recolour it in the same way that I do with clothing, but there are a few minor issues I need to take care of. The most obvious are eyes - right now eyes would inherit that skin colour and look very obviously wrong. I'll need to add a mask to avoid colouring in the eye scalea (and ideally provide a way to change iris colour while I'm at it). I'm not sure if this will be solved in rendering or in Ren'py, but it needs to be solved somewhere.
- Better Pattern Support - Because textures are repackaged by Live2D there's no trivial (as in fully automated) way to take a pattern rendered from Daz and stick it onto a model. Right now each pattern would require me to manually match the pattern to it's corresponding location on the base texture. I don't have a good plan for improving this, but it's also pretty low-cost if it can't be fixed - adding patterns will take a few minutes of work per pose, that's all.
- Create Live2D Models for Basic Poses - I need to set up all of the clothing items currently being used in LR2 and have them rendered out for the new system. The rendering won't take long, but setting up a working Live2D model takes a fair amount of manual work to avoid clipping. There's no real problem here, it's just going to take time. My goal is to support two or three basic poses (standing, standing turned away, and maybe a kneeling/blowjob pose?) and use those to develop the actual display code in LR2.
- Write the LR2 Display Code - All of this demo work has given me a clear path forward for replacing the old LR2 display code, but I still need to sit down and do it. This will involve some fairly large code rewrites, and those always have unintended consequences. Again, no real problem here other than the time it will take.
All of this points towards the fact that there won't be a full Live2D system ready for the end of the month. I do plan to have a basic version integrated with LR2 ready by that time. That version will likely contain a couple of basic poses, most clothing items (maybe even all of them, depending on how fast I am able to add them), no clothing patterns, and will make limited use of the new body shape mechanics. I'll use the feedback on that version to make improvements, with the goal of having an 100% finished display system (including improved animation support, and maybe including physics support) done for next month.
I hope this short demo tides you over until I have something more substantial to show off. Let me know what you think, if you run into any issues, or if you have any questions!