User-specified 3D brick resolution. Defaults to 15px per side (default from before). 30 looks good.

This commit is contained in:
Ryan Timpe
2019-06-13 15:39:17 -04:00
parent 0ef3fbc5df
commit ce948ebcc6
6 changed files with 14 additions and 13 deletions

View File

@@ -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",

View File

@@ -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, ...)
}

View File

@@ -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

View File

@@ -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}.}

View File

@@ -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

View File

@@ -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}.}