knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%", cache = TRUE, fig.width=4, fig.height=4, dpi=200 )
raybonsai: Generate 3D procedural trees in R, rendered with rayrender! Procedural generation code based on the flametree package by Danielle Navarro.
You can install raybonsai with the remotes package:
remotes::install_github("tylermorganwall/raybonsai")
There are currently only two user-facing functions in raybonsai: generate_tree()
and render_tree()
. generate_tree()
generates a tree that follows a certain set of constraints that you set and returns a rayrender scene describing the tree. render_tree()
automatically adds ground, sets up lighting, and sets up the camera so the tree is in frame, but is otherwise just a light wrapper around rayrender's render_scene()
function.
Here are some examples:
library(raybonsai) library(rayrender) generate_tree() %>% render_tree(width=800, height=800)
Change the branch angles and depth of the tree:
generate_tree(seed = 4321, branch_angle_vert = seq(-10,20,by=1), branch_depth = 8, leaf_color = "yellow", leaf_depth_start = 5) %>% render_tree(width=800, height=800)
Adjust the colors of the ground and the tree:
generate_tree(seed = 20, branch_angle = c(-30,0, 30), branch_scale = c(0.9,1), branch_depth = 7, leaf_color = "chartreuse4", leaf_depth_start = 5, branch_color = "tan") %>% render_tree(ground_color1 = "darkgoldenrod4", ground_color2 = "chocolate4", width=800, height=800)
Add your own lighting using rayrender:
generate_tree(seed = 222, branch_angle = c(-20, 20), branch_scale = c(0.8,0.9), branch_split = 3, branch_depth = 6 , leaf_color = "chartreuse4", leaf_depth_start = 5, branch_color = "tan") %>% add_object(sphere(x=5,y=1,radius=1,material=light(color="magenta",intensity = 30))) %>% add_object(sphere(x=-5,y=1,radius=1,material=light(color="dodgerblue",intensity = 30))) %>% render_tree(lights = FALSE, ground_color1 = "grey50",ground_color2 = "grey50", width=1200,height=800)
Add environment lighting with HDR images:
generate_tree(seed = 222, branch_angle = c(-20,20), branch_scale = c(0.8,0.9), branch_depth = 10 , leaf_color = "chartreuse4", leaf_depth_start = 5, branch_color = "tan") %>% render_tree(lights = FALSE, environment_light = "~/Desktop/hdr/kiara_3_morning_2k.hdr", width=1200, height=800)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.