I hope is the right place for this, if not please move the topic where it should be.
First of all don’t expect anything amazing…I am completely new to …the industry. I’ve discovered UE4 about 3 weeks ago and so I decided is what I want to do. Even if I just finished law school , is my passion, I’ve been a gamer pretty much my entire life, and I know for a fact that with hard work I will succeed in domain, cause it’s the one I love the most.
So about 2 weeks ago I started creating a stadium. It’s a map for a multiplayer FPS that is still on the work. Here are some pics with my current progress :
So … as you can imagine … I have a lot of questions. I get stuck quite a few times everyday on different aspects. Sometimes I find solutions in the documentation or on google and figure it out myself …but sometimes I really need to ask someone for help.
So I made thread to share my learning experience, my work and to be able to ask random questions unrelated to each other in one topic.
Also …the breaking bad cabin scene made me buy ue4 and start learning/creating. It was the kick I needed .
I am working/learning like 12-14 hours a day and I love every moment of it. The more I learn the more excited I get. My goal after finishing the stadium is to learn to create a scene close to as awesome as breaking bad cabin for my portfolio. ( Yes…I realize I am far away from that at point).
I have these seats, 2 models (open and closed ). After I multiplied them over a stand and then multiplied the stand about 3-4 times performance rly went down.
Now I think it’s because of the 2k texture but mostly cause 1 seat has 5k polys. I also understand I should make a prefab first? ( convert to bp?) If I have to lower the texture and the polys what numbers should I aim for?
5k polygons for a chair like that seems like overkill. You should lower the poly count and also make some LOD with even lower polycounts. In a stadium that size there is no way that every single chair needs to be fully detailed all the time.
There may also be an advantage to grouping chairs into a single mesh(like each aisle is 1 mesh). All those separate objects must make the draw calls go through the roof.
Guys …how would you lightmap something like this? It gives me headaches just thinking at the manual uv mapping on this…and if I would split into separate meshes for each steel beam then I would have too many meshes…(just like the seats)
You should UV map each piece separately, before combining them.
It’s definitely kind of confusing, but when I said combine the meshes, I was referring to combining them into a single asset, as in 1 FBX file. So you can UV map each chair, beam, etc. separately. Then make your combined version in maya with the fully UV’d pieces, and export it as a single FBX.
What I did was select the top and bottom long beams, map them separatly then combine and place the UVs properly. Then I’d select the beams connecting them, combine them and UV map them. Then I selected the 3 new meshes, and in the UV editor I moved/scaled them around to fit. Then I selected separate the beams going to left, combine , uv map them. Then select everything thogether and place the UV’s around. is what I ended up with.
To be honest, for most things, Maya’s automatic unwrap works fine for lightmaps. Just make sure to select all the UVs and run the Layout command on them (with free rotation and world-scaling enabled).
For texture unwraps you’ll want to be a little more manual about it - its never a quick process if its being done correctly.
Thanks Crow, that will help me a lot in the future!
Is there any reason why I shouldn’t make the whole stand a bp since I am going to multiply it about 16 times ?
Update :
Starting to get shape, still having perfomance issues ( when I duplicated the whole stand, engine froze for like 10 sec) with the seats, even after converting to bp. ( have not lowered the 2k texture or the 5k polys yet…just to test) Also I am thinking of grouping them up in Maya and importing as 1 fbx. What other solutions are there for problem ?
You can try grouping them up in maya first as a test. I’d say beyond that, it would have to be a memory issue in which case it would be time to start going after the poly count and texture size. I’d also suggest doing LOD work so that the engine can swap in lower quality models for distant assets.
You might want to look at the statistics for your scene as well. You can do that in the editor by clicking the down arrow next to the Build button and in the drop down menu clicking “Scene Stats”. should give you an idea just how much memory you’re taking up.
Like other people have mentioned, the cause of your performance problems is that each chair is still a separately renderable object, no matter if they’re grouped into a BP or not. You have one chair model in memory, and the engine is checking thousands of static mesh components/actors to see if each one needs to be drawn, and if so, send the draw command for each one to the GPU. There are two approaches you could use to improve performance. You could combine a row or even section into a single mesh inside Maya, so then Unreal only needs to consider a single object per row/section (at the cost of slightly higher video memory consumption). You could instead use an Instanced Static Mesh Component, under the Rendering category in the BP editor, which takes a single mesh and draws multiple copies in a single draw call (is what I would recommend).
The texture resolution and triangle count of your chairs only significantly affects the time the GPU takes to draw them, rather than affecting the time it takes Unreal to figure out what to draw. That said, 5k polys and 2k texture resolution is too high resolution for what you want to do.
Thank you. might sound wierd, but I don’t rly know how to proceed on transforming the high poly to low poly. Now I have googled the process and I found methods that include baking normal maps using other soft ( mudbox , zbrush etc). Is the case for me ?
I first thought I was just going inside maya , select some of the edge loops and delete them. Or hopefully there is a automated command to graduately decrease the number of polys while trying to keep the shape as much as possible ?
How should I proceed for this ? What should I learn ?
Just realized that there are only 2.2k polys not 5k. I could also delete some faces from under the seat + the rest arms. That should mean about 500 less polys. When we are talking about low poly , what aproximate amount are we actually talking about , for seat. <100 ? <500? <1000?
Also what resolution should I use for the texture?
I want to change these first and give it a try with Instanced SM Component like Beej suggested.
Deleting edge loops is a good start. You can also try retopologizing the mesh. I know Maya has some built in tools for this, but I’ve been using Topogun 2 for characters and it’s great!
If good topology doesn’t matter(and since wouldn’t be an animated mesh it probably doesn’t) you can try Maya’s built in Reduce feature. Honestly I’ve never gotten a great result out of it, but it’s at least worth a try. You can find feature by clicking “Mesh>Reduce(click the box next to it for more options)” and it will ask you for a target poly count. It’ll do it’s best to reach that polycount and maintain the volume of the model.
As you’ve mentioned, once you have the low poly model you’re going to want to project normal maps from the higher poly model to the lower poly model. You can get a ton of detail back with method and it maintains a cheap rendering cost. Maya can do too in the rendering menu. Just google “baking transfer maps maya” and that should point you in the right direction.
Sry for the late reply, I am on vacation and gf doesn’t allow me a break, haha.
Thanks for encouraging me to start it over and learn maya
I have tried fixing the seat a bit and I ended up with 864 faces after I got rid of some edge loops, some details from under which wasnt seen anyway and used the reduce tool to about 50%. That was the amount before starting to lose its shape. Texture wise I couldn’t go lower than 1024, or it gets pixelated.
I have been trying to get that Instanced Static Mesh Component blueprint working but I can’t wrap my head around it. Haven’t found much documentation or tutorial on how to do it except on answerhub questions/48384/how-do-i-create-an-instanced-static-mesh-in-bluepr.html. Got lost on part " Set it using the Return Value on the Add StaticMesh node." I have tried over and over but couldn’t find the Add StaticMesh node.
What do you think of the amount of polys for the seat ? 864 still too many ?
Also I have tried exporting a row of seats from maya as one single mesh. I kinda had to set the lightmap res to 512 for that amount of UVs. After I multiplied to about 6 stands and tried building the light. After 15 mins and only 3% I dropped the idea.
He means the “Add StaticMeshComponent” node. It will not appear in the search menu if “Context Sensitive” is unchecked. Let me know if you are still having trouble locating it
864 is ok, but a lot of smoothed edges and details will not be noticeable from farther than a few feet anyway.
I have found the node but I still don’t get how to “set it using the Return Value on the Add Static Mesh Component node”. What I understand is to create a link between Return Value of Add Static Mesh Component and the Add Instanced Static Mesh Component, but it won’t let me do that anywhere. I guess I don’t rly understand what “set it” means.
What I did was create a bp for each set of stairs ( about 120-150 instances using the components tab and placing them around using the coordinates). So there are 3 BPs for normal stand and 4 more for the angled stand. I got rid off the flickering black dots problem I had earlier by unchecking recompute normals in the mesh details.
When I multiplied the stands 2-3 times and build the lighting everything worked fine, just had to wait a little bit more for the build.
When I multiplied the stands to create the whole stadium, fps went down to 5. I figured once I build the lighting it will be fixed. Well the problem is that once I click build and once “Building lighting complete 0%” my laptop freezes…doesn’t respond anymore.I can move the mouse pointer…but that’s all. Can’t alt tab, can’t alt+ctrl+del …only thing that works is manually shut down and restart.
Need some help with finding what causes and how to fix it.
Remade a rly low poly version of the seat ( 50 polys ) and a new texture and the performance problem got fixed. Building the light now takes around 45 mins.
Worked a bit more on the stadium. Getting close to finishing it. I have played with the lights, think it’s going to take place during night. Right now I am using 4 spot lights in each corner for lighting the field and the stands. I am not really satisfied with the current settings though, but building the lights takes around 1.5hrs so it’s kinda painful to adjust settings.
Also the material for the seats is just a placeholder for now.
How can I make the spot lights visible? Right now you can’t see the light source…how can I make them so that the light they emit look just like from a flashlight?
Perhaps you could use a 3d mesh that simulates the lighting, such as was done in UDK and the light shafts. In order to “visualize” the lights, a 3d mesh with a transparent texture could be used as well as an animated material that oscillates or deforms the mesh to give it that lighting look
Another way is to build a particle system that emits a light as well as spawns a simple, transparent mesh.