From ce948ebcc6c42470f59bc6b3c27271b56b4477a3 Mon Sep 17 00:00:00 2001 From: Ryan Timpe Date: Thu, 13 Jun 2019 15:39:17 -0400 Subject: [PATCH] User-specified 3D brick resolution. Defaults to 15px per side (default from before). 30 looks good. --- DESCRIPTION | 2 +- R/bricks_to_3d.R | 10 +++++----- man/brickr-ggproto.Rd | 4 ++-- man/display_bricks.Rd | 4 ++-- man/geom_brick_point.Rd | 5 +++-- man/layer_from_bricks.Rd | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 4f582c6..3d14927 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: brickr Title: Create Simulated LEGO Models from Images or Data Frames -Version: 0.0.0.9200 +Version: 0.0.0.9302 Authors@R: person(given = "Ryan", family = "Timpe", diff --git a/R/bricks_to_3d.R b/R/bricks_to_3d.R index f4b0f4c..931a6a3 100644 --- a/R/bricks_to_3d.R +++ b/R/bricks_to_3d.R @@ -5,7 +5,7 @@ #' @return A list with elements \code{threed_elevation} and \code{threed_hillshade} to created 3D mosiacs with the \code{rayshader} package. #' @export #' -layer_from_bricks <- function(brick_list, lev=1){ +layer_from_bricks <- function(brick_list, lev=1, brick_size = 15){ #Get previous data in_list <- brick_list @@ -19,7 +19,7 @@ layer_from_bricks <- function(brick_list, lev=1){ up_el = (lev-1)*3 #Number of 'pixels' on a side of a single-stud brick. I think this should be fixed for now - ex_size <- 15 + ex_size <- brick_size lego_expand <- img_lego %>% dplyr::select(Level, x, y, Lego_name, Lego_color) %>% @@ -112,7 +112,7 @@ layer_from_bricks <- function(brick_list, lev=1){ #' @return 3D brick model rendered in the 'rgl' package. #' @export #' -display_bricks <- function(brick_list, view_levels = NULL, +display_bricks <- function(brick_list, view_levels = NULL, brick_size = 15, solidcolor = "#a3a2a4", ...){ #Requires Rayshader if (!requireNamespace("rayshader", quietly = TRUE)) { @@ -131,10 +131,10 @@ display_bricks <- function(brick_list, view_levels = NULL, } for(ii in view_levels){ - brick_layer <- brick_list %>% layer_from_bricks(ii) + brick_layer <- brick_list %>% layer_from_bricks(ii, brick_size = brick_size) brick_layer$`threed_hillshade`%>% - rayshader::plot_3d(brick_layer$`threed_elevation`, zscale=0.167, solid = FALSE, + rayshader::plot_3d(brick_layer$`threed_elevation`, zscale=0.167*(15/brick_size), solid = FALSE, solidcolor=solidcolor, shadow = FALSE, ...) } diff --git a/man/brickr-ggproto.Rd b/man/brickr-ggproto.Rd index 83ec994..679baaf 100644 --- a/man/brickr-ggproto.Rd +++ b/man/brickr-ggproto.Rd @@ -16,9 +16,9 @@ GeomBrickKnob resizingTextGrob(...) -\method{drawDetails}{resizingTextGrob}(x, recording = TRUE) +drawDetails.resizingTextGrob(x, recording = TRUE) -\method{preDrawDetails}{resizingTextGrob}(x) +preDrawDetails.resizingTextGrob(x) GeomBrickKnobText diff --git a/man/display_bricks.Rd b/man/display_bricks.Rd index dca669c..f040680 100644 --- a/man/display_bricks.Rd +++ b/man/display_bricks.Rd @@ -4,8 +4,8 @@ \alias{display_bricks} \title{Build 3D brick model with rayshader.} \usage{ -display_bricks(brick_list, view_levels = NULL, solidcolor = "#a3a2a4", - ...) +display_bricks(brick_list, view_levels = NULL, brick_size = 15, + solidcolor = "#a3a2a4", ...) } \arguments{ \item{brick_list}{List output from collect_bricks(). Contains an element \code{Img_lego}.} diff --git a/man/geom_brick_point.Rd b/man/geom_brick_point.Rd index 6d27c41..11ff939 100644 --- a/man/geom_brick_point.Rd +++ b/man/geom_brick_point.Rd @@ -6,8 +6,9 @@ \usage{ geom_brick_point(mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., label = "LEGO", - simplified_threshold = 24 * 24, linejoin = "mitre", na.rm = FALSE, - show.legend = NA, inherit.aes = TRUE) + simplified_threshold = 24, size = 1, stud_scale = 6/5, + linejoin = "mitre", na.rm = FALSE, show.legend = NA, + inherit.aes = TRUE) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[=aes]{aes()}} or diff --git a/man/layer_from_bricks.Rd b/man/layer_from_bricks.Rd index 1202ff9..b3c2975 100644 --- a/man/layer_from_bricks.Rd +++ b/man/layer_from_bricks.Rd @@ -4,7 +4,7 @@ \alias{layer_from_bricks} \title{Helper function to convert a level from a 3D model into a rayshader-friendly object.} \usage{ -layer_from_bricks(brick_list, lev = 1) +layer_from_bricks(brick_list, lev = 1, brick_size = 15) } \arguments{ \item{brick_list}{List output from table_to_bricks(). Contains an element \code{Img_lego}.}