Country house chat app
Having created a collision detection system, a nice stately-home-type environment, and a prototype 3d chatroom, over the Christmas holidays, I thought I may as well tie all of them together to create a nicer 3d chatroom.
Over a period of about 4 days, I merged all of the above parts into one app, and created 12 avatars which could be used to represent other users.
Once back at work, I shared it with the folks I work with and presented it as an accompliament to Slack chat. The idea is that it might work towards, in a small amount, counteracting the lack of corporeal social interactions that the lockdown situation has conferred.
As with the original prototype, typed messages only reach people within 5 virtual "metres" of your avatar. The idea behind this is that unlike large video conferences, it becomes possible for smaller, subconversations to occur among smaller subgroups of participants - as would happen naturally in a real gathering.
Below: Some screenshots of the simulation portion of the running app. Having defined some "sit" hotspots, user may click on various objects in order to sit on them. The key drive to adding this feature was the notion that rooms without furniture, and people standing in rooms with furniture look equally inhospitable.
Below: The whole app, as it runs in the browser window. Unfortunately, this screenshot highlights some slight inconsistency in scale across the various areas of the created environment. Users may converse using markdown syntax to highlight portions of typed text as bold, italic, and code. (Not shown here).
Below: the user interfaces for the loading screen, and for selecting a room and an avatar. In maintaining a list of "rooms", groups of people using the app may be segregated. These are not phyiscal rooms, but are perhaps best thought of as "planes" - users in room A will not see the messages, or avatars of users in room B.
Below: In order to save time in creating the 12 character models, I sourced a pair of minimalistic but high quality models to use as a starting point - one for the male characters and one for the female characters. They are very low poly, which I decided was a good thing, as I was unsure about how lower-powered machines would process many co-existing animated avatars. The base models were rigged with bones for animation too, which was handy, but the chest bone was configured to be the base bone (and the source of all transformations), whereas I prefer the hip bone to be the root bone, so I adjusted the parent heirarchy a bit before creating the animations.
To create 12 avatars, I animated both the female avatar and the male avatar, and then simply created copies of each, painting each one differently and tweaking the mesh slightly to produce variants. Again, as a time-saving measure, I used a couple of video references of people walking to "trace over" while creating the walk animations. However, the walk exhibited by my male walk reference was a little exadgerated and not true to life, so I de-emphasised the arm swing when translating it to the digital model.
When the player is talking, their avatar plays a "gesticulating" animation where it moves its hands around a bit, as a person would do when communicating naturally. An animator can be more liberal with these types of sequences, as they are more expressive than mechanical - so I just created the animation motion paths for these off the bat without a reference.
Finally, for each of the avatars, I tweaked the base model a bit, and then using a graphics tablet, painted some one some flat colour. A very cool feature of blender is that its possible to apply paint either in the 2d view or the 3d view.
And lastly, a video of the app in motion: