currently I’m preparing for a rather complex software project in college related to the the subjects around artificial intelligence.
The final goal is to make a dragon or bird teach itself how to fly.
This will require a genetic/intelligent algorithm which takes the model of a dragon or a bird and adjusts the controls of it’s wings (like its “muscles”) as well as possible to perfect the efficiency at flying with this model.
There is this famous project here which is my inspiration: http://www.goatstream.com/research/papers/SA2013/
For simplicity, the model in my case will consist only of several plates (not curved wings like a plane, rather think of a bat) connected to each other with hinges and actors simulating the muscles.
The evolution-based algorithm requires a so called fitness-function. That means I need to test how well the current settings perform (like what’s visible in that video). That’s where the engine like UE matters.
From what I can tell, the engine needs the following requirements:
- Able to separate rendering and physic-computation (like simulating 1000 steps with different values but only rendering only one of them actually on the screen or work entirely in the background till the best values have been found)
- Able to simulate real air-forceback, as in if the wing is pushed downwards, the physic-engine has to compute how much imaginary air has been pushed out of the way and apply a contrary force to this section of the wing. Simple movement-damping does not suffice for that!
- Since I doubt the engine already supports the mentioned functionality, it requires the possibility to insert this myself into the physics code in a performant way. With C++ at best.
By the way, I’ve already realized such a functionality in 2D:
The blue rectangles are the air which has been pushed out of the way.
My question now is, would PhysX together with UE4 be the right environment for my Project?
Does it match the mentioned criteria?
Another engine I’ve looked closer at, ist Unity3D. That one would support the possibility to insert the physics code like that and it has already be done for an interesting boat simulation.
However, I’d prefer UE though since C++ ist usually faster than C# which Unity3D uses.
Huge thanks in advance!