It looks like you're new here. If you want to get involved, click one of these buttons!
I feel good about this month. We've been experimenting with so much cool stuff and I'm quite excited by all the possibilities. So lets jump straight into it!
First off - I've got a confession to make. I didn't work on the character creator the first week of the month. Something I've discovered in my life is that if you feel like doing something, it's usually much better to just go with that feeling than forcing yourself to do "what you're supposed to". In this case, I was supposed to work on the character editor, but I just couldn't get something a fan told us out of my head. The comment I had in mind was this:
I've had ideas for how to implement fat simulation for months, and this comment triggered me to really wanna pursue it, right then and there. So I put my ideas to the test, and started working on a solution.
The idea was to use the same calculations than govern "jiggle bones", but instead of using them on a per bone basis and let the skinning handle the mesh deformation, I wanted to see if I could use them on each individual vertex by using the offset to the closest bone to get the origin of rotation. Because of the amount of vertices in our models, naturally this would have to be accomplished using a computer shader. A body mask could be authored to tell just how much each part would be allowed to wobble.
(A mask representing how rigid the surface is, so in this case black means wobbly and white means firm.)
Here are the results of this experiment (we recommend the video links because of higher framerate):
All this jigglyness is accomplished solely by this tech. There are no jiggle bones or physics running here, other than this custom Wobble component.
The results aren't quite what I was hoping for. Deformation around ass and thighs look OK, but there's some undesirable artifacts in other areas (especially the back). We had to disable wobble on the arms because it looked really bad. Perhaps it could be mitigated by better masking, but unfortunately I think it is for the most part a consequence of the technique used. In areas that have multiple bone influences, it was difficult to come up with a satisfactory method of calculating the bone offsets in such a way that no artifacts would be produced.
Even though we'll probably not end up using this particular tech displayed here, it goes to show you that we are definitely interested in fat simulation and are investigating how such tech could be implemented. This was also a really good exercise for me. I'm starting to feel very confident about working with and writing compute shaders, so I don't think the time we invested into researching this technique was wasted. Hopefully we can work out something better in the future.
Areola & nipple problem backstory
Trying to figure out how areola and nipple customization is supposed to work in YL2 has been a huge headache for us. Enabling you guys to truly express yourselves the way you like is at the heart of our philosophy, and in YL2 we're really trying to take it to the next level. Coming up with a tech that can honor these principles while at the same time being efficient, light-weight and adaptable has been a mind-bending problem for us to solve. Obviously there's a ton of different ways one could go on about tackling this problem, but each time we thought we had a solution, it meant we would either impose some limits on the user or that we would have to do an extreme amount of extra work to cover a satisfactory amount of customization (and in the end it still would be limited).
This problem is made even harder due to the way our character shapes work. For our different body types, we're using a technique called "wrapping". Essentially, when we author a body type, we sculpt a high poly model in Zbrush and then we "wrap" our low-poly mesh around it. Unfortunately, this process can cause some distortion in certain areas - the breasts being one of those more distortion-prone ones. This wouldn't necessarily a problem, if you'd work on areolas and nipples after the wrapping was made. But how could we pre-author different areolas for the breasts, if that content would get distorted on certain body types? Both blend shapes and maps would get distorted if the body shape was changed.
(Example of how a pre-authored texture gets distored if the shape is changed.)
Obviously we could start authoring custom areola content on a per body type basis, but that would just increase the amount of work required each time we introduce a new areola type or body type, as all previous areola content and body types would have to be adapted to this new content. It wouldn't be a viable long term solution, and this time around, we're all about the long term.
To solve this problem, we started thinking in terms of projecting pre-authored maps on to the model. That way, there wouldn't be any distortion, as the projection would adapt to whatever shape the breast currently has.
(Example of projection. The texture remains the same even as the surface changes.)
However, this approach does come with other problems. Even if there isn't any texture distortion, differences in shape between body types means that it would be impossible to pre-bake these maps (height and normal maps), because those maps are baked against a very specific target. So if the shape of the low poly mesh is changed, those maps would no longer look right on that new shape.
We still liked the idea of projection though since it solves the distortion problem, so we decided to continue researching in that direction. But instead now we had a new problem - how can we generate height and normal maps inside the app at runtime that fit the current user authored breast shape?
Curve projection is our attempt to solve the height and normal map generation and projection for areola and nipple customization. It's a custom technique we have researched and developed ourselves.
The idea behind the curve projection technique is simple - we take a user-defined curve and project it onto a surface. Each surface texel then gets its own location on the curve, that we can use to offset it (height map). The area beneath the curve represent the height, the left-most position represents the areola border, and the right most position represents the center of the breast.
Here's a visualization of the idea curve projection idea:
(Note: no mesh is generated, this is just a visualization. Instead, a height map is generated.)
So using a curve, you're able to essentially sculpt your own shape for areola and nipple.
Let's see this tech in action!
(By using a curve, you're able to sculpt areola and nipple the way you want.)
(Further proof that this is an actual projection and not some fakery. NOTE! The projection is stored in a height and normal map, and only needs to project once during character creation process to generate the maps.)
Naturally, you will be able to change smoothness and colors individually for the areola. (A mask map is generated in the projection, allowing us to color the areola separately.)
We intend to make the areola possible to fill in with a gradient, meaning you can blend it in more easily with the base character color, and also create smooth color transitions. This is just a simple color test we did.
You might be wondering what's behind the areola if none is projected? You'd be right if you guessed that it's completely featureless!
(This is what the breasts looks like w/o projection.)
We think this is good because I've seen characters that don't have areola or nipples. So it adds even more versatility to the character creator. (Areola projection will be optional.)
There's a lot more to the development of this tech than we are writing here, but that would be an essay of its own, so we decided to focus on the most important stuff - the results! Just know that this was VERY HARD to figure out and implement, lol.
Things left to be done
Right now, there's no way to fold the nipple in more ways than circularly (using curve sculpting). But we want to support more folds than that. An idea we have is to use yet another projection after the areola & nipple projection, in this case a texture projection, than make the nipple fold in many different ways (essentially a reversed height map). So for each fold, we'd have a pre-authored texture that gets projected into the nipple, and causes the fold. So far this is just an idea however and more research and experimentation is required.
Another idea we have is to use a vector shape in the projection, so you can create more forms than just circular ones, for example a heart shape. This is however just an idea at this stage and I'm not even certain it can be combined with the curve tech or if it needs to be a system of its own. It's definitely worth investigating though.
Naturally, the user needs to have some way to create these curves for the areola projection (curve sculpting) inside the app. So we've begun implementing our own curve editor:
(Double click to add more points.)
(Double click between points to add more between them.)
(Click + drag to box select. Drag multiple points. Points' values are clamped.)
(Right click points to get more options. Set values directly.)
Right now we only support 2 different kinds of splines for the whole curve, but we want to enable each point to have its own interpolation. Essentially we want to try and mimic the behaviour in unity editor, so more work is still required.
This curve editor will be useful for more things than just areola and nipple sculpting. We intend to allow you to use it for fluff shape authoring too, and I'm sure we can think of more uses along the way.
This is more of a side note than anything, but I felt like bringing it up because it does affect our project.
In YL2 we're using plenty of texture projection. Previously, that was accomplished using a 3rd party library. Unfortunately, this library is lacking in many ways, and since the source code is unavailable, there's no way to fix it directly. We had to make so many hacky work-arounds to make it function properly for our project, which is undesirable because that extra code virtually doubles the amount of time it takes to perform a projection. And to add insult to injury, that 3rd party lib is also abandonware.
Texture projection has always seemed like magic to me. I didn't have any idea how it actually worked or how to implement it. Somehow, curve projection was a lot easier for me to grasp, but after having made it I was like - "Hey, wait a minute. Couldn't I just make these and these modifications to the curve projection, and then I'd have texture projection?". And sure enough, after having made those modifications, we had our own texture projection system!
This is great because now we have full understanding of how texture projection works and can alter it exactly the way we like it. No need for hacky work-arounds to get all the features we need, all being carried out super efficiently!
(Demo showing off our custom texture projection system projecting a texture in realtime against a surface. NOTE! Projection is baked into map, and would only have to be done once.)
(The same system, here with an angle falloff, all being carried out in a single shader pass which previously would have required hacking and multiple passes with the 3rd party lib.)
New balls mesh + model changes
While Dogson has been occupied with preparing for a relocation, he's still managed to get some good stuff done this month. After much thought and iteration, we have come to the conclusion that the shaft socket needs to be moved into the same mesh as the balls. The reason for this is that in order to give the balls the right feeling of weight, they need to be able to pull and stretch the mesh farther up. There simply wasn't any good way to make the balls deformation look good if they were completely separated from the rest of the mesh and perineum. So instead now we've chosen to merge the socket and ball meshes into its own mesh.
This means we've also had to remove the socket from the body mesh (the socket used to reside there previously). As you might imagine, this has required some rework.
(The socket and balls have merged into its own mesh.)
With the help of our depth fading tech that we showed off in our previous update, the meshes blend in nicely with eachother and create a seamless transition.
New feet models
All welcome Nomistrav, our newest addition to the team!
Nomistrav is helping us by providing artistic feedback on our work - improving the look of our models. One of the first tasks Nomistrav did was to suggest improvements on Dogson's feet models. Here are some before and after images:
These comparisons aren't 100% fair since claws are missing from the older ones. Still, as you can see the shape is much more well defined and detailed in the later iterations!
What happened to the shape layering system?
You might remember that we talked about a shape layering system months ago that was just around the corner, and then seemingly nothing happened. So what's going on there?
Well, the system is still here and is more or less complete. It's still missing content though. The thing is that the content is something that can only be authored late in the character development process, when the characters and body parts have been finalized. Right now we're still in a process where we iterate on the content, and come up with new and better methods of implementing them. For example, the areola projection tech was something we had no idea how it would work prior to researching and implementing it, and so we couldn't possibly have adapted our characters to work with it. Now that we have it, we're adapting our models to fit it. Same goes for the shaft socket, which is being moved from the body mesh into its own ball + socket mesh. Each time we make changes like these, it affects any shape we author on the model, which is why we wanna finalize this stuff first before we start going all out on creating content for the shape layering system.
Update on current schedule
So, there's no easy way to say this, but... as it looks right now, a release of the character creator during the summer seems highly unlikely. This isn't the first time I've been far too optimistic about release dates, and at this point I'm starting to feel very reluctant about giving any more estimates that we'll probably just end up going past anyway. It certainly doesn't feel good giving you guys the hope of a release date that we then fail to meet, and it certainly isn't having a good impact on our morale either. It feels dishonest, which is very tough for us because that is absolutely not our intent.
I think the reason why it's so hard to give a good estimate comes down to mainly two things for us. Firstly, we don't know exactly how long or how complicated a task will be to implement until we start really diving into it. Take this areola projection tech for example. We had no idea this would be the solution to the areola problem and that it would require so much time and research to develop. In the end, I'm super happy about this tech and think it will be a huge positive addition to the character editor, so I definitely consider that time to have been well invested. But it did take time to research, and it isn't even finished yet! More things will still need to be added, and the curve editor (which is a small project of its own) is gonna take time to implement fully too.
Secondly (and I suppose this connects to the first point) - in YL2 we're really reluctant to take shortcuts. We want to create something that is truly unique and that will last for a long time. There have been so many times where we could have cut corners and just used some existing half-assed solution to get something out quicker, but that undoubtedly would have left you guys with fewer options in the end. We don't wanna develop ourselves into a corner. If we think that going down an uncharted path can potentially offer a better solution, we're very keen to explore it! Even it it means it'll cost time. It will pay off in the long term. With YL2, we're on a personal mission to change the furry community, and we take this mission very seriously!
The best date I can give right now is "2018", and given our recent estimation track record, even that date is making me anxious. I'm really starting to understand why game developers are so reluctant to share dates and why "when it's done" is such a thing. All I can say is that we're working hard and making great progress, as you can see from our updates. At this point YL2 is a personal quest for us that we will finish no matter what.
This month we've been experimenting different techs. The areola projection tech (curve sculpting) seems very promising, and we think it will be a huge positive addition to the character creator in YL2. Using this tech, you'll be able to sculpt circular areolas and nipples exactly the way you like, directly inside the editor!
We've also been experimenting with a "wobble" tech (fat simulation), but so far the results haven't quite been what we were looking for. It looks good in some areas, but not in others. It's definitely something we want to continue researching though when we have more time for it.
Dogson has been occupied with a relocation, but has still managed to get some great work done. He's been working on updated feet models, and also a new ball + socket mesh that we decided is a better way to go than having the socket forcibly included in the main body mesh.
As it looks right now, unfortunately it seems unlikely that there will be a release during the summer. When there are so many unknowns in a project such as this, it's very hard to give a good estimate. We feel bad about giving dates only to let you guys down. It definitely isn't our intent. Making a tool like YL2 is a very difficult process, but we're making great progress all the time as you can see from our updates and we're determined to finish it no matter what!