# Introduction

{% embed url="<https://www.youtube.com/watch?v=0Gd0xK4Ap0o>" %}

**Rhino Nature** is an advanced scattering tool for Rhinoceros 3D modeling software. It is designed to provide a fully-fledged and feature-rich solution for creating millions of objects within the Rhino environment and viewing them without a frame drop. Maintains scene fit and lightweight at the same time supplying a bunch of options to precisely steer the creation of single elements to achieve desired results.


# Requirements

## Minimum

* Quad Core 2.5 GHz 64-bit Processor&#x20;
* 8 GB RAM Memory&#x20;
* 1 GB Disk Space&#x20;
* Rhinoceros 5 64-bit
* Windows 7 64-bit

## Recommended

* Hyperthreaded Quad Core 3.0+ GHz 64-bit Processor
* 16+ GB RAM Memory
* 1 GB Disk Space
* Rhinoceros 7 64-bit
* Windows 10 64-bit

## Supported renderers

Currently, Rhino Nature works seamlessly with the following render engines:

* Octane (2020.1.4.122 and above)
* Rhino Render - Cycles (Rhino 7 and above)
* Unreal Engine (Datasmith)
* V-Ray (5.00.01 and above)

Hopefully, this will be an ever-growing list. If you are a user and your favorite engine is not listed, nothing's lost. You can take action by notifying the development team of your tool of choice that there is a simple API allowing tight integration with it, and redirect them here. If you are a developer you probably look for several words of explanation about [integrations](/api/integrations). In case you need an NFR license for heavy field tactic inspections of your integration, drop an email at [support@rhinonature.com](mailto:%20support@rhinonature.com).


# Installation

## Overview

This reference guide shows a typical Rhino Nature installation process step by step.

