• Available in Version 6.41 or greater.
  • Requires a DEM Earth parent and active support, and a license to generate canopy data.

 

Generate Accurate tree locations derived from very high resolution canopy height maps.


No Guessing.
No manual painting or masks.
Trees, where they should be.

The process.
Figure out what to download and download it.
Load the data (massive amounts of it)
Filter that data.
From that data, detect tree locations, their approximate height and radius.
Export detected trees in a custom compact format. *.trees
Load those the resulting *.trees files into a Canopy container Object.



Look close

Tree Extraction requires at least 24GB of RAM for local processing(see the process).

Once the tree locations have been built the memory requirement for the actual tree files and container, is trivial.

Approximately 1.5 bytes per tree is required for the *.trees format.

There is a tree loader (just drag/drop a trees file into c4d and if you have dem earth installed, it will expand, and create a canopy object for you. you then insert tha tunder a DEM Earth object, and provide some objects for instancing.


Usage


Display Color

The general color for displaying tree nodes in the viewport. The color is multiplied by inverse node level.

Display

The display mode for trees.

Center on

Centers the parent DEM Earth object on the current tree data bounds center.

Object Scale

Sets the global relative size of all trees.

Object Tilt

 Tilt is the amount that the tree will point in the normal direction. Smaller trees tilt more than larger trees. 

if you set tilt to 100%, all trees regardless of size, will point in the normal direction at the terrain point.

Random Axis

Flips the x,z axis of any generated tree randomly.

Height Levels

The number of levels depends on the data at the area you have loaded. This slider allows you to reduce the number of levels. This generates less nodes and speeds things up.

Clip to Parent

This currently clips to the bounding box of the DEM Earth parent. Best is to leave this on to reduce the number of tree instances generated. It is a good idea to hit "Cull by parent" to remove trees that are never going to be used and keep things snappy, and do some magic.

Expose

Reduce the number of tree nodes generated. 

Sort

Sort all loaded nodes either randomly, by distance to Data center, or by distance to DEM Earth parent center.

Info

Some useful info about how much you have loaded and what is visible.

Cull By Parent

The parent area is either DEM earth itself, or a poly object parent.

  • if the parent is DEM Earth, anything outside of the DEM Earth bounding box,is deleted.
  • if the parent area is a poly object, and that poly object has a shape, then anything not inside of that shape, will be deleted.


Culling keyboard Qualifiers are shift or ctrl.

  • +SHIFT:  removes nodes inside the parent area. (rather than outside). Shift is the spacial invert key.
  • +CTRL: removes nodes inside the parent area, and puts them in a new Canopy Object. (basically a Cut/Paste)

Flush All

Clears all data from the Canopy object.

Filters

Fuzzy 

The filter parameters are fuzzy. i.e. if you don't want values applied exactly, MAKE THEM FUZZY ! 

Min/Max Altitude.

Min Max Pitch.

Field Effect

Currently only scale. This scales trees in the falloff range of any field. (position and UV, so you can use textures)

Fields

Use any field to modify a node. Any value of zero will remove a tree. Field effect can be use to scale trees, until they are removed. this is super fast and you can do crazy stuff, just with fields.


Viewport




You currently need to supply your own tree objects.

 just insert them under The canopy object. Best is to drop as many trees under the canopy as you can. They should have different sizes. Smaller trees are placed at smaller levels. if you have 50 items under the canopy, and you have 50 levels, each level would get a different tree link.

It does not have to be trees, it can be whatever you put under the canopy.

Best is to put a variation of objects under the canopy object.

i.e. 

It does not have to be trees


TIP: you might want to occasionally remove the tiff data from your canopy folder, as the tiff file are pretty big.


Limitations:


Generating requires that you download a lot of data and have a lot of RAM. A single tile is 65kx65k pixels. the files are sometimes over a 1GB.

For any given area, you might require 1,2,4 8 or any number of tiles to be able to cover an area. This can result in hundreds of millions of tree nodes, for what might seem to be a small area.

There are in total almost 60k data tiles available. I can not possibly generate or host all of that data, and I certainly can't download them all, check them and generate the much smaller tree files for them. Just being able to do this at all, is a bit crazy.

i.e. if on average there are 7 million tree locations per tile, that is 60k x 7million. 

  • 60,000 times 7 million is equal to 420 billion to cover the planet.
  • if I set the detection to level 15 it would result in some 420 million tree locations for the planet earth. 
  • if I set it to level 10, its more like a trillion trees.
  • if I set detection to 5, it would extract around about 4 trillion trees.

Never enough.

  • The public build, is clipped at level 15. If you need more dense extractions, I charge for that as a service.
  • i.e. if you need level 5 for a specific location, ask for a quote. I can deliver *.trees at insane density.
  • if you need tree locations in different formats, such as csv or json, I can do that too.



Finally

I welcome any feedback on this project.