LogoLogo
  • TABLE OF CONTENTS
  • General Concepts
    • Overview
    • Introduction to Rendered.ai
    • The Rendered.ai Platform
    • Who Uses Rendered.ai?
    • Rendered.ai Licensing and Offerings
  • Application User Guides
    • Overview
    • Quick Start Guide
      • Terminology
      • Content Codes
      • Getting Started with the SDK
    • Tutorials
      • Organization and Workspace Resources
      • Creating and Using Graphs
        • Graph Validation
        • Graph Best Practices
      • Creating and Using Datasets
        • Dataset Annotations
        • Dataset Analytics
        • Domain Adaptation
        • Dataset Comparison
        • Training and Inference
        • Mixing Datasets
        • Dataset Best Practices
      • Creating and Using Volumes
        • Inpaint Service
      • Collaboration
  • Development Guides
    • Overview
    • Ana Software Architecture
      • Basic components
      • Graphs
      • Channels
      • Packages
      • Package Volumes
      • Nodes
      • Schema
      • Ana Modules, Classes, and Functions
      • The anatools Package
      • Graph Validation
        • Typical Validation Use Cases
      • Preview
      • In-tool Help
    • Setting Up the Development Environment
      • Local Development With NVIDIA GPUs
      • Remote Development With AWS EC2
    • Deploying a Channel
    • An Example Channel - Toybox
      • Run and Deploy the Toybox Channel
      • Add a Modifier Node
      • Add a Generator Node
  • Open Source Channels
    • Toybox
    • DIRSIG Channel
  • Release Notes
    • Rendered.ai Platform
      • Platform Version 1.6.0
      • Platform Version 1.5.0
      • Platform Version 1.4.1
      • Platform Version 1.4.0
      • Platform Version 1.3.2
      • Platform Version 1.3.1
      • Platform Version 1.3.0
      • Platform Version 1.2.6
      • Platform Version 1.2.5
      • Platform Version 1.2.4
      • Platform Version 1.2.3
      • Platform Version 1.2.2
      • Platform Version 1.2.1
      • Platform Version 1.2.0
      • Platform Version 1.1.5
      • Platform Version 1.1.4
      • Platform Version 1.1.3
      • Platform Version 1.1.2
      • Platform Version 1.1.1
      • Platform Version 1.1.0
      • Platform Version 1.0.3
      • Platform Version 1.0.2
      • Platform Version 1.0.1
      • Platform Version 1.0.0
      • Platform Version 0.3.4.4
      • Platform Version 0.3.4.3
      • Platform Version 0.3.4.2
      • Platform Version 0.3.4.1
      • Platform Version 0.3.4
      • Platform Version 0.3.3.1
      • Platform Version 0.3.3
      • Platform Version 0.3.2.2
      • Platform Version 0.3.2.1
      • Platform Version 0.3.2
      • Platform Version 0.3.1.6
      • Platform Version 0.3.1.5
      • Platform Version 0.3.1.4
      • Platform Version 0.3.1.3
      • Platform Version 0.3.1.2
      • Platform Version 0.3.1
      • Platform Version 0.3.0.9
      • Platform Version 0.3.0.8
      • Platform Version 0.3.0.7
      • Platform Version 0.3.0.6
      • Platform Version 0.3.0.5
      • Platform Version 0.3.0
      • Platform Version 0.2.15
      • Platform Version 0.2.14
      • Platform Version 0.2.13
      • Platform Version 0.2.12
      • Platform Version 0.2.11
      • Platform Version 0.2.10
      • Platform Version 0.2.9
      • Platform Version 0.2.8
      • Platform Version 0.2.7
      • Platform Version 0.2.6
      • Platform Version 0.2.5
      • Platform Version 0.2.4
      • Platform Version 0.2.3
      • Platform Version 0.2.2
      • Platform Version 0.2.1
      • Platform Version 0.2.0
Powered by GitBook
On this page
  • Rendered.ai Channel Architecture
  • Toybox Modules
  • Variation by User Provided Data
  • User Experience
  • Using the Source Code
Export as PDF
  1. Open Source Channels

Toybox

Starting With the Toybox Source Code to Create Custom Channels

PreviousAdd a Generator NodeNextDIRSIG Channel

Last updated 6 months ago

The Toybox channel uses Blender for physics-based image simulation and 3D modeling. The Toybox source code can serve as a starting point to create custom synthetic data applications utilizing key Rendered.ai features.

Source Code:

Synthetic data engineers can use the Toybox channel source code to learn how Rendered.ai channels are used to control scene objects, lights, cameras, as well as custom metadata collection. The Toybox channel has nodes that randomize the 3D scene for any run on the Rendered.ai platform, including, changing the color of objects and performing a gravity simulation. Additionally, the source code contains examples of node tool tips and graph validation rules that help guide the user create graphs.

Rendered.ai Channel Architecture

Terms used when discussing channel development are detailed in the Ana Software Architecture of the Development Guides

In particular, it is useful to be familiar with packages, package volumes, nodes, schema, and base classes.

The Toybox channel uses several common nodes for random numbers and data volume access. The full list of common nodes from the anatools package are documented here:

Toybox Modules

Channels can implement randomization for dataset generation with Blender scene composition, rigid body simulation, and rendering. Channel developers design what randomization control should be exposed to the user vs hard coded in the node logic. Users control randomization by choosing nodes and setting node inputs. For example, the Toybox channel allows users to control the height and roll of the camera, but not the X, Y offset. The offsets are also randomized, but the limits were chosen to be estimated in the channel code to maximize their range for an expected result.

The “object_generators” module makes use of Rendered.ai object generators, factories that instantiate objects as needed for a given run. Similarly, the “color_variation_modifier” module makes use of Rendered.ai modifier generators.

The “random_placement” module contains two different placement nodes that uses Blender’s rigid body world settings to achieve natural placement of the toys as if dropped under the influence of gravity. One node one scatters the toys on the floor, the other drops them into a container.

The “simulate” module contains a nodes for Blender lights, cameras, and the Render node, which is required for all graphs. The Render node inputs the object of interest to be annotated, sets up the Blender compositor, and renders images and truth masks.

Variation by User Provided Data

Rendered.ai graphs can run on user uploaded data, including 3D models. To accommodate this, the Toybox channel uses two nodes from the common package: “VolumeFile” and “VolumeDirectory”. These access workspace volumes and allow users to add their Blender objects to a graph for synthetic data generation.

User Experience

Channel developers configure the channel UX in the node schema. The node schema stores node tooltips, field descriptions, and graph validation.

The following screenshot of a graph in the Toybox channel shows the Color Variation node without a required link to the “Generators” field. This shows the user the graph will not run and why.

Using the Source Code

The Developer Guide has tutorials on adding modifiers and object generators to the Toybox channel.

To navigate the code, start by setting up a development environment as described in

In the development environment, channels can be edited and deployed to a Rendered.ai organization.

https://github.com/Rendered-ai/toybox
Basic components
Packages
Package Volumes
Nodes
Schema
Ana Modules, Classes, and Functions
The anatools Package
Schema
Graph Validation
An Example Channel - Toybox
Setting Up the Development Environment
Setting Camera Height and Roll
Three Nodes Form the "Simulate" Module
UX for a Case of a Missing Required Input