Thursday, January 9, 2020

Final Submission Update

Unfortunately after the final Hand In was already over I figured out how to make my obstacle avoiding work better. The trick is to add some delay between checking for Obstacles once the Robot registers an Obstacle. So instead of jittering around, because the Movement Direction constantly changes it now follows the Avoid Obstacle Direction for a certain time, since it already knows, that that direction is free. The interval between the checks is defined by the current speed compared to the maximum speed, so the faster the Robot moves, the shorter the interval. The transition between Directions could still be a bit smoother, maybe by using VInterp or something similar.
Here is how it looks:





Also here are all the screenshots from the Blueprint, including updates:

Construction Script

Event Graph

Movement Direction and Obstacle Avoiding Function

Stay above Ground Function

Update Location Function

Update Rotation Function

Generate View Directions Function

Monday, January 6, 2020

Week 15 - Final Submission

Companion Robot Final Submission
For the summative hand in I decided to work a bit more on the Companion Robot project, mainly by creating a warehouse environment. I kept it simple for time and budget limitations. Below are images of the environment creation process






.







Furthermore I improved the robot's flying behaviour slightly, by changing the way it adjusts z location.
Now, instead of trying to stay a certain distance above the ground the Robot takes the Players Z location and tries to adjust to that height. It still traces down, though, to not move through the floor. The obstacle avoiding mechanism still doesn’t work the way I want it to and occasionally the Robot gets stuck or moves through objects. I’d probably have to revisit the entire system.

Improved Update Z Location BP Function

Unfortunately I wasn't able to do anything with the legs, since I know too little about animation blueprints in Unreal and after some experimentation decided to focus on the environment instead.

Sunday, December 22, 2019

Maxscript Unwrapper - My first Tool ... and some VFX

Since I haven't done any real scripting in Maxscript, I decided to take the Christmas break and do something about that. I chose to write a short script, that flatten maps and packs the UVs of selected objects either seperately or in a shared UV space.
I plan to expand the tool and already started working on an export tool, which isn't implemented, yet, so I will continuously update this tool.
If everything works out I will be able to use it for my FMP. Currently it is just a brief journey into the world of Maxscript.


Also I did some quick VFX prototyping, which I might end up using for another personal project. Strictly materials at the moment, no particles.

VFX Prototype

Saturday, December 14, 2019

Week 11 - Materials WIP

After handing in my third project, I decided to spend the week before Christmas break polishing my Destruction Project, after talking to one of my tutors. Since I didn't have any time to make textures, when last working on it, I started by making them in Substance Designer. This took a while, because I haven't touched Designer in a long time for creating realistic materials, all of the ones below are work in progress as well.

Wood Substance Graph
I tried to recreate old, worn down wood, whilst also adding options to add varnish or paint and other input parameters. The following Screenshots show the textures at 1024 by 1024 resolution.

Standard Wood

Wood Variations
The material definitely still needs some improvement, but I will move on for now, since I have plenty of other things to work on.
I also started working on a simpler wood mainly for furniture.

Wood 02 Graph

Wood 02

Additionally I started working on a worn leather material. Ideally I will be able to add a parameter for the level of wear, etc.
Leather Graph

Leather




Sunday, December 8, 2019

Week 10 - The third Hand-In

Since week two of this project was rather unproductive, I spend week 3 finishing modelling, making some quick textures and materials.

1 - Texturing
The textures are definitely something, that I need to spend more time on, but since I didn't want to hand in a model without textures, I made a basic texture pass. It is very likely I will rework the textures completely, because the unwrap needs to be improved.





2 - Materials
Since I did not have a lot of time left until the hand-in I improvised and built two very simple materials for the laser beam and the burning air coming out the Robot's Engine.

For the beam I used a panning noise texture and warped it with a panning normal map.

Beam Material Setup
Beam Material
After a suggestion from one of my tutors I made the color of the laser beam and eye change, when there is an obstacle in front of the robot for some more visual feedback.

Obstacle Feedback
For the engine material I used a very similar method for warping noise, but then I use it as the UV input of a gradient texture, which works like a gradient map. I also added a Hue Shift Node to change color, if necessary.

Gradient Texture vs Applied Gradient Map in UE4
Engine Material Setup

Engine Material
3 - Conclusion
Overall I feel like I more or less finished, what I set out to do with this project. Of course it still requires a lot of polishing, esprecially the Avoiding Obstacle mechanism, which works for obstacles in front, but not on the sides of the robot. Also I need to spend some more time optimising the modell and really put some more work into making the textures a lot better, since I only spend about a day on them. And lastly I need to think about an environment for presentation.


Saturday, November 30, 2019

Week 9.2 and 10.1- Slow Progress

After spending week 1 of this project entirely on the behaviour Blueprint, I moved on to making a more detailed model of the Robot based on my initial quick blockout. However I wanted to add some legs, just in case I want to add the ability to land and walk at some point.

1 - Modelling
Before starting to model I did some quick sketches figuring out how the legs could work, but overall I kept the design fairly simple, since I didn't have much time to spend on it.



The model itself needs some optimisation. It currently has about 15000 tris, which I could reduce by baking some parts, like the "eye"/visual sensor.







  I also originally planned to make the model more detailed, but didn't have the time, so I ended up not using them.



Since I wanted the legs to be animated I played around with some rigging and IK Solvers, again something that didn't get finished/ implemented in the hand-in version.


Experimental Leg IK

2 - Maxscript
Because I needed a small break from modelling and Litha had an issue with some Physics Simulation (it didn't work with her mesh), I wrote a small script to replace meshes with another one ( so that the Simulation could run with another mesh, that can then be replaced with her original one), just to see if I could do it. I came up with something very basic in about 30 min. We didn't have a chance to test it, yet.

Replace Objects Stript
3 - UE4
I also went around to adding rotation to the rotor. Essentially it has a defined rotation rate, but then compares current speed to maximum speed and adjusts the rotation rate based on that.

Rotor Rotation Blueprint
Figuring out how to rotate the eye to look at the player was slightly more tricky, because it doesn't rotate independently, but together with the robot's body.
In local space it would be very simple to limit the eye's rotation, by clamping it at the minimum and maximum rotation from 0.
However, since the player character moves in World Space, I had to figure out the eyes rotation in World Space as well. The solution to this was taking the Robot's body's rotation as the new 0, then adding/subtracting the maximum rotation angle and clamp the Look At Rotation based on those.

Look at Player
EDIT: Might have to change the way X and Y axis rotation is handled by using the robots local Rotation.

Look at Player