I took a short break from this project recently to finish and release my wave filter pack and was away for a few days, but I'm back on it this week and thought I'd update you on some of my progress.
One of my main focuses has been to get learning blueprint visual scripting, which is something I've been keen to learn for some time. As any of you who have seen my Substance Designer material studies and work with custom nodes will know, I have a love of the more technical side of game art and firmly believe in the power of procedural workflows. So I wanted to apply this approach to working in UE4. The balusters on the staircases banister seemed like the perfect place to start.
The goal was to create a blueprint actor that would spawn a given number of baluster meshes evenly spaced along a spline path. I decided that I could probably get away with using just one baluster mesh, providing each instance is rotated on it's Z axis by a random multiple of 90 degrees to create the necessary breakup in repetition. If this proves not to be enough, I could adapt it to use an array for selection of more baluster meshes but I'll see how I get on. To make it as easy as possible to position it correctly in the scene, I wanted it work when the spline points are placed in the same X and Y positions as the newel posts. This meant that the width of the newel posts had to be factored in to ensure the space at each end matched the spaces in-between balusters, so I included a variable for inputting this value.
The above image shows the result with 4 copies of the blueprint for each of the 4 spaces between newel posts. Once the paths were setup correctly I could just change the baluster count based on my reference images.
The above shows the parameters used by the long banister on the lower part of the staircase.
And here's the construction script graph. I really should comment it I know, but bare in mind it's still a work in progress. ;)
I've also made some of the lighting fixture meshes. I thought these should also be blueprint objects so that I can attach lights to them and set the light defaults for all instances from within the blueprint. Also, the ceiling lights hang from the ceiling by chains, and due to the sloping ceiling they needed to have different chain lengths. So I made the chain lengths parametric. The pivot is set to the centre of the canopy (ceiling attachment) so they can just be placed in the correct position on the ceiling. The position of the shade is then determined by the number of links in the chain, which is controlled per instance by a 'chain link count' parameter. I used the reference images to get the approximate chain lengths for all the hanging lamp blueprint actors. Each chain link is rotated by 90 degrees on it's Z axis and then this can be randomised with the 'random rotation angle' parameter. A value of 25 degrees seems to provide a nice level of variation.
I also included a 'light is on?' parameter to easily switch the light component on or off.
Again, no comments, but all of this is still subject to change at this stage. There's still a lot for me to learn about blueprints, and I may come across better ways of handling these scenarios, but for now they're working pretty well.
I've also made a start on some of the textures/materials. Mostly just the tileables for now using world space coordinates to eradicate seams and stretching. Some of the materials aren't looking quite right at the moment, which I think has to do with the lack of lights in the daylight scene. Oh, and I've started trying to set up the lighting scenarios, which also needs some attention to get it working correctly.
That's all for now. More updates to come.
Thanks for reading!