Renders a raytraced version of the displayed rgl scene, using the `rayrender` package. User can specify the light direction, intensity, and color, as well as specify the material of the ground and add additional scene elements.

Note: This version does not yet support meshes with missing entries (e.g. if any NA values are present, output will be ugly and wrong).

render_highquality(filename = NULL, light = TRUE,
  lightdirection = 315, lightaltitude = 45, lightsize = NULL,
  lightintensity = 500, lightcolor = "white", cache_filename = NULL,
  width = NULL, height = NULL, title_text = NULL,
  title_offset = c(20, 20), title_color = "black", title_size = 30,
  title_font = "sans", title_bar_color = NULL, title_bar_alpha = 0.5,
  ground_material = diffuse(), scene_elements = NULL,
  camera_location = NULL, camera_lookat = c(0, 0, 0), clear = FALSE,
  print_scene_info = FALSE, ...)



Filename of saved image. If missing, will display to current device.


Default `TRUE`. Whether there should be a light in the scene. If not, the scene will be lit with a bluish sky.


Default `315`. Position of the light angle around the scene. If this is a vector longer than one, multiple lights will be generated (using values from `lightaltitude`, `lightintensity`, and `lightcolor`)


Default `45`. Angle above the horizon that the light is located. If this is a vector longer than one, multiple lights will be generated (using values from `lightdirection`, `lightintensity`, and `lightcolor`)


Default `NULL`. Radius of the light(s). Automatically chosen, but can be set here by the user.


Default `500`. Intensity of the light.


Default `white`. The color of the light.


Name of temporary filename to store OBJ file, if the user does not want to rewrite the file each time.


Defaults to the width of the rgl window. Width of the rendering.


Defaults to the height of the rgl window. Height of the rendering.


Default `NULL`. Text. Adds a title to the image, using magick::image_annotate.


Default `c(20,20)`. Distance from the top-left (default, `gravity` direction in image_annotate) corner to offset the title.


Default `black`. Font color.


Default `30`. Font size in pixels.


Default `sans`. String with font family such as "sans", "mono", "serif", "Times", "Helvetica", "Trebuchet", "Georgia", "Palatino" or "Comic Sans".


Default `NULL`. If a color, this will create a colored bar under the title.


Default `0.5`. Transparency of the title bar.


Default `diffuse()`. Material defined by the rayrender material functions.


Default `NULL`. Extra scene elements to add to the scene, created with rayrender.


Default `NULL`. Custom position of the camera. The `FOV`, `width`, and `height` arguments will still be derived from the rgl window.


Default `NULL`. Custom point at which the camera is directed. The `FOV`, `width`, and `height` arguments will still be derived from the rgl window.


Default `FALSE`. If `TRUE`, the current `rgl` device will be cleared.


Default `FALSE`. If `TRUE`, it will print the position and lookat point of the camera.


Additional parameters to pass to rayrender::render_scene()


#Render the volcano dataset using pathtracing
volcano %>% sphere_shade() %>% plot_3d(volcano,zscale = 2) render_highquality()
#Change position of light
render_highquality(lightdirection = 45)
#Change vertical position of light
render_highquality(lightdirection = 45, lightaltitude=10)
#Change the ground material
render_highquality(lightdirection = 45, lightaltitude=60, ground_material = rayrender::diffuse(checkerperiod = 30, checkercolor="grey50"))
#Add three different color lights and a title
render_highquality(lightdirection = c(0,120,240), lightaltitude=45, lightcolor=c("red","green","blue"), title_text = "Red, Green, Blue", title_bar_color="white", title_bar_alpha=0.8)
#Change the camera:
render_camera(theta=-45,phi=60,fov=60,zoom=0.8) render_highquality(lightdirection = c(0), title_bar_color="white", title_bar_alpha=0.8)
#Add a shiny metal sphere
render_camera(theta=-45,phi=60,fov=60,zoom=0.8) render_highquality(lightdirection = c(0,120,240), lightaltitude=45, lightcolor=c("red","green","blue"), scene_elements = rayrender::sphere(z=-60,y=0, radius=20,material=rayrender::metal()))
#Add a red light to the volcano and change the ambient light to dusk
render_camera(theta=45,phi=45) render_highquality(lightdirection = c(240), lightaltitude=30, lightcolor=c("#5555ff"), scene_elements = rayrender::sphere(z=0,y=15, x=-18, radius=5, material=rayrender::diffuse(color="red", lightintensity=10, implicit_sample=TRUE)))
#Manually change the camera location and direction
render_camera(theta=45,phi=45,fov=90) render_highquality(lightdirection = c(240), lightaltitude=30, lightcolor=c("#5555ff"), camera_location = c(50,10,10), camera_lookat = c(0,15,0), scene_elements = rayrender::sphere(z=0,y=15, x=-18, radius=5, material=rayrender::diffuse(color="red", lightintensity=10, implicit_sample=TRUE)))