I have recently started work on a Lego VR project, and I was wondering how I could best go about creating all the different parts the player would use.
So far I have considered two routes:
- Creating each part from in blender, and importing them into UE4, which would mean a few thousand models, and using them as is, Or…
- Creating modular parts of all the major part types (bricks, plates, ect.) and writing a blueprint or code to let the engine create parts from those pieces as is needed.
I have access to the models already, and I am not too proficient at programming yet. That being said, I would like to choose the most performance effective method, as there will be a few hundred to a few thousand parts in play in certain situations, and I don’t want that to impact the player experience too much, especially since its a VR project. I should add that the parts themselves aren’t necessarily too high-poly, but things would start adding up quickly, right? What are your thoughts?
Making good use of mesh instancing is probably a good start, perhaps even using the runtime mesh generation to create built meshes at runtime to reduce draw calls and shadow rendering cost.
Impossible to say otherwise though, every game has it’s own unique challenges. Just make sure you profile often, and do some tests first. Decide what rendering features you do/don’t want to use early on.
Also, be wary of using Lego blocks explicitly. They’re (rightfully) very protective of their IP.
Since Lego a simple non-complex objects you could generate the mesh as a procedural.
Since it’s code base = a good learning option to boot.
Since it’s a VR project I would recommend you grey box your expected Max load to test the expected performance curve. Also as mentioned draw calls is the big worry so using lots of material instances and/or functions, substance materials, texture atlas and lots of hlods would be a good idea.
Would it be insane to just create a lego block and use creative instancing to build stuff in separate bricks?
each brick is 8 tris plus the 6tris and 6x2 for thw round inserts.
you could go all out and even creare the insert at the bottom. Still, a full brick is likely sub 50 tris count.
A wall of 1000 bricks would be 50k tris. And i doubt you’d see more theb 1/4 on screen at the same time unless you disable occlusion.
On top of it you can LOD each brick to 8tris. Which works exceptionally when when sticking them, since rectangle shapes work well.
you’d end up with a ton of actors that contain instanced static mesh components arranged to taste, but you could also somewhat easily assemble all parts in engine…
Obviously for VR this may not work at all. Performance being key and all, but it is kind of a nice concept…