I am new to Unreal. I use 3DS Max & VRay to create photoreal images, and Sketchup/Enscape for real-time/quick jobs. Having seen (and been inspired by) much of the things I’ve seen people producing in UE4 I decided it’s probably time for me (and ultimately our small team) to start learning.
I have a couple of questions that I’m sure many people here have had to overcome already; but my apologies if the post seems a bit rambling as I’m thinking of things as I type them.
1 - What is the best way to get a whole scene (let’s say for arguments sake it’s a couple of houses, site, cars, trees & plants) from 3DS max into Unreal. Should I export the whole lot via datasmith, or should I break the scene down into logical parts and bring them in individually? (I’ve read about merging actors to improve scene performance for example; but no idea why this would improve performance - surely it’s the same amount of geometry & textures being loaded, etc?)
2 - What items should I probably not bring in? I tend to use rather (sometimes very) high poly 3D grass & trees; I’m not naive enough to think that these will work in real-time so should I forgo these and replace them in UE?
3 - Let’s say I make a patch of low poly grass (or a tree, or whatever) in 3DS max. I want to export that as a standalone item that I can then “paint” onto a landscape in UE4. Is this a different workflow? Do I need to save it to a library or somewhere that I can access it on future projects? How do my team (eventually) access this asset?
4 - I’m not used to game engine materials. I am used to bringing in a diffuse/specular/bump/normal texture, tweaking a couple of values and the rest being handled relatively automatically by the render engine. Is there a way of achieving similar? Just looking at the enormous complexity of some of the most basic materials is quite daunting.
5 - Please let me know your workflows, what has/hasn’t worked for you, etc. I might as well learn from your pitfalls!
6 - Terminology: I am quite sure that a lot of the things I’m used to in arch-viz are still available to me, but under a different name; any help on this front would be great. Is an “actor” in UE just a mesh? A constant is just an integer value?
Thanks in advance.
I guess I did the secret handshake wrong. Thanks for your time.
1 - I’m not familiar with the Datasmith workflow, you’ll get more help in the Unreal Studio Beta subforum.
2 - Realtime engines can deal with millions of polygons easily, but super dense meshes like trees, grass, and even small details (like a beaded pillow or crystal chandler), are likely not optimal and could cause more problems than they are worth.
3 - There’s a foliage painting tool, but you’ll want to build and manage an asset library. You may want to make a default one that has generic assets that you use for every project.
4 - Game engines have almost entirely switched over to PBR. A standard material will have a base_color (diffuse), roughness (invert of glossiness), metallic (where the surface is metal or non metal), a normal map (instead of a bump map), and an ambient occlusion texture. You’ll want to closely follow the PBR guidelines for base_color, there’s charts and references online. Instead of pure white for white paint or snow, you’ll want to use something closer to .8 and something black like charcoal at 0.02. Metals completely rely on the base color to look realistic, you need to use the suggest values to get anything realistic. Leave the specular input alone for most materials, instead turn up the roughness. Metalness should be generally treated as a black and white mask, or use constant 0 or 1 values. Painted metal is not metallic, completely rusted metal isn’t metallic, but you can use a bit of gray to transition from metal to non metal where there’s rust fading in and out.
6 -An actor could be a light, a blueprint, a mesh, or anything that can be placed into a level. A constant is a number, there’s also constant 3 vectors, generally I’ve heard of constants being used in the material editor. Constants are typically something you wont be changing or adjusting. A parameter is what you want to use in place of a constant if it will be tweaked.
Thank you that’s very helpful.
- There is no such thing as a best way or best practice as including an application like 3ds Max to the pipeline involves the process of iteration and creating the supporting source chain that allow the asset to be updated as part of an on going process. Datasmith is just another ways and means of maintaining the fidelity of the original as authored as to converting unique tools and functions available in 3ds Max to feature sets so they match with the requirements of maintaining the fidelity.
Materials is a good example as construction of a material in one application is usually different in another so what Datasmith does is converts the material type used in 3ds Max, be it Mental Ray Vray,ect to the required PBR material used in UE4. Does the same thing for lights and cameras so that the end result will closely represent the original as to design intent rather than settling for what the engine provides by default risking the problem of digital fingerprinting.
Overall it’s just another API interface connecting one DCC application to another with the ideal of connecting two applications, with different tool sets, that will in the future provide two way communication with out extensive interaction on the part of the user. In UE4 terminology “Live Update”. FBX is another means of creating the ability to communicate between apps.
3ds Max and Motionbuilder, along with a few others, can connect to one another via an FBX server which creates a hot link between the two so selected data can be “send to” between the two and in essence double tool availability base on what each provides.
All that to say the main problem with even adding 3ds Max to the mix is the ability to take what is here and send it over there so Datasmith and FBX are just a means to be able to do that until Live Update comes on line. In theory since it will be server based it should not matter where in the world you are located.
Once again no real best practice as what needs to be done depends on the design and purpose that needs to be served.
Are you the only one working on the environment or are there others working on it at the same time?
To touch on the importance of performance the issue is not how many tris a given object has, being hardware rendered even a half decent video card can handle the load, but how much the engine has to render relative to the camera. Things like draw calls and shader complexity is more of an issue that the object will inherent even if the count is just a single polygon surface.
Then there is instanced copying. If you take one tree and make a copy of that tree it will be instanced off the original rather than creating another unique tree adding to the load.
This is where the idea of merging individual actors comes in as to performance as the engine will cull from being rendered any object that is not with in visual range of the camera. If you were to import the entire environment as a single object then the entire environment would be rendered including all things inherited by the geometry.
- You will usually find that terminology in the wonderful world of 3d is based more on context and not so much on an actual definition of the word. Skinning to a texture artist is completely different to a character rigger.