It looks like you're new here. If you want to get involved, click one of these buttons!
We hope you're all still alive after this incredibly hot July!
I don't think this has escaped anyone by now, but in case you've been living in a cave or something... The world is burning up right now. Like literally. Temperatures are far above average and is causing all kinds of havoc. Sweden, of course, has not been an exception to this (dogson and I live in Sweden). This has been the hottest summer in Sweden since they began taking measurements back in 1756.
The reason I'm brining this up is because these temperatures have affected our ability to work this month. The apartment I'm living in is at the top of the building, with a southern position, and without any air conditioning. I'm not joking when I say it feels like a sauna in here! Working and sleeping has been very, very difficult. And it's been like this for weeks! Needless to say, we're both quite exhausted and fed up with this, and can't wait for the fall to finally arrive. (Which btw happens to be my favorite time of the year, regardless.)
Despite the agonizing temperatures, we've still managed to make some progress though. While we certainly would have made more progress if it wasn't for the weather, I'm still satisfied with our effort and development this month, as we have managed to do what we planned for.
So without further ado, let's get into it!
Before diving into the nitty gritty of this month's developments, I think I should mention this...
Some months ago, we hired a new member to the team who would be responsible for the server implementation of YL2. The idea behind this hire was simply to try and distribute work among more people - easing the load and getting something out quicker. Unfortunately, this cooperation has not worked out the way we were hoping, and we have agreed to part ways.
In hindsight, I don't think we were hiring for the right reason. I was mostly concerned about not letting the cloud implementation cut into the development of YL2. But the thing is - that whole premise is completely wrong. The cloud service cannot really be seen as a separate part of YL2 development - rather it is YL2 just as much as the app. Our vision cannot exist without the cloud's complete integration into the app, so trying to split it up would just make everything worse - not only for you as users but also for us as developers. Coordinating such highly interconnected services is not easy, and would end up taking longer than simply doing it ourselves. Not to mention that there are so many extremely valuable realizations and decisions that come from having a complete insight into both of these services, that we would sacrifice quality by trying to split it up.
Over the last couple of days, we've started over from scratch with our own implementation of the cloud service, and it's feeling great. We've already made far more progress in these few days than we were able to in two months when trying to collaborate. So while it's sad the collaboration didn't work out, there's no doubt in my mind that it is for the better.
Last month we showed off a prototype system for allowing you to dynamically sculpt your own custom areols on characters by using curves. This month, we have been developing a new technique to be used in conjunction with the areola projection for even for more breast customization - fold projection! That is, customization of how nipples are folded.
Our technique works by projecting baked textures into the breast, causing it to fold in different ways. The benefits of projection are many, which you can read about in our previous post. This step is done in the same shader pass as the areola sculpt projection, making it very, very fast.
Before diving more into this tech, let's see some examples!
(Inverted nipple attempt.)
As you can see from these images, our tech offers great detail and customization!
The fold projection tech is divided into two distinct parts - baking and projection. In order for the nipple to fold and be renderer properly, we need two pieces of information - in what direction the surface should bounce off lighting (normal map) and how the surface should be displaced (height map). Coming up with a way how to bake these maps was actually a bit tricker than one might think!
Initially we tried to create these maps externally (in 3rd party software) by baking a high poly model onto a plain. However, no matter how we tried, we couldn't get something that made sense once imported into Unity. The height map was especially tricky to get into a perfect high precision linear format that could be read by Unity shaders. Eventually, we just said "Screw it! It would be easier to make our own texture baker inside Unity!". So that's what we did. The benefits of this are many. First and foremost, it means we don't need external applications to bake the maps, making the process not only much faster, but also much easier since the resulting textures will already have been perfectly adapted to work inside Unity (no need for conversions and tedious troubleshooting). Also, since models are actually far lighter in terms of size than textures, we can bake these textures in real time inside the shipped app, meaning we don't need to include the heavy textures, just the models, saving lots of space.
Since a tangent space normal map is dependent on the UVs and surface that it's attached to, we're actually not baking regular normal maps. Instead, we bake the normals in world space, which are then converted into "projector space", which means if we move or rotate the projector around, the normals will still display perfectly regardless of what surface and UVs it is projected on. During the projection phase, the projection space normals are converted into tangent space again (for the object receiving the projection), and combined with the curve normal map, merging into a single texture.
This texture baking system has also proven to be very useful in other areas. Much of the texture building system for character coloration has been refactored to use the texture baker, greatly simplifying the process.
Curve editor cont.
The curve editor is another thing we've spent more time on this month. Now we have implemented the different interpolations and behaviours that we intended, allowing you to express the kinds of curves you want with ease. If you have used curve editors in other software, you should feel right at home.
Right click nodes to change their interpolations:
This can of course be set on a per node basis:
Drag the slope anchors to change the tilt of the curve:
Press and hold control while dragging a slope anchor to affect the other side in the same fashion:
When dragging a node, a window now appears to the right showing its exact coordinates:
Press and hold control while dragging a node to snap it to the grid.
The only thing that remains for the curve editor now is an YL2 editor property type to store its data and enable undo/redo.
Dogson has also been quite taken out by the hot weather, but has still managed to get some stuff done. In addition to sculpting the different high poly nipple models (used in the fold projection when baking maps), he has also been working on more parts for the character creator, namely scalie feet!
Here they are:
I think August may be a month of lower activity as far as my own work is concerned. July has been a very rough month for me, leaving me exhausted (due to poor sleep because of the weather), so I think I will take it easy. I was thinking of working on the cloud a bit more, since that work doesn't require as much focus compared to working on the app. (During these days when it has been impossible to work on the app (due to poor sleep or too high temperatures), I've just been working the cloud service instead, and I think that will continue in August.)
Also, I'll be going away on vacation for 1 week in the middle of August. I'm really excited about this trip, since I haven't really gone anywhere or even left my computer for more than a day for maybe the last 10 years. So I really need this trip to get my mind off things and just feel the earth beneath my feet for a while.
Dogson seems really excited about August. The collaboration with Nomistrav been a tremendous success. With the help of his feedback, Dogson has been able to work much more efficiently and produce higher quality models. Now when we have a better understanding of what content needs to be made for the character creator, and now when Dogson and Nomistrav have gotten the hang of working together, Dogson has expressed a will to try and cram out as much content as possible for the character creator in August.
July has been a painfully hot month for us, making work difficult due to the high temperatures and poor sleep. We've still managed to get some stuff done though, namely a new tech for nipple customization (fold projection), further implementation of the curve editor, and more parts for the character creator.
Next month, I'm going away for 1 week on vacation, so I don't know how many big new features I'll be able to implement. Dogson and Nomistrov are gonna work together though and try to create as much new content for the character creator as possible.