Not enough ratings
Beech Woodlands, Derbyshire, UK
Theme: Nature, Real
File Size
932.453 MB
Mar 22 @ 6:53pm
1 Change Note ( view )

Subscribe to download
Beech Woodlands, Derbyshire, UK

A wintry woodland scene captured in late December 2016 - this was a bit of an experiment. Many things went wrong, but many things went right - so I'll document everything I learned along the way in the hope of helping others!


The camera I used was, as before, a Canon EOS 7D with the EF-S 10-22mm lens. The weather was slightly hazy sunshine with effectively no wind - perfect photogrammetry conditions! I hurried down to some nearby woodlands before the conditions decided to change.

I took around 620 shots handheld at 1/40s, f/8, ISO 100. Focus ended up being a bit dodgy with the occasional wobble-induced smear - running at f/11 and ISO 200 might have improved depth of focus (the scene had plenty of detail, with sensor noise not being a problem). 1/80s, f/11, ISO 400 could have been even better? I need to evaluate.

Additional data captured included measuring the distance between two particular tree trunks - using a borrowed Bosch GLM 50 laser tape measure - and a few minutes of ambient audio with a Sony PCM-D50 sound recorder (also borrowed!). For the latter, I had to stand immediately downwind of a large tree to escape slight wind sounds, despite the calm weather. I need to investigate wind noise prevention in future.


There were problems aligning all the photos - I've been too used to big, solid objects like buildings which don't change much from different angles. For fine foliage which does change, I should have taken many more photos - a smaller baseline between shots would have been a big improvement in providing similarity for Reality Capture to latch on to. I could also have taken more 'mini-panoramas' - the section where I started doing that had the best alignment and reconstruction.

I had to resort to using Reality Capture's control points system to align the many separate components. It was lots of work, but I learned plenty doing it - including that Reality Capture's alignment process is very much iterative. Re-running alignment can give incrementally better results. I ended up with 425 photos aligned.

Mesh and Cleanup

After getting a good alignment (previous ones had doubled-up trees and other faults, reduced by adding more control points in offending areas) I generated a high-detail mesh, which I then simplified to 2.5 million triangles. That was exported as an .OBJ - I trimmed off the exterior 'box' in Modo and closed small holes in MeshLab. Additional minor cleanup was done in Modo - deleting some unnecessary faces and closing a few more holes.

Next in Modo I chopped the mesh into segments: the leaf-covered ground, lower tree trunks, and upper branches and distant foliage against the sky and horizon. These meshes were exported as separate meshes and imported into Reality Capture for generating UVs - six 8k textures for the ground, three 8k textures for lower tree trunks and two for upper branches etc. (I wanted to minimise that last number because (a) the surfaces are far away, and (b) I would be adding alpha channels, thus doubling the resulting texture size in memory.) These newly textured meshes were then exported from Reality Capture and combined in Modo - where I also created a basic low-poly ground to fill the gaps between the surroundings and the high-poly foreground. This combined mesh was re-exported and textured in Reality Capture.

Translucent Foliage

Once I'd generated this final textured mesh in Reality Capture, I got it back in Modo again (there's always lots of back-and-forth with scene cleanup!) where I separated the geometry with the upper branches materials into a separate mesh. I would be using the same combined alpha tested / translucency trick I used for foliage in the English Church scene in order to get better depth sorting - using the white / light blue sky as an effective chroma key for generating an alpha channel.

I duplicated this new foliage mesh and gave it two new materials - the previous names plus '_masked'. I want to render both at the same time - the alpha tested version affects the Z-buffer for good sorting but has hard edges, while the translucent version has nice soft edges but sorting is problematic. Doing both has much better results.

While I was at it, I got the necessary scaling factor by measuring the distance between the same two trees as measured with the laser tape measure. I then exported the whole lot as an .FBX for importing into Destinations. With the doubled-up geometry for the foliage, it ended up slightly under three million triangles.

(I also built a quick skydome model which would draw behind the transparent foliage - basically a dome with a simple texture, a radial gradient generated in Photoshop).

For the foliage I created new '_trans' translucency textures in Photoshop - opening the two colour textures for the foliage and selecting colour ranges for white and light blue, effectively chroma-keying out the sky. I ended up with four materials total for the upper branches etc. - two translucent, two reusing the same textures but alpha tested.

Additional Texturing

One problem I had to work around involved Reality Capture not being good at texturing highly oblique surfaces - its texturing algorithms are brilliant for extracting and merging detail from source photos, but they give up when asked to do something with marginal results. The result was that the low-poly ground surrounding the high-poly foreground ended up being effectively blank - which really looked quite broken. PhotoScan has simpler texturing algorithms which, while generally of lower quality, will happily texture surfaces where Reality Capture won't.

I got a quick camera alignment in PhotoScan (around 320 photos - I haven't got the 'export camera registration' from Reality Capture to behave yet) and generated a basic mesh. This was exported to Modo where I figured out rotation and scaling to match up with the high-quality Reality Capture version - I then moved the high-quality mesh over to PhotoSan's alignment, then deleted the PhotoScan mesh and reset alignments - the result was the high-quality mesh but with rotation and scaling which matched the PhotoScan version. This was exported as another .OBJ for texturing in PhotoScan.

I discovered a super-cheesy but remarkably effective texturing trick for getting the poorer-quality PhotoScan textures to fill in the holes in Reality Capture's texturing - textures from both were exported as .PNGs with alpha channels then opened in Photoshop. I converted the alpha channel on the Reality Capture texture to a layer mask, took a copy then disabled it. I then placed the Photoscan texture above the former texture, leaving the alpha channel enabled - then added a layer mask to that PhotoScan texture, pasted in the mask from the Reality Capture texture and then inverted it. The result: gaps in Reality Capture's texturing now filled with PhotoScan's simpler texturing. I did this for all the ground textures - foliage and tree trunks were left alone. I wish I'd found this trick sooner!

Setup and Audio

After adding a cubemap, a light source, a teleport mesh and an information panel to the map I set up a soundscape. For the ambient sound I made a quick loop in Audacity from one segment of recorded audio, then added loop cue points in Wavosaur. Birdsong and distant dog barks (from the English Church scene) were added for nice positional immersion. Net result: mostly authentic audio.

As I said, this was a bit of an experiment in quite a few different ways - from attempting to capture whole trees to obtaining laser measurements and ambient audio. If you have any questions, as ever don't hesitate to ask!
< >
RED-FROG Mar 26 @ 2:25pm 
Too bad I get quality decrease when I view your destination.
I really hope this dynamic resolution scaling can be turned off in the future. Because most of the time I enjoy still scenes in Destinations and don't want blurry images.