Calculates Ambient Occlusion Shadow Map
ambient_shade(
heightmap,
anglebreaks = 90 * cospi(seq(5, 85, by = 5)/180),
sunbreaks = 24,
maxsearch = 30,
multicore = FALSE,
zscale = 1,
cache_mask = NULL,
shadow_cache = NULL,
progbar = interactive(),
...
)
A two-dimensional matrix, where each entry in the matrix is the elevation at that point. All points are assumed to be evenly spaced.
Default 90*cospi(seq(5, 85,by =5)/180)
. The angle(s), in degrees, as measured from the horizon from which the light originates.
Default 24
. Number of rays to be sent out in a circle, evenly spaced, around the point being tested.
Default 30
. The maximum horizontal distance that the system should propogate rays to check for surface intersections.
Default FALSE. If TRUE, multiple cores will be used to compute the shadow matrix. By default, this uses all cores available, unless the user has
set options("cores")
in which the multicore option will only use that many cores.
Default 1. The ratio between the x and y spacing (which are assumed to be equal) and the z axis.
Default NULL
. A matrix of 1 and 0s, indicating which points on which the raytracer will operate.
Default NULL
. The shadow matrix to be updated at the points defined by the argument cache_mask
.
Default TRUE
if interactive, FALSE
otherwise. If FALSE
, turns off progress bar.
Additional arguments to pass to the makeCluster
function when multicore=TRUE
.
Shaded texture map.
#Here we produce a ambient occlusion map of the `montereybay` elevation map.
if(run_documentation()) {
plot_map(ambient_shade(heightmap = montereybay))
}
#We can increase the distance to look for surface intersections `maxsearch`
#and the density of rays sent out around the point `sunbreaks`.
if(run_documentation()) {
plot_map(ambient_shade(montereybay, sunbreaks = 24,maxsearch = 100, multicore=TRUE))
}
#Create the Red Relief Image Map (RRIM) technique using a custom texture and ambient_shade(),
#with an addition lambertian layer added with lamb_shade() to improve topographic clarity.
if(run_documentation()) {
bigmb = resize_matrix(montereybay, scale=2, method="cubic")
bigmb %>%
sphere_shade(zscale=3, texture = create_texture("red","red","red","red","white")) %>%
add_shadow(ambient_shade(bigmb, maxsearch = 100, multicore = TRUE,zscale=1),0) %>%
add_shadow(lamb_shade(bigmb),0.5) %>%
plot_map()
}