You can download the latest version of Rhino Nature from the [official website](http://rhinonature.com).

## Installation steps

To start the installation, double-click the installation file.

**1.** Setup Wizard will welcome you with a message about the installation process.&#x20;

![](/files/-MUITv6bnCtTyWlBeZ4f)

**2.** You will be presented with the EULA document. Please read carefully. If you agree with its provisions, please tick **I accept the terms in the License Agreement** and click Next to proceed.

![](/files/-Mg4eR8ipISLRAfJaW3Q)

**3.** Installer will ask where you would like to install the application.

{% hint style="warning" %}
This directory has to be **a local directory**.
{% endhint %}

![](/files/-MUIU6WySbudaxPm4Bku)

**4.** Next you will be asked where you would like to install the additional data like presets, models, etc.

{% hint style="info" %}
This directory can be **a local directory**, as well as **a remote directory.**
{% endhint %}

![](/files/-MUIUD8xmMK3XVzdnggV)

**5.** Setup Wizard will ask you to confirm earlier provided statements. Click Install to proceed.

![](/files/-MUIUIr_Sy8ocPA6Soi7)

**6.** Now, the installer will perform the actual installation operation. It will automatically register itself in all available Rhino versions as well as add Grasshopper components.

![](/files/-MUIUTDpYSU_8ChMcM-m)

**7.** **Congratulations!** Your installation is completed.&#x20;

![](/files/-MUIUYOe4tdwZg5702NB)

## Remarks

It is possible to change the Data directory path after installation for eg. when you extend your studio's infrastructure and want to move Rhino Nature assets to NAS. It can be found in the local machine registry hive at `HKEY_LOCAL_MACHINE\SOFTWARE\Doliwa Workshop\Rhino Nature\1.0\Install`.


# Licensing

## Overview

This section describes licensing model as well as its handling within the application.

## License

The purchased license is perpetual and applies to the major version. Licensing system is based on a [node-locked licensing](https://en.wikipedia.org/wiki/Node-locked_licensing) model. A node-locked license allows executing software on a designated computer.

### Types

**Trial License** - a time-limited 15-day single-device evaluation license.\
**Single License** - a single-device license.\
**Indie License** - a license for two devices but allowing to run one at a time. Requires revenue less than $100k in the tax year.\
**Volume License** - a license for multiple devices.\
**NFR License** - a license that is granted solely at the discretion and strict conditions.

## Managing License

**Managing license requires running Rhinoceros with administrator rights.**\
Once you download and install Rhino Nature, then launch Rhinoceros you will see the licensing popup.

### Trial

![](/files/-MgSgAbNuts4S94dJiM-)

Clicking `Manage license` will open for you the Options window with the Rhino Nature section selected. At this point you can get a trial license by clicking the `Request trial license` button, an active internet connection is required. In case your device is not allowed to connect to the internet you can request a trial license using another device visiting the [offline trial](https://rhinonature.com/offline-trial/) page and providing Device UID and Request Code obtained after clicking the mentioned button. After that, you need to transfer the license file to the offline device and open it via the License Key area context menu (Right-click → Open).

![](/files/-MgSgFhBKC7x3FDSqYz6)

### Commercial

If you already purchased a commercial license first you need to assign your device to the license. To do that you need to visit the Licenses section in your customer [account](https://rhinonature.com/my-account/) on the Rhino Nature website and open license details using the 🛈 icon next to the license you would like to manage. You will see now a summary of the license and button `Add device` allowing you to assign your device(s) to your license, after clicking it you will be asked to provide your Device UID. It can be copied from the above described section via the Device UID area context menu (Right-click → Copy) and pasted in.

![](/files/-MgV0WAUmxxdIBhHTgRs)

After confirming your Device UID the licensing system will generate the license compatible with your device(s). To load it inside Rhino you can reload Rhino Nature section in an Options window and it will autoload your license from the server. If you have already a different license loaded (e.g. Trial) you can copy/save the new one and paste/open using context menu. To finalize the whole procedure, all you need to do is click the `Activate license` button.


# Getting started

There are three essential steps in order to create your first distribution and start your journey with Rhino Nature. It is really easy, please follow the steps below:

First, add an ecosystem by clicking the Add Ecosystem button.

![](/files/-Mg4ZEZgScKQD8HCZmOS)

Second, add an entity by clicking the Add Entity button and picking the desired object which you want to distribute.

![](/files/-Mg4_8YltAsxliiIM2CN)

Third, add a domain by clicking the Add Domain button and picking the desired object on which you want to distribute the entities.

![](/files/-Mg4_HKQQg8oA6y020og)

**Congratulations!** You have created your first ecosystem. Now you can start playing around with [Distribution](/manual/distribution) and [Transform](/manual/transform) settings to find the look you're after!

{% hint style="info" %}
Notice that most of the commands under the buttons allow picking a few more interesting options in the command prompt, which might be very handy during work.
{% endhint %}

{% hint style="warning" %}
Remember that some of the commands under the buttons (for eg. Add Domain) may need explicit traditional acceptance (hitting enter or right-clicking).
{% endhint %}


# FAQ

## How I can render created scene?

Whatever you create with Rhino Nature can be rendered by any render engine. To do that you simply need to [bake](/manual/ecosystems#buttons-strip) selected ecosystems into the document and make the RN::Export layer visible. By default on the first bake, this layer is set to be hidden to prevent performance issues due to high object counts being placed at once in the scene.

Some [render engines](/requirements#supported-renderers) take advantage of direct [integration](/api/integrations) with Rhino Nature allowing their users to get the most out of both worlds, allowing seamless workflow without any additional manual operations, saving huge amounts of RAM and disk space making your work better and quicker.

## Why is my distribution upside-down?

Every distribution by default follows a [normal](https://en.wikipedia.org/wiki/Normal_\(geometry\)) of the provided domains. In some cases, Rhino can create a surface that looks like every other usual surface, with one difference - its normal is flipped. To change that simply select this object, run [`_Dir`](https://docs.mcneel.com/rhino/7/help/en-us/index.htm#commands/dir.htm?Highlight=dir) command and flip its normal to the desired state.

## Why does my entity not respond to changes of picked geometry?

Whenever you add an entity Rhino Nature is checking the type of picked geometry. In case when regular geometry is provided (extrusion, polysurface, mesh, etc.) it will encapsulate picked geometry into a block behind the scenes. In case when a block is provided it will reuse this block. To change entity geometry or its properties you have to edit the corresponding block. In some circumstances, it may be not present in your scene and you will need first run `_Insert` command, place it in the scene, and then edit.

## Why does my distribution calculate so long?

In some circumstances, it may take much more time to calculate than actually needed. This happens most likely to new users who often forget about optimization like keeping [distribution origin](/manual/distribution#overview) near the average center point of used domains or when a very small distance value is used along with enabled collision detection. Such a setup may be very inefficient as Rhino Nature may create millions of objects and discard most of them. It is very easy to diagnose and fix such things using [statistics](/manual/ecosystems#buttons-strip) as a guide.


# Ecosystems

## Overview

The Ecosystems rollout provides complete control over ecosystem management.

![](/files/-MVSiPiGI1Vu6fn3TRW9)

**Name** - Specifies the name of the ecosystem.\
**Preview** - Controls whether the ecosystem should be previewed in the viewport.\
**Render** - Controls whether the ecosystem should be present in the render.

## Buttons Strip

<img src="/files/-MVRno_taQvagQtI-ENu" alt="" data-size="original">**Add Ecosystem** - Adds a new ecosystem.\ <img src="/files/-MVRnw_hwR892wvOXBi8" alt="" data-size="original">**Delete Ecosystem** - Deletes the selected ecosystem.\ <img src="/files/-MVRo4imeaX-2Fp62HTw" alt="" data-size="original">**Duplicate Ecosystem** - Duplicates the selected ecosystem.\ <img src="/files/-MVRoG1nyTi9gEyDit54" alt="" data-size="original">**Bake Ecosystem** - Bakes the selected ecosystem to the document.\ <img src="/files/-MVRoqlpexv9psvvUhPC" alt="" data-size="original">**Ecosystem Statistics** - Shows the selected ecosystem population metrics.

<img src="/files/-MVRox5GXArjS-O1b10N" alt="" data-size="original">**Open Preset** - Opens the selected preset file.\ <img src="/files/-MVRozgnQhDDtQK2n1Nc" alt="" data-size="original">**Save Preset** - Saves the selected ecosystems to a preset file.\ <img src="/files/-MVRp2Urlw5LO7vEKcWw" alt="" data-size="original">**Library Browser** - Opens the [Library Browser](/manual/library-browser) window.

## Ecosystem Properties

![](/files/-MVSiYdOZoLwOUXan2nB)

**Global Seed** - Specifies the seed value used for distribution evaluation. Changing this value allows creating different variations of the selected ecosystem.


# Entities

## Overview

The Entities rollout allows managing entities of the selected ecosystem.

![](/files/-MVSidQeurGsISwR3rHK)

**Color ID** - Defines the color identifier of the entity.\
**Name** - Specifies the name of the entity.\
**Contribution** - Determines the entity occurrence probability in the distribution.

## Buttons Strip

<img src="/files/-MVRno_taQvagQtI-ENu" alt="" data-size="original">**Add Entity** - Adds a new entity.\ <img src="/files/-MVRnw_hwR892wvOXBi8" alt="" data-size="original">**Delete Entity** - Deletes the selected entity.\ <img src="/files/-MVSYx9yK6sRY2rWcgwD" alt="" data-size="original">**Normalize Contribution** - Normalizes all contribution values.\ <img src="/files/-MVSYzxNGb6EBCrGwzvE" alt="" data-size="original">**Edit Entity** - Allows editing of the selected entity.\ <img src="/files/-MVSZ10qua6l0uSJTEp7" alt="" data-size="original">**Replace Entity** - Replaces the selected entity.\ <img src="/files/-MVSZ4YG81UvCzLOmEf1" alt="" data-size="original">**Adapt Multiple** - Adapts the properties of multiple entities at once.

## Entity Properties

![](/files/-MVSifynuc53RtQZ4N3q)

**Appearance** - Defines the appearance of the selected entity in the viewport preview.\
**Local Size** - Specifies the initial size parameter of the selected entity. It is considered while checking different constraints like [Boundary Check](/manual/scopes#boundary-check) or [Collisions](/manual/distribution/collisions).\
**Local Scale** - Determines the initial scale of the selected entity.\
**Local Offset** - Controls the initial offset of the selected entity along its Z-axis. Useful for eg. when creating leaves layer laying on the lawn.


# Domains

## Overview

The Domains rollout enables managing domains of the selected ecosystem.

![](/files/-MVSinPJ8FwYYvm_VDSs)

**Name** - Specifies the name of the domain.\
**Type** - Indicates the type of the domain. This parameter is not editable.

## Buttons Strip

<img src="/files/-MVRno_taQvagQtI-ENu" alt="" data-size="original">**Add Domain** - Adds a new domain.\ <img src="/files/-MVRnw_hwR892wvOXBi8" alt="" data-size="original">**Delete Domain** - Deletes the selected domain.\ <img src="/files/-MVSZaquv_TwpFhG9fJM" alt="" data-size="original">**Select Domain** - Selects the domain geometry in the document.

## Domain Properties

![](/files/-MVSis2DzXz838ZwmiW-)

**Direction** - Determines in which direction the selected domain should be evaluated.\
**Alignment** - Specifies whether elements should align to the world or follow the domain.

{% hint style="info" %}
Note that **Domain Properties** are only available for the Curve domain type.
{% endhint %}


# Scopes

## Overview

The Scopes rollout allows managing scopes of the selected ecosystem.

![](/files/-MVSm9pAZSJs0I6SQ2Wm)

**Name** - Specifies the name of the scope.\
**Type** - Indicates the type of the scope. This parameter is not editable.

{% hint style="info" %}
The Primary type scope is automatically created based on provided domains. Note that it always appears as first and is not movable.
{% endhint %}

## Buttons Strip

<img src="/files/-MVRno_taQvagQtI-ENu" alt="" data-size="original">**Add Scope** - Adds a new scope.\ <img src="/files/-MVRnw_hwR892wvOXBi8" alt="" data-size="original">**Delete Scope** - Deletes the selected scope.\ <img src="/files/-MVSZaquv_TwpFhG9fJM" alt="" data-size="original">**Select Scope** - Selects the scope geometry in the document.\ <img src="/files/-MVSZhY36bKJFDCIFpZ4" alt="" data-size="original">**Flip Scope Relations** - Changes all affiliation values to the opposite.

<img src="/files/-MVSZjcChOwKvtN1hl7K" alt="" data-size="original">**Move Up** - Moves the selected scope up on the list.\ <img src="/files/-MVSZmKnxITYn2Xezi3q" alt="" data-size="original">**Move Down** - Moves the selected scope down on the list.

## Scope Properties

![](/files/-MVSmHNDacPIRb-dXLXH)

**Affiliation** - Controls whether the selected scope should include or exclude elements.\
**Blending** - Changes the way the falloffs are applied to influenced elements by the selected scope.\
**Thickness** - Specifies the thickness of the selected scope.

{% hint style="info" %}
Note that **Thickness** is only available for the Curve domain type.
{% endhint %}

## Boundary Check

![](/files/-MVSmz5OxZZh5WXMzrsV)

**Type** - Defines the type of boundary check to perform.\
**Size** - Determines the size multiplier of the entity size parameter.\
**Distance** - Specifies the distance from the boundary.

## Leaning

![](/files/-MVSn1A7nPbpQ1nF1iYX)

**Amount** - Determines the leaning influence amount.\
**Distance** - Specifies the leaning influence distance.

## Density & Scale Falloff

![](/files/-MVSnUG9ICyra8Ud2KWx)

The Density & Scale Falloff enables the reduction and scaling of elements based on the provided distance from the scope to achieve more believable and natural edges. Please refer to the [Falloff Graph](/manual/falloff-graph) section for a detailed explanation of its parameters.&#x20;


# Distribution

## Overview

The Distribution rollout supplies all essential elements to fine-tune the population of entities.

![](/files/-MVY0jugN-3s17j58-TN)

## Even

![](/files/-MVY0qHXLjKOZ1YJIYRV)

**Custom Axis** - Determines the distribution projection axis.\
**Distance** - Specifies the distance between entities.\
**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## Grid

![](/files/-MVY1FLp7swOhBY64-hD)

**Custom Axis** - Determines the distribution projection axis.\
**Distance X** - Specifies the distance between entities on X-axis.\
**Distance Y** - Specifies the distance between entities on Y-axis.\
**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## Random

### Uniform

![](/files/-MVY1Jk-fFcP2BomU50T)

**Custom Axis** - Determines the distribution projection axis.\
**Distance** - Specifies the distance between entities.\
**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

### Pure Random

![](/files/-MVY1M7W5cCWBQZbjiCx)

**Custom Axis** - Determines the distribution projection axis.\
**Size** - Specifies the size evaluated by the **Density** parameter.\
**Density** - Specifies the density of entities per provided size square area.\
**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## Vertex

![](/files/-MVY1TEzFyUD6yJ2rxzU)

**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## Face

![](/files/-MVY1WPHgGi9kuw3LbhD)

**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## Sampled

![](/files/-MVY1_hSn_aV1biJJWQd)

**Size** - Specifies the size evaluated by the **Density** parameter.\
**Density** - Specifies the density of entities per provided size square area.\
**Alignment** - Changes the way how the **Orientation** is applied. *Local* - entities are aligned in reference to the local domain, *World* - entities are aligned in reference to the world.\
**Origin** - Defines the origin of the distribution, allowing shifting it in space.\
**Orientation** - Controls the orientation of entites on the domain.

## UV

![](/files/-MVY1gA-b_GXO4X_EbTE)

**UV Type** - Specifies the type of the distribution to be used over UV space. It provides types as [*Even*](/manual/distribution#even), [*Grid*](/manual/distribution#grid)*,* and [*Random*](/manual/distribution#random) that share the same set of parameters as regular types discussed above, excluding one which is not considered in UV space - the **Projection Axis** parameter.


# Density Mapping

## Overview

The Density Mapping rollout enables influencing elements occurrence in the distribution. It can be perceived as masking the distribution elements using a grayscale image map.

![](/files/-MV8VbcGbFQzup0BkS7h)

**Filename** - Defines the path to an image to be used for density mapping.\
**Mapping Type** - Allows choosing between *Simple* and *Individual UV* mapping.\
**Mapping** - Provides simple mapping as well as user-friendly editing.\
**UV Channel** - Determines the UV channel for evaluation.\
**Exponent** - Allows steering the exposure value of the provided map.


# Clustering

## Overview

The Clustering rollout allows grouping elements together. Insanely useful for mimicking phenomena found in the real world, like large patches of dried grass on lawns or weeds clumping. There are three different types of clustering algorithms.

## Procedural

![](/files/-MV8Sk7whnRECebwyH1Z)

**Size** - Specifies the size of the clusters.\
**Fuzz** - Determines the crimping of the cluster shapes.\
**Blur** - Controls the diffusion of the cluster edges.\
**Noise** - Specifies the factor of the introduced random elements.

## Shape

![](/files/-MV8SoDrHW_jhHlE6yvZ)

**Shape** - Defines a shape to be used for clustering.\
**Size** - Specifies the size of clusters.\
**Rotation** - Determines the range of random rotation performed by the defined shape.\
**Scale** - Determines the range of random scaling applied to the defined shape.\
**Blur** - Controls the diffusion of the cluster edges.\
**Noise** - Specifies the factor of the introduced random elements.

## Map

![](/files/-MV8SrNdtWJc54_5OaNH)

**Filename** - Defines the path to an image to be used for clustering.\
**Mapping Type** - Allows choosing between *Simple* and *Individual UV* mapping.\
**Mapping** - Provides simple mapping as well as user-friendly editing.\
**UV Channel** - Determines the UV channel for evaluation.\
**Blur** - Controls the diffusion of the cluster edges. In Map type case, it refers to gradient values treatment.\
**Noise** - Specifies the factor of the introduced random elements.<br>


# Altitude

## Overview

The Altitude rollout provides a layer of control over distribution based on the elevation information.

![](/files/-MUT6B2uysvPJMkWh2tU)

## Limit

![](/files/-MUT6DyRjag0a4l5tRDQ)

**Auto**<img src="/files/-MVMZCjmI-kNh2N2ewfa" alt="" data-size="original">- Automatically calculates the **Minimum** and **Maximum** parameters based on provided [Domains](/manual/domains) in the selected Ecosystem.

**Minimum** - Specifies the lower bound of the altitude range.\
**Maximum** - Specifies the upper bound of the altitude range.

{% hint style="info" %}
The **Minimum** and **Maximum** parameters serve as the beginning and end of the falloff interval. It is worth mentioning that both are used by the falloff regardless of the on-ness state of this constraint.
{% endhint %}

## Density & Scale Falloffs

![](/files/-MUT6JBegHh1HUEVuyK8)

The Density & Scale Falloff enables the reduction and scaling of elements based on the provided Limit parameters. Those may come especially useful when reproducing lower oxygen levels effect in high mountains, where due to its sparse condensation foliage tends to be less prominent. Please refer to the [Falloff Graph](/manual/falloff-graph) section for a detailed explanation of theirs parameters.&#x20;


# Slope

## Overview

The Slope rollout allows steering the occurrence of entities based on the surface angle evaluation.

![](/files/-MUSzAGJFjhNAvCQY3Bb)

## Limit

![](/files/-MUT55tYRbk07_0dv6jb)

**Minimum** - Specifies the lower bound of the slope angle range.\
**Maximum** - Specifies the upper bound of the slope angle range.

{% hint style="info" %}
The **Minimum** and **Maximum** parameters serve as the beginning and end of the falloff interval. It is worth mentioning that both are used by the falloff regardless of the on-ness state of this constraint.
{% endhint %}

## Density & Scale Falloffs

![](/files/-MUT5AwEyhMMgMsFJFpE)

The Density & Scale Falloff enables the reduction and scaling of elements based on the provided Limit parameters. Those may come especially useful when dealing with uneven terrain, as vegetation hardly tends to grow on hillsides. Those can be also used in reverse helping to cover hillsides with rocks. Please refer to the [Falloff Graph](/manual/falloff-graph) section for a detailed explanation of their parameters.&#x20;


# Collisions

## Overview

The Collision rollout enables preventing elements from accidental overlapping.

![](/files/-MUSz1k7vo_SBaPI4UwE)

**Level** - Defines the position of the virtual bounding sphere encapsulating the geometry. Value is expressed as the percentage of the individual entity height.\
**Size** - Influences the size of the virtual bounding sphere encapsulating the geometry. Value is expressed as the percentage of the individual entity size parameter.

{% hint style="warning" %}
Keep in mind that using it isn't a cure for all evil. In a situation where [Distribution ](/manual/distribution)settings are suboptimal, enabling it may bring unnecessary extra workload and impact the performance of the population process without giving better results.
{% endhint %}


# Transform

## Overview

The Transform rollout allows introducing randomness across distributed entities.

![](/files/-MUL5ccPERMWJgl3ChfN)

## Translation

![](/files/-MUL5ccSLnDB7bbpfs8o)

**XYZ Range** - Specifies the range of random translation regarding each axis. Values are expressed as the percentage of the distance between the distributed elements (the only exception is the Z-axis).\
**Z Reference** - Changes the way the translation over the Z-axis is applied. *Local* - refers to the height percentage of each individual entity. *World* - refers to the actual units in the current document.

## Rotation

![](/files/-MUL5ccQhGc55CX_Usb4)

**XYZ Range** - Specifies the range of random rotation regarding each axis. Values are expressed in degrees.\
**Snapping** - It allows snapping rotation to certain angles. Extremely useful when creating tiled patterns.

## Scale

![](/files/-MUL5ccRYFopmL9QY1Rc)

**XYZ Range** - Specifies the range of random scaling regarding each axis. Values are expressed as a percentage of the XYZ dimensions of each individual entity.\
**Ratio Lock** - Provides the ability to scale maintaining entity ratio. *None* - independent scaling along each axis. *XY* - equally scaling along the X and Y-axis, leaving the Z-axis independent. *XYZ* - equally scaling along each axis.

## Mirror

![](/files/-MUL5ccNJPiN_AB3SFMj)

**Horizontal Mirroring** - Enables random mirroring along entity center YZ plane.\
**Vertical Mirroring** - Enables random mirroring along entity center XY plane.


# Field of View

## Overview

The Field of View rollout gives an opportunity to optimize distribution based on the camera parameters.

![](/files/-MUOQPfZrKxb2hP6e9IS)

## Camera

![](/files/-MUOQTcH6wRcphOzgJYu)

Allows the user to specify which camera to use for optimization. The dropdown lists all Named Views provided in the document.

## Limit

![](/files/-MUOQXc8Tax1wgrZ02XB)

**Auto**<img src="/files/-MVMZCjmI-kNh2N2ewfa" alt="" data-size="original">- Automatically calculates the **Far** parameter based on the position of the currently selected camera and provided [Domains](/manual/domains) in the selected Ecosystem.

**Near** - Specifies the distance between the camera and near clipping plane.\
**Far** - Specifies the distance between the camera and far clipping plane.\
**Inflate** - Defines the percentage ratio of the inflation of the camera frustum volume.\
**Offset** - Controls the offset of the camera frustum volume.

{% hint style="info" %}
The **Near** and **Far** parameters serve as the beginning and end of the falloff interval. It is worth mentioning that both are used by the falloff regardless of the on-ness state of this constraint.
{% endhint %}

## Density Falloff

![](/files/-MUOQjYhGXYkywZBMbJi)

The Density Falloff enables the reduction of elements based on the camera position and provided Limit parameters to save memory resources and cut down render times. Please refer to the [Falloff Graph](/manual/falloff-graph) section for a detailed explanation of its parameters. &#x20;

## Constraints

![](/files/-MUOQdKiSXjEH3LXCiJs)

**Look At** - Affects the way the rotation is applied over the distribution. Note that it supports multiple targets, so it is a very handy option to group people or make them focus on certain spots.


# Falloff Graph

## Overview

The Falloff Graph is a concept that is common to all Falloff controls throughout the entire application.\
It allows defining compound graphs by few parameters which are easy to grasp.

![Sample graph presenting individual parameters.](/files/-MUQO8L-5b7xPugTWLvl)

The above compound graph directly translates to the specific values in the control and result as follows.

![Sample graph reflected in Falloff control.](/files/-MUQMgAwHIoEqnJDfnD6)

![Sample graph reflected in actual geometry using Scale Falloff.](/files/-MUSmOlMNndh5AP-EaQV)

## Parameters

**Min Origin** - Specifies the start point of descending part of the graph for lower interval bound. Value refers to the global X-axis between the lower and upper interval bound.\
**Min Extent** - Determines the endpoint of descending part of graph for lower interval bound. Value refers to the local X-axis between **Min Origin** and the lower interval bound.\
**Min Factor** - Adjusts the strength of drop for lower interval bound. Value refers to the global Y-axis.\
**Max Origin** - Specifies the start point of descending part of the graph for the upper interval bound. Value refers to the global X-axis between the lower and upper interval bound.\
**Max Extent** - Determines the endpoint of descending part of the graph for the upper interval bound. Value refers to the local X-axis between **Max Origin** and the upper interval bound.\
**Max Factor** - Adjusts the strength of drop for upper interval bound. Value refers to the global Y-axis.\
**Ramp** - Defines the interpolation curve for slopes of the graph. Available options are *Linear*, *Cubic*, *Cubic Inverse*, and *Smoothstep*.

{% hint style="info" %}
Note that the case where **Min Origin** exceeds **Max Origin** is perfectly valid. In such a situation the graph will become concave as well as extents bounds will flip to midpoint between the two.&#x20;
{% endhint %}


# Settings

## Overview

The Settings tab allows to fine-tune various behaviors and parameters of the application.

![](/files/-MUiHAhn9D7HghDSvBbv)

## General

**Excessive Tracking** - Declares whether all possible changes in the document should be tracked.\
**Popup Dialogs** - Determines if warning popups should be shown to the user.

{% hint style="info" %}
Some of the plugins may change the existing geometry for eg. Displacement or Rounded Edges but will not notify about it so the distribution may not be updated accordingly. **Excessive Tracking** tries to overcome this limitation but may also react to unwanted events like for eg. layer color change.
{% endhint %}

## Display

**Display Limit** - Specifies the number of elements that are previewed in the viewport. Keep in mind that this does not affect the real elements count.\
**Render Preview** - Enables distribution preview during rendering. Leaving this setting disabled save RAM resources for rendering purposes.\
**Default Appearance** - Defines the default appearance of a freshly added Entity.\
**Sample Limit** - Controls the number of samples used for creating point clouds.\
**Object Shading** - Enables shading of preview objects in viewport modes that use shading.\
**Texture Sampling** - Decides whether the entity preview object should use the color identifier or underlying texture for the preview.

{% hint style="warning" %}
Setting the **Display Limit** parameter too high can have a significant impact on overall performance and display framerate. It's recommended to keep it in a reasonable range.
{% endhint %}

## Mechanics

**Primary Scope Default** - Declares the default affiliation state for Primary Scope.\
**Alternate Scope Relation** - Determines whether the newly added scopes should be set in the opposite affiliation state to Primary Scope.

## Library

**User Library Directory** - Specifies the path to the directory where user presets should be kept.


# Library Browser

## Overview

The Library Browser lets to preview and import pre-made presets along with their dependencies based on chosen options.

![](/files/-MUnCMlEFOgvcOoryfp4)

## Directory Tree

The Directory Tree consists of two primary folders and one optional tag. First, the Library is the location of presets folder in the Rhino Nature Data Directory provided during installation. Second, the User Library is the location where user presets are stored. Third, the Custom Directories tag lists all custom folders added by the user. Those can be added or removed using the appropriate buttons above the directory tree.

{% hint style="info" %}
User Library Directory can be changed in the [Settings](/manual/settings) tab.
{% endhint %}

## Preset Grid

The Preset Grid displays previews of available presets for the picked folder in the Directory Tree or matching ones for the asked query in the search bar above it. Its area is divided into three parts. On the top, the **Options Strip** can be found. In the middle, the actual grid is located. The bottom left-hand side contains the description of the currently selected preset, while on the bottom right-hand side the grid size control slider can be found. Right-clicking on selected preset will open the context menu with the ability to edit preset information or to find the file in the file browser. Keep in mind that editing of the factory or content creators presets is locked to prevent accidental data corruption.

## Options Strip

The Options Strip allows choosing import details for the currently picked preset in the Preset Grid. It contains three kinds of options **Renderer**, **Geometry**, and **Material**.

**Renderer** - Declares to which render engine imported materials should be adapted.\
**Geometry** - Specifies what type of geometry should be imported into the document. Usually, full or proxy geometry provided for the supported render engine, though it can be something custom.\
**Material** - Determines how to handle the material assignment if imported one matches another already existing in the document.

{% hint style="info" %}
It's worth mentioning that options for those kinds are preset-driven. It means that the same set of options that is valid for one preset may not be available for another one.
{% endhint %}


# Preset Information

## Overview

The Preset Information dialog allows to provide or edit preset details.

![](/files/-MUnH6FOYgE2zNZhJK9S)

**Name** - Specifies the name of the preset. This is not the same as the file name.\
**Filename** - Determines the path to an image to append as the preview of this preset.\
**Description** - Defines the description of the preset.  It's always good to add few descriptive words.\
**Options** - Enables the user to export models and maps as preset dependencies. Note that these options are disabled during the editing.


# Grasshopper

## Overview

Rhino Nature for Grasshopper takes advantage of Grasshopper's graphical algorithm editor and extends the functionality of Rhino Nature providing several components for its environment.

It is automatically installed during the standard installation process.

![](/files/-MU8eZfFfYy6Fgg2R_CF)


# General Components

## Overview

The General Components category consists of the following components: [Decompose](/manual/grasshopper/general-components/decompose-component), [Evaluate](/manual/grasshopper/general-components/evaluate-component), [Live Link](/manual/grasshopper/general-components/live-link-component)

![](/files/-MU7l9DIvBTT9Z4hWAmF)


# Decompose Component

## Overview

The Decompose Component disassembles the Ecosystem Data object and supplies its child elements.

![](/files/-MU7lPAJjBmGoytpsVuW)

## Inputs

**Ecosystem Data** \[ED] (Generic Data) - List of Ecosystem Data objects provided by the [Live Link Component](/manual/grasshopper/general-components/live-link-component).\
**Index** \[I] (Integer) - Index of Ecosystem Data object to decompose. The default value is set to 0.

## Outputs

**Entity ID** \[EID] (Guid) - List of Entities belonging to decomposed Ecosystem which should be passed to the [Evaluate Component](/manual/grasshopper/general-components/evaluate-component) in order to retrieve detailed information about it.\
**Entity Transforms** \[EXF] (Transform) - Tree of transforms lists belonging to Entities from decomposed Ecosystem.


# Evaluate Component

## Overview

The Evaluate Component supplies detailed information about the Entity.

![](/files/-MU7laZwwcp6W_cBO5ld)

## Inputs

**Entity ID** \[EID] (Guid) - Entity identifier provided by the [Decompose Component](/manual/grasshopper/general-components/decompose-component)

## Outputs

**Name** \[N] (String) - Entity name.\
**Geometry** \[G] (Geometry Base) - List of Geometry objects that builds up the Entity.\
**Material** \[M] (Various) - List of Materials used by Geometry objects of the Entity.

## Menu Options

**Material \[Variable]** - Toggles Material output type between: Name (String), Color (Color), Texture (RenderTexture), Object (RenderMaterial).

![](/files/-MU7nOPzQqQhXCfsDIlN)


# Live Link Component

## Overview

The Live Link Component transfers data structures produced by Rhino Nature to the Grasshopper's environment and keeps them up to date.

![](/files/-MU7nXFeRMw0lHgB4YkB)

## Outputs

**Ecosystem Data** \[ED] (Generic data) - List of Ecosystem Data objects which should be passed to the [Decompose Component](/manual/grasshopper/general-components/decompose-component) in order to retrieve desired internal structures.

## Menu Options

**Display Preview** - Enables or disables Rhino Nature's preview. Usually to prevent overlapping of previewed objects in the Rhino's viewport. This setting is shared across all instances of this component in the Grasshopper document.

![](/files/-MU7zFWMMgfIAN7EJOHz)

## Remarks

Single Live Link Component provides a list of all existing [Ecosystems ](/manual/ecosystems)which are set as Renderable. To achieve the best performance one component should be used per one Grasshopper document.

The component indicates its state with a label attached below it. A connected state means that it successfully linked with Rhino Nature and is receiving data. A disconnected state means that it encountered an issue during linking and isn't receiving data. Usually, because of the not loaded base plugin in Rhino's environment.


# Integrations

## Overview

A summary of a simple yet robust solution to connect Rhino Nature with your application.

## Link

The Rhino Nature Bridge namespace exposes the Link class that provides a set of methods allowing for seamless communication for managed as well as unmanaged code. It is meant to bypass complex Rhino internal structures and focus on the most important elements usable on both ends. In addition to that, it allows performing live updates whenever new data arrives.

The most typical use case is communication between Rhino Nature and a rendering engine. The advantage of this solution is giving your user the ability to render millions of objects using your own instancing routines without overloading system resources as well as the host application. In both cases, managed and unmanaged, it is prepared wisely not to collide with various policies without the need of using external third-party dependencies during the compilation. Communication is done via COM object available to anyone at runtime. There are available header and example files that will boil your work down to the bare minimum, hooking wires to appropriate places. Those are supplied along with the installer and are located under the API subfolder in the installation directory.

If you need assistance during integration don't hesitate to drop an email at [support@rhinonature.com](mailto:%20support@rhinonature.com).


