So, turns out it’s difficult to do artwork for a tool without being familiar with the tool. We’re gradually improving the normal maps at our end and sending them through to Nate but there are still some issues - for instance, we didn’t realise that the ‘eyes open’ and ‘eyes closed’ frames needed to be done separately, so in the runnable JAR that’s up there now, the area around Spineboy’s eyes are weird and flat.
matheus23: Since you asked what it would look like with a less rough normal map, I’ve taken the liberty of assembling the normal/diffuse maps we do have into a neutral pose and exporting a lighting preview via Sprite Lamp. This includes a few fancy shader effects, but nothing that would make it incompatible with Spine animation. Unfortunately, right at the moment I don’t have the time to fully implement these effects with Spine’s runtimes, but I’m starting to think it would make a cool stretch goal for my kickstarter.
davedes: Sprite Lamp is definitely more like the first thing you mentioned - the whole reason for its existence is to make dynamic lighting possible while preserving styles unique to 2D art, such as visible brushstrokes or pixel art. In other words, it’s a way of creating normal maps in specific styles that are hard to do with 3D modelling. Of course, a rendering implementation involving normal maps doesn’t care about such things - it doesn’t matter whether the normal maps come from Sprite Lamp, a depth map, a mesh, or anything else you can think of. One of the key design decisions with Sprite Lamp was that it was for processing images, and how you create those images is up to you - I figured artists are so used to using Photoshop or ArtRage or whatever that trying to make an interface for them to paint in that won’t be frustratingly limited would be out of my scope.
Also, am I right in thinking you’re the one I should thank for implementing normal mapping in the Spine runtime? If so, thanks! I have a feeling at some point I’ll be working with that code. I’m wondering, do you have any thoughts on what I mentioned up thread, regarding correct rotation of normal maps? Having looked at the JAR posted here, I strongly suspect that that problem is present (that is, the normals aren’t being correctly rotated with the underlying geometry). The best way to see the issue is to position the light about here:
See how given the position of the light source (that white dot I drew in), Spineboy’s right forearm ought to be underlit, but instead the top is lit?
Anyway, I’m just wondering if you think I might be right about that - not asking you to rework the code or anything! If the problem is what I think it is, the solution is likely to be nontrivial anyway - especially once Spine gets soft skinning and freeform deformation added, which will serve to further complicate things. I’m just trying get a feel for what I’m up against if the time comes.
~ Finn