Download

How much rendering control do I have in UE4? [videos]

Hi all,

I’m new to the Blueprints word, having come from a background in WebGL and three.js. I’ve followed a few tutrials online and made a few basic levels in Blueprints and have been loving how quickly I can create worlds, set up cameras, apply light, etc. However I’m wondering how much control I have over these to produce abstract effects like you’ll see in the videos below:

https://youtube.com/watch?v=x18KkDid85M
https://youtube.com/watch?v=krHfrlp7DiA
https://youtube.com/watch?v=WhvxiNUi2xQ

These each use different techniques. The first overlays graphical elements on top of 360 degree video. The second has screen glitches, featureing whales composed of ascii characters. The last uses Lidar scans to render animated point cloud data. These are amazing effects that are done by manipulating shaders, and I’m wondering if UE4 would give me the freedom I want to create abstract scenes similar to these? Or, am I limited to the engine’s rendering models, which is generally geared towards photorealism.

I’m at a difficult juncture now where I have to pick whether or not I want to learn Blueprints to achieve what I’m looking for. On one hand, Blueprints is exceptionally easy to get things prototyped and up and running, but I’m not sure if it’s the tool I need to create the aesthetics I want.

Any advice would be hugely appreciated!

Sort of depends on your final deliverable - if you are ultimately wanting a quicktime file or something then there are other tools that may get you the results you want a bit faster by virtue of being oriented more towards the film/motion graphic pipeline (Houdini or Maya and After Effects for instance).

If you want to create something interactive, all of the examples you showed are certainly possible in UE. Have a look at post processing in UE 4, I think that would be a good starting point. https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/index.html

You can get some great abstract results with materials and shaders as well, the system is very very flexible and quick to work in. I’d definitely look at materials and post processing in UE4 before blueprints, because they are much more directly related to changing the look of the visuals.

Definitely wanting to create interactive experiences. I want to give people interesting and visually striking worlds to explore that aren’t necessarily photorealistic but more abstract like the above videos suggest. Thank you for pointing out post processing, I will look more deeply into that!

But, the post processing effects seem more like applying photoshop layers onto existing objects rather than altering their states or behaviors. My main concern with this technique is that I’ll be limited to the engine’s rendering methods, and I’m wanting some info on how to alter the behaviors and states of objects beyond simply altering the appearances of their surfaces. For instance, I’ve seen lots of tutorials about making realistic looking mountain landscapes, but what if I wanted my landscape to be made up of point cloud data? What about point cloud data that is audio reactive? I know that these are things I can do with WebGL using many lines of code, but do UE4’s material blueprints give me the freedom to experiment with more abstract world features? Can I interact with an object’s vertices or pixels directly?

That’s what I’m really hoping to clarify so that I can decide whether or not UE4 is the tool I should be using. Any tips welcome!

Re: movements and behaviours - yes, you have a lot of control over that in UE4. Blueprints are excellent for quickly creating interactivity be it movement, changing size, color, or something else. The material editor allows for vertex displacements and tessellation so there’s a ton of trippy stuff you can do with that by hooking them up to other parameters to drive them using material parameter collections. The particle system is also quite robust in unreal, so there’s a good toolset there to create various effects.

Re: point clouds, they are not supported directly as far as I am aware, but you could probably get similar visuals using shaders and traditional meshes. As far as accessing vertices directly, you’ll probably need to use C++ for that, but I know UE4 has methods for creating meshes dynamically in c++ so it’s possible.

OK, thanks for the tips! I’ve been wondering what the workflow is like for moving between Blueprints and C++. It sounds like I’ll need to master the material blueprints and then also know C++ to augment the vertices. How easy is it to move between them?

Can someone point me in the right direction for exploring some of these advanced “material parameter collections” mentioned? So far, I’ve found some intro tutorials on materials but I don’t know how to find some of the more advanced techniques. What are some good resources? Books or links, anything is helpful. Similarly, how can I find out more about some of these concepts in C++ (about accessing vertices directly and/or creating meshes dynamically)?

Thanks so much for the info!

You have a lot of control. You can almost get the full functionality of pixel shaders using custom code in the material editor. For example, this is basically a post processing effect.

If you know webgl, translating glsl to hlsl shouldn’t be too difficult for you.

Here’s a method to draw point clouds using particles, read the whole thread because I added some corrections.

Thank you very much xnihil0zer0 and all, this has all been very helpful! I feel more confident moving forward now. It is extremely encouraging to hear that I can get nearly the full functionality of pixel shaders in the material editor.

The question I’m struck with is why so many of the games I’m seeing produced by UE4 are based in photorealism and a lot of the more abstract notions of “game” that I’m most interested in are being explored in Unity (like this one)? Is it because more people use Unity (for now, because of how the pricing structure used to be until recently)? Is it because UnityScript provides an easier access point than C++?

It’s a bit of a self-fulfilling prophecy : if the engine has the reputation of doing photorealism, people who want to do something else will go to another tool, and so on. I’ve seen a lot of people trash UE4 before it was even released because they didn’t like the style of UE3 games like UT3 or Gears (blurry, greasy textures ?) and they thought the engine was responsible. Reputation can do a lot of things. As far as stylized goes, one of the demos in UE is already showing that it’s not limited to photorealistic stuff. Like all modern engines, the rendering is very flexible.

The one thing I would say about effects and complex post-processing is that doing it in UE can be tedious, and somewhat limited compared to a hand-written shader. It’s never an issue on typical materials, but post-processing can be frustrating sometimes.

Thank you Gwenn! So many of the games that are highly stylized in the ways that I want (like Panoramical above) are done in Unity. Is it your belief that people can do all that and more with UE4? I’m just really triyng to see where each engine’s limitations and strengths are and leverage that against what I need it for. Can you provide a bit of detail about what is frustrating with post-processing? What can be easily done, what not so easily done? What is it good for, and what might I want to look elsewhere to achieve?

I appreciate the insight, it’s helping me a ton so far!

I’m also beginning to understand that for the types of things I want to do, I won’t be able to rely on Blueprint exclusively, and I’ll need to write C++ so that I can roll some of my own solutions. How difficult might this be for a JavaScript programmer like myself but who only has minimal C++ or graphics programming experience? Are there any resources people might recommend for learning what I need to learn (books or tutorials)?

Also, how much C++ knowledge would I need in UE4 to do the kinds of things I’m talking about here vs C# knowledge in Unity? I’m wondering what the level of access is like for each engine considering what I want to do.