**Bella for Rhino** Version 20.15 [Bella for Rhino](../bella_rhino/index.html) | [Bella for Maya](../bella_maya/index.html) | [Bella for SketchUp](../bella_sketchup/index.html) | [Bella GUI](../bella_gui/index.html) | [Bella CLI](../bella_cli/index.html) | [Bella Core](../bella/index.html) | [Tutorials](../../tutorials) | [Node Definitions](../nodes/index.html) | [Main site](https://bellarender.com) | [Forums](https://bellarender.com/forums) Introduction =================================================================================================== Bella for Rhino integrates Bella directly into Rhino, allowing for interactive rendering of scenes while they are being created and edited. The main way of using Bella inside Rhino is by setting a viewport to use the *Bella* display mode: ![Bella materials in the Bella & Rendered viewport modes](vp-materials.png) Though translation of native Rhino materials & textures is supported, you may use Bella materials and textures, for maximum control. It is possible to work entirely within Rhino, but the plugin also bundles the [Bella GUI](../bella_gui/index.html), for rendering outside of Rhino, if such a workflow is preferred. The currently-supported versions of Rhino are verions 6 and 7 WIP. ## Scope This document intends to explain specifically about Bella for Rhino, not about general Bella concepts, for which you should refer to the [core Bella](../bella/index.html) and [node definition](../nodes/index.html) documentation. For information on Bella licensing, and how to install your Bella license, see [Licensing](../bella_gui/index.html) in the Bella GUI documentation. Installation =================================================================================================== To install Bella for Rhino, download the package appropriate for you operating system (.zip for Windows, .dmg for MacOS) and follow these steps: ## Windows 1. Download the .zip file and unzip it on your desktop. 2. Double-click the *bella_rhino.rhi* file. 3. The Rhino Installer will be shown, follow the instructions. !!! If you encounter any error when attempting to start Bella GUI, download and install Microsoft Visual C++ runtime from the [downloads page](https://bellarender.com/downloads). ## MacOS 1. Download the .dmg file and double-click to mount it. 2. Double-click the bella_rhino.macrhi file inside. 3. Rhino will install the plugin. 4. As instructed, close Rhino and restart it. Render Settings =================================================================================================== First of all, you should set the current renderer to Bella: !(render-settings.png) This ensures that Rhino will use Bella for rendering, generating material & texture previews, and so forth. ## Resolution Output resolution is controlled in the standard Rhino way, using the settings in the *Resolution & Quality* section. ## Backdrop When set to *Solid color* or *Gradient* the scene will be rendered using Bella's *Color Dome* in the background. When set to *360° Environment* the scene will be rendered using a translation of the chosen Rhino environment, which will be an *Image Dome* or *Color Dome* depending if an HDRI is set, or a physical sky, when set to use a *Bella Sky Dome* environment. It is possible to render with no background by choosing the *No Environment* option in the drop-down list, and it is possible to use a custom environment for reflections & refractions by checking the *Use custom environment for reflections* box. ## Lighting Sun in Bella is controlled using the *Sun* checkbox and settings. The date & time set in Rhino's sun settings will also be used to set the date & time of a *Bella Sky Dome* if one is used. If you do not check the *Skylight (360° env.)* box, then Rhino will create a directional light that *"looks over the camera's shoulder"*. This often does not look very nice, and we do not recommend it. Otherwise scene illumination will either use the same environment set in the *Backdrop* section, or a custom one, if you check the *Use custom environment for skylighting* box. ## Output & Solver Settings in this section control the production rendering (as opposed to IPR in the viewport). This applies both to rendering within Rhino using the *Render* command, and to rendering externally in Bella GUI. *Output Name* allows writing BSX/BSZ files to a name different from the current Rhino file. You may use the *$cam* macro here, to generate output names based on the name of view. Camera =================================================================================================== Each Rhino viewport is given a corresponding set of Bella camera parameters: ![Bella camera settings](objprops-camera.png) It is generally recommended to use the automatic *Aperture Priority* mode, which allows adjustment of EV, ISO, and fStop, without affecting the exposure. ## Focal blur Bella uses the focal blur settings from Rhino's *Focal Blur* panel: !(objprops-focalblur.png) !!! The Rhino *Sample count* and *Jitter* parameters have no meaning in Bella, so they do not have any effect. *No focal blur* uses a numerically-high fStop value to avoid visible DOF (*Depth of Field*): !(no-focal-blur.png) *Autofocus on selected objects* tracks the current object selection, and sets the camera focus distance accordingly. Depth of field is controlled by the *fStop* parameter in the Bella camera settings panel in this mode: !(focus-selected.png) *Manual focus* uses an explicit focus distance and fStop. Though this allows very precise focus, note that Rhino does not do anything to adjust it interactively as you zoom in/out, so it also makes it easy to get an out-of-focus shot. !(focus-manual.png) Materials =================================================================================================== Rhino materials may be used, but it is recommended to use Bella materials: ![Main Bella material types](materials-main-types.png) More esoteric Bella materials are available by clicking the *More Types...* menu item: ![Main Bella material types](materials-all-types.png) As shown above, material types are categorized into *Core*, *Smart*, and *Material-related*. ## Common attrs All materials have a set of common attributes: !(materials-common.png) Type | Info ---------------------|-------------------------- Opacity | Controls the overall opacity of the material as a whole. Normal | Connect a *Bump* or *Normal* map to produce bumping effects. Priority | Controls behavior for nested dielectrics. Material ID | Controls the color used for the *Material* pass. [Common material attributes.] ## Core Core materials are the most fundamental Bella materials, the basic building blocks from which more complex materials are created. !(core-materials.png) Type | Info ---------------------|-------------------------- Conductor | An opaque substrate with roughness going from metallic to diffuse. Commonly used with high (e.g. 90%) roughness and a *Layer* to produce a plastic type material. Dielectric | A semi-opaque substrate that represents liquids, glasses, gems, etc. Supports use of a *Layer* which may be useful for adding fingerprints and such. Complex | Uses embedded or custom IOR (*index of refraction*) data to define the material. Like *Conductor* & *Dielectric*, this supports use of a *Layer*. Emitter | A material that emits light from meshes to which it is assigned. Output power may be specified in several types of real world units. Lambert | A pure lambertian (perfectly diffuse) opaque substrate. Oren-Nayar | An opqaue substrate that uses the Oren-Nayar model. This also supports addition of a *Layer*. Sheet | This is a *Layer* with no substrate, useful for windows with no refraction, etc. Subsurface | A translucent substrate that implements random walk subsurface scattering. This has a diffuse surface, over which may be added a *Layer*. [Core materials.] ## Smart Smart materials are simple, specific material types, which expose a minimal number of parameters. !(smart-materials.png) Type | Info ---------------------|-------------------------- Ceramic | A ceramic material with adjustable roughness & specularity. Glass | A glass material with adjustable roughness & index of refraction. Note that this requires realistic scene scale, since the absorption of glass depends on section thickness. Metal | A metal material that allows either custom color, or one of several preset complex IOR types. Plastic | A plastic material with adjustable roughness & specularity. Polypropylene | A material using dielectric & volumetric SSS to simulate a polypropylene plastic material. Has adjustable transparency & roughness. Urethane | A material using fast thin SSS to approximate a urethane rubber. Has adjustable translucence and roughness. Water | A dielectric that simulates water, with realistic absorption (so requires correct scene scale). [Smart materials.] ## Material-related These are not technically materials, but must be represented as such due to the design of Rhino's SDK. They are used in the process of building materials using the *Core* material types. !(material-related.png) Type | Info ---------------------|-------------------------- Emitter Projector | May be referenced by an emitter, to focus emission within a given aperture angle. In some cases this can drastically reduce wasted effort, and speed up rendering. Filter Caustics | May be referenced by an emitter, to control which types of caustics it is allowed to produce. Layer | May be placed over a substrate, to simulate a thin dielectric layer, with realistic simulated micro-thickness, and optional subsurface scattering within the thin layer. Ramp In Out | May be referenced in an emitter, to control falloff. Scattering | May be referenced by a *Dielectric* or *Layer*, to add subsurface scattering. Thin Film | May be referenced by a substrate or *Layer*, to produce thin-film interference effects. [Material-related nodes.] Textures =================================================================================================== Bella provides several texture types: !(bella-textures.png) Some of these are self-explanatory, while others are used in conjunction with other textures. Where applicable, a texture has a *UV Coord* input, which may be connected to a *Texform* node, to allow altering repeat/offset/etc. Such textures also usually have a *UV Channel* input, which allows selecting a specific set of UV coordinates, for when an object has had multiple texture mappings applied. ## File Texture Though you may use a Rhino texture to reference a file, the *Bella File Texture* gives you control over several Bella-specific attributes: !(file-texture.png) ## Texform A *Texform* is not a texture, as such, and is rather used to apply specific repeat/offset/etc values to an actual texture. !(texform.png) ## RGB Xform Like *Texform*, *RGB Xform* is not a texture of its own, and is rather used to change hue/saturation/etc of another texture. !(rgbxform.png) ## Bump Map Though it is possible to connect any texture directly to a material's *Normal* attribute, it is recommended to connect it through a *Bump map* node, in order to give control over the bump strength, and optionally, to connect the output of another bump map: !(bump-map.png) ## Normal Map To use a normal map it is necessary to connect a *Normal Map* node to a materials' *Normal* input, and then connect a texture to the Normal map's *Map* input. This gives control over the normal map strength, as well as whether to interpret the normal map with flipped X, Y, or wide-range Z values. !(normal-map.png) Lights =================================================================================================== In addition to supporting mesh-based emitters through the *Emitter* material type, Bella for Rhino also supports most native Rhino light types: Type | Info ---------------------|-------------------------- Spot | Translated as a Bella *Spot* light. Point | Translated as a Bella *Point* light. Directional | Translated as a Bella *Directional* light. Rectangular | Translated as a Bella *Area* light. Linear | Not currently supported. [Rhino lights.] All of these are analytical Bella lights, with good rendering performance, as compared to mesh- based lights with non-trivial triangle counts. Rendering =================================================================================================== The plugin supports rendering directly in Rhino viewport, via the Rhino *Render* command, and externally, in Bella GUI. ## In Viewport (IPR) ## To render in a viewport using Bella IPR (*Interactive Preview Render*), select *Bella* from the viewport menu: !(displaymode-menu.png) The scene will be processed and rendered in the viewport: ![Model by Jorgen Holo, using Rhino 7 SubDs.](displaymode-bella.png) As with any Rhino display mode, you may navigate the camera, add/remove/edit objects, apply modifiers, and so forth, with the model being updated interactively. !!! Though you can render to high quality directly in IPR, it is primarily intended for previewing as you work with the model. For final rendering it will usually be preferable to send the model to the Bella GUI. ## In Rhino ## To render inside Rhino, you may use the standard Rhino *Render* (or *RenderWindow/etc*) command. ![Render window](render-window.png) However, it is recommended to render outside Rhino in Bella GUI, since this allows you to keep working inside of Rhino, and because rendering performance is slightly increased by doing so. !!! In Rhino 7, the *Gamma* box may be checked by default, and should generally be un-checked, since Bella handles color space internally. ## In Bella GUI ## To send the model to Bella GUI, just make sure the desired viewport is selected, and click the only button in the Bella toolbar: !(toolbar.png) Left-clicking this will export the model to a BSX file and open it in Bella GUI, for production rendering. Right-clicking it does the same, but writes a BSZ file, which bundles the BSX file along with all referenced resources, so you can easily move it to another machine.