When it comes to VR experiences, a major concern in development is maintaining a high frame rate. When the framerate dips bad with VR, players are more likely to experience motion sickness and other issues. To avoid this, things within the experience need to be optimized for performance. A major section of optimization is controlling polygon counts on objects.
An object that is 1.76 million triangles could certainly run in VR, but it would choke out many other aspects of the experience and leave little room for other aspects. We’re working on a project involving a rocket model with such a high poly-count, so I’ve spent the past few weeks on reducing the model as much as I could while retaining important details. Over all the reduction I did, I’ve brought it from around 1.76 million tris to about 93 thousand.
While every part of the model was higher poly than it needed to be, the vast majority of the tris came from the pieces within the scientific payload. A large number of these tris were devoted to structural holes within the model for things like bolts and screws. These were particularly greivous on structural support pieces that were not going to be the focus of the experience. To that end, all unimportant pieces were gone through one by one (except for duplicated models of course), and reduced. First, the models had to be quadrangulated, turning all the tris into quads to allow for easy selection and editing of poly-flow. Particularly this let me quickly select any holes and delete the faces inside of them, at which point I could collapse the remaining holes on the outside of the model and adjust the outside faces. All rounded edges were also reduced, as a smooth curve relies on a lot of edges to gain it’s shape. Even though these curves were greatly reduced, they were kept even in point distribution allowing the curve to remain visible. All this together likely accounted for a million of the removed tris.
This process was mostly the same for the more important pieces of the rocket, though there were a lot more allowances to them. They could be higher poly to make them look cleaner since they’ll be focused on in the game. These pieces were the camera assembly, the lobster camera and the collimator assembly. Altogether, after the poly reduction, these three pieces account for about 42 thousand tris, a bit under half the total poly count. These pieces actually have more to them now than in the initial file as certain pieces weren’t included before due to being far too poly intensive. Particularly, the collimator has an array of wire meshes throughout the device for filtering the rays going through it. When these were physically modeled, they alone accounted for 1.35 million tris. This obviously wouldn’t work in any real time scene, but through the use of a see through texture I was able to create the same type of mesh using just 240 tris. This was possible due to how thin the wires were, a single plane (2 tris) with a texture that looked like the wires was enough to give a similar appearance. Each wire mesh had a frame around it which was just a few more polygons and thanks to the way the frames scaled as they went through the collimator, I was able to match the slight scaling and alignment changes between each wire mesh.
With this massive reduction now completed, we can bring this rocket model into a VR experience while using MUCH less computational resources. This will allow us to possibly add more objects to the scene or allow for more computationally intense animations that will help make the immersive experience more captivating and functional.
Leave a Reply