Hey Folks! We're definitely making headway on the crew portraits.
As you can see from today's image, I finally figured out how to texture swap. After a couple of hours of failing to do things the "right" way, I just hacked some code to do it my way. (Basically, exposed a texture property that would otherwise be private on each SpriteMeshInstance.) And it worked!
And with that running, it's all about adding variety. I put together some more face parts, and hacked together a half dozen variations for each piece. And in the code, it randomly selects from this pool to make each face, pretty much using any piece it wants. The one restriction I placed was skin color, so the sprites match when they overlay. Here's an (admittedly too small) gif of them in action:
Hard to see at that size, I know. Sorry. I should figure out a better way to make gifs. (Let me know if you have any tips!)
However, you can hopefully tell that each crew member is looking around, blinking, and having emotions. It's still not hooked up to actual AI data, but there's a random emote script I hacked together so I could see it in action.
My feeling is that this could work, from a tech point of view. But the art, animation, and overall UI is going to need fiddling to work. That, and the portraits won't be very good at second-to-second AI status. No way a player can keep an eye on all those faces while playing the game, and hope to notice who's in what mood.
However, I seem to recall Sim City 4 did a few tricks like changing the background color and/or shaking heads to draw attention if something is really bad. Maybe the crew just does these subtle emotes most of the time, and it's up to the player to notice. But when it's a crisis (fire, fight, etc.) the portrait comes to life with head bobbing/shaking, background changes, or other cues? Like, when you have a minute, you might scan the faces for signs of trouble. But if TSHTF, they'll catch your eye no matter what part of the screen you're looking at.
Whatever the case, I think it's a worthy addition to the UI. It reinforces the notion that you have live crew members with needs, and it's at-a-glance info on their current statuses. And with a few animation tricks, I think they can become good UI indicators to do stuff in your peripheral vision if they need your attention. I might also be able to reuse these at a larger scale for when you're face-to-face with AI, or when you click on an AI to see exactly what they're doing.