**Bella for Rhino** Version 22.3.0 [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) | [Discord](https://discord.gg/DqCAvAXH6C) 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 Rendered & Bella viewport modes](vp-materials.png) Though translation of native Rhino materials & textures is supported, you should prefer to use Bella materials and textures directly, for maximum control. The user interface for Bella materials has also been designed to avoid some of the lag commonly seen when using Rhino materials. 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, which will generally yield superior rendering performance, and keep Rhino free, for you to keep working on your model. The currently-supported versions of Rhino are 6 and 7. Note that though Bella natively supports Apple Silicon, as of the time of this writing Rhino does not, so if you are on an Apple Silicon machine, you should definitely perform final rendering in Bella GUI. ## Scope This document pertains specifically to Bella for Rhino, and does not cover 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 in the [Bella GUI](../bella_gui/index.html) 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 the 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. Cameras =================================================================================================== 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 *A+S (Modulate ISO)* mode, which allows adjustment of EV, ISO, and fStop, without affecting the exposure. Since it operates by modifying the ISO, this also allows exposure adjustments without causing the IPR to restart. ![Cameras Tutorial](https://www.youtube.com/watch?v=TzvpMswNUEQ) ## Focus Mode The camera supports three focus modes: Pinhole, Manual, and Objects. ### Pinhole This completely disables DOF (Depth of Field) and causes all objects to render in focus. ### Manual when Distance is set to zero this uses the focus distance from the associated Rhino camera, and otherwise uses the specified focus distance. The distance may be picked from the model by clicking the small button at the right and choosing some point. ### Objects In this mode, focus distance is automatically computed from the distance of the camera to a set of selected objects. In this mode, the Distance value is used as a percentage for setting the focus distance to some point between the near & far distances of the specified objects. This mode is also interactive, in that it will recompute based on the current camera position, as you move the camera. 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 *Bella Materials* and *Bella Material-related*. !!! NOTE: the RDK requires that a plugin represent its types as either *Environment*, *Material*, or *Texture*, and this is the reason we have various non-materials showing up as "materials". We realize this is confusing, but there is currently no way around it. ## Common attrs At the top of the interface, all materials expose a common set of attributes: Type | Info ---------------------|-------------------------- Opacity | Controls the overall opacity of the material as a whole. Normal | Connect a *Bump* or *Normal* map to produce bump effects across the material surface. Priority | Controls behavior for nested dielectrics. Material ID | Controls the color used for the *Material* pass. Viewport shader | Allows using any texture to override the appearance of the material in viewports. [Common material attributes.] ## Materials Various material types are provided, some being substrates typically used in conjunction with Bella Layer and other nodes, and others (PBR, Uber) exposing a typical standard material interface, familiar to users of other rendering software. ![](materials.png) Type | Info ---------------------|-------------------------- Blend | This material allows blending and stacking of other materials, by percentage or texture. 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. Diffuse | An opqaue substrate that uses the Oren-Nayar model. This also supports addition 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. PBR | A material that provides easy use of commonly-available PBR texture sets. 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*. Uber | A typical "Uber" type material that allows building a material by setting the weight of various sub-components. [Core materials.] ## Material-related These are not technically materials, but must be represented as such due to the design of Rhino's RDK. 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 & Normal Map To use a bump or normal map it is necessary to connect a *Bump map* or *Normal Map* node to a material's *Normal* input. These are much like the file texture node, but they contain the code necessary for bending an object's normals according to the specified texture. 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. Object properties =================================================================================================== The plugin adds a Bella-specific page to Rhino's Object Properties window: ![](object-props.png) Here, it is possible to use the *Render As* property to have Bella render a mesh not as a mesh, but as some other native built-in Bella type, such as sphere or plane. !!! NOTE: it can be especially advantageous to render mesh lights as planes or disks, for increased render speed. It is also possible to enable the various Bella Render Flags using this panel. 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 somewhat increased by doing so. !!! In Rhino 7, we have observed that 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.