Available in Version 6.248 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. Insanely fast and very accurate. Not built from geometry, but from open source, public geographic data.

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.

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 that Canopy Object under a DEM Earth object, and provide some objects for instancing.
Usage


Get..
Begin the process of extracting trees. (The magic begins)
- Load from local tree files, if present. Big files, thaat take a while to download.
- if not present, download data in parallel, and begin and begin extracting trees from that data as it comes in.
- You need at least 24 GB of ram for this. its a huge job.
- The tiles it downloads are 65kx65k. These have to fit in memory as floats.
- Extracting the trees takes a lot of memory and keeps your CPU busy. the more cores you have, the better.
- if you have a floating license, you get higher density extractions (more trees).
- Hold down the shift key when you press get, for even higher density

- if you need crazy high density for aa specific area, get in touch. i.e. level 10 is crazy.
- Anything below level 10 is insane tree counts, but they are also insanely good if you can handle them.
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.
Calculate Density.
Turn this on if you need this filter, its hard to compute so the default is off.
Best is to figure out your area, and then activate density if you need it. it is awesome :)
Field Effect
Currently only scale. This scales trees in the falloff range of any field. (position and UV, so you can use textures)
Display
Display
The display mode for trees.
Display Color
The general color for displaying tree nodes in the viewport. The color is multiplied by inverse node level.
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.



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.


TIP: you might want to occasionally remove the tiff data from your canopy folder, as the tiff files 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.
Important Note
- Canopy does NOT replace Forest Gen !
- Data from Forest Gen can not be used with canopy.
- Canopy can be passed to forest Gen. this is required to render directly with octane.
- Canopy data is an order of magnitude better than what Forest Gen has access to. Canopy produces far better distribution and is much faster than Forest Gen.
- To able to render Canopy with, we use the Forest Gen as a container. To do this, you simply place an empty forest Gen object under DEM Earth, but after(not under) your Canopy Object. The order is DE->Canopy->Forest.
- To generate Canopy trees locally, a powerful CPU, with lots of cores, loads of memory and plenty of HD space.
- If you can't do it yourself. Just reach out for specific extracts .
- You can load/import *.tree files. (Example tree files can be found a the bottom of this page)
- Once A canopy object is populated the memory requirement is trivial. Data is is saved with the object, in the scene (i.e. no file dependence)
Finally
I welcome any feedback on this project.
Example *.trees files
Usage :
- You need a valid DEM Earth license and version 6.248 installed.
- Download, unpack and simply drag/drop a *.TREES file into c4d. That Generates a Canopy Object for you.
- Insert the new Canopy object under a DEM Earth object, and hit the "Center on" button.
- Add a Mograph cloner before the Canopy, and insert some objects under that cloner.
- Redshift finds and renders the instances without any problems.
- Octane finds and renders the instances as well.
- Mograph Cloner is used as a container to feed canopy trees to instances. Anything that supports c4d multi-instances and cloner, will work with the canopy object.
if you would like examples of specific area, just ask. I will build a few free requests as free examples.
Examples have to be under 20kb zipped for me to be able to drop them in here. Thats is enough for several million trees trees per example file.