A lot of the models in Olusia are made via the art of Photogrammetry. In short – deriving models from a range of photographs.
Photogrammetry is a useful tool for getting really authentic-looking assets and is surprisingly easy to tackle. It’s good for developers who cannot produce quality assets on their own.
Photogrammetry-produced assets are available on various stores for use by devs. I suppose the best example is probably Quixel with their Megascans library. These look amazing. They’re expensive, but well produced and look really great when in-game.
I decided to give the process my own approach, however, and make my own assets.
The first and most obvious step is in the capturing of the object. One of my hobbies is photography and so I fortunately possessed the required tools to capture this information – a good camera and set of lenses. While you could technically produce some assets on basic bridge cameras or with phones, I’d not recommend it. Try and stick to a solid SLR or mirrorless camera with as large a sensor as possible, and use something between 35-50mm lens range to get rid of any potential lens distortion (it’s important later on for the software to be able to link photos together with a minimal amount of disruption, and lens barrel distortion or chromatic abberation will make this all the more difficult).
Stick the camera on full manual, stop down the aperture to make the depth of field as wide as possible, and use as low an ISO as you can to reduce noise. Then, just get to town taking pictures of the object. Go around it in a 360 degree circle snapping it from every angle. Adjust height every now and then to make sure every surface is captured. There’s no real prescriptive process here, just try and capture as much as you can.
Once you’ve taken as many photos as possible, there are a few post processing steps to take.
Once they’re all taken, open them in your suite of choice (lightroom, photoshop, whatever).
You’re aiming to try and make sure the images are as clean as possible. Sharpen them, and where possible remove as much shadowing, dirt, or flares as possible. Discard any that are blurry or out of focus.
If your scene had a lot of strong directional light, this will be difficult. Shadows can be removed through some creative image manipulation, but this will increase your workload a lot. Ideally, shoot your object in a scene with lots of diffuse light so there are no obvious shadows. Otherwise, these can work their way into the final texture and make it difficult to use in-game.
The actual interesting bit. I use AgiSoft Photoscan. They appear to have since renamed it “metashape”. This is what I use to make the actual model + textures, but there are various other solutions that do similar things. I found this one the most accessible.
There’s a lengthy process that I won’t detail fully, but eventually you will wind up with your model:
We now have our model. It looks pretty great! But what about in this view?:
That is not a solid render. Take a look…
Obviously this is far, far too high detail to be used in a game. So there are a few steps to take:
- Decimate the mesh. Reduce the vert count drastically.
- Retopologise in your program of choice
- Remove any parts of the model you don’t want to keep. In this example, that’d be the surrounding square of land near the stump.
We should end up with something significantly more efficient. And if we’ve done correctly, it shouldn’t really be noticeably different to the original:
One of these has 10,000 faces. And the other… 943,000. Can you tell them apart?
5. Texture and Finalising
Finally the object must be textured. Agisoft has extracted albedo data for us, so we have a texture we can use. But we need to make it PBR-friendly. For that, I use Substance B2M.
At this stage you can take extra efforts to tweak the appearance to your liking: removing marks or dirtying up the texture, creating tesselation maps, etc.
Once we’re done, we can go ahead and import it, and it’s in game with little difficulty:
With enough effort a fairly convincing collection of assets gets built up.