raymesh_model {rayrender} | R Documentation |
'raymesh' model
Description
Load an 'raymesh' object, as specified in the 'rayvertex' package.
Usage
raymesh_model(
mesh,
x = 0,
y = 0,
z = 0,
flip_transmittance = TRUE,
verbose = FALSE,
importance_sample_lights = FALSE,
calculate_consistent_normals = TRUE,
subdivision_levels = 1,
displacement_texture = NA,
displacement_intensity = 1,
displacement_vector = FALSE,
recalculate_normals = FALSE,
override_material = TRUE,
material = diffuse(),
angle = c(0, 0, 0),
order_rotation = c(1, 2, 3),
flipped = FALSE,
scale = c(1, 1, 1),
validate_mesh = TRUE
)
Arguments
mesh |
A 'raymesh' object. Pulls the vertex, index, texture coordinates, normals, and material information. |
x |
Default '0'. x-coordinate to offset the model. |
y |
Default '0'. y-coordinate to offset the model. |
z |
Default '0'. z-coordinate to offset the model. |
flip_transmittance |
Default 'TRUE'. Flips '(1-t)' the transmittance values to match the way the colors would be interpreted in a rasterizer (where it specifies the transmitted color). Turn off to specify the attenuation values directly. |
verbose |
Default 'FALSE'. If 'TRUE', prints information about the mesh to the console. |
importance_sample_lights |
Default 'TRUE'. Whether to importance sample lights specified in the OBJ material (objects with a non-zero Ke MTL material). |
calculate_consistent_normals |
Default 'TRUE'. Whether to calculate consistent vertex normals to prevent energy loss at edges. |
subdivision_levels |
Default '1'. Number of Loop subdivisions to be applied to the mesh. |
displacement_texture |
Default 'NA'. File path to the displacement texture. This texture is used to displace the vertices of the mesh based on the texture's pixel values. |
displacement_intensity |
Default '1'. Intensity of the displacement effect. Higher values result in greater displacement. |
displacement_vector |
Default 'FALSE'. Whether to use vector displacement. If 'TRUE', the displacement texture is interpreted as providing a 3D displacement vector. Otherwise, the texture is interpreted as providing a scalar displacement. |
recalculate_normals |
Default 'FALSE'. Whether to recalculate vertex normals based on the connecting face orientations. This can be used to compute normals for meshes lacking them or to calculate new normals after a displacement map has been applied to the mesh. |
override_material |
Default 'TRUE'. If 'TRUE', overrides the material specified in the 'raymesh' object with the one specified in 'material'. |
material |
Default |
angle |
Default 'c(0, 0, 0)'. Angle of rotation around the x, y, and z axes, applied in the order specified in 'order_rotation'. |
order_rotation |
Default 'c(1, 2, 3)'. The order to apply the rotations, referring to "x", "y", and "z". |
flipped |
Default 'FALSE'. Whether to flip the normals. |
scale |
Default 'c(1, 1, 1)'. Scale transformation in the x, y, and z directions. If this is a single value, number, the object will be scaled uniformly. Note: emissive objects may not currently function correctly when scaled. |
validate_mesh |
Default 'TRUE'. Validates the 'raymesh' object using 'rayvertex::validate_mesh()' before parsing to ensure correct parsing. Set to 'FALSE' to speed up scene construction if 'raymesh_model()' is taking a long time (Note: this does not affect rendering time). |
Value
Single row of a tibble describing the raymesh model in the scene.
Examples
#Render a simple raymesh object
library(rayvertex)
if(run_documentation()) {
raymesh_model(sphere_mesh(position = c(-1, 0, 0),
material = material_list(transmittance = "red"))) %>%
add_object(generate_ground(material = diffuse(checkercolor="grey20"))) %>%
render_scene(fov = 30, samples=128, sample_method="sobol_blue")
}
# We create a complex rayvertex mesh, using the `rayvertex::add_shape` function which
# creates a new `raymesh` object out of individual `raymesh` objects
rm_scene = sphere_mesh(position = c(-1, 0, 0),
material = material_list(transmittance = "red")) %>%
add_shape(sphere_mesh(position = c(1, 0, 0),
material = material_list(transmittance = "green", ior = 1.5)))
# Pass the single raymesh object to `raymesh_model()`
# `raymesh_model()`
if(run_documentation()) {
raymesh_model(rm_scene) %>%
add_object(generate_ground(material = diffuse(checkercolor="grey20"))) %>%
render_scene(fov = 30, samples=128, sample_method="sobol_blue")
}
# Set `flip_transmittance = FALSE` argument to specify attenuation coefficients directly
# (as specified in the `dielectric()` material). We change the material's numerical attenuation
# constants using `rayvertex::change_material`
rm_scene_new= change_material(rm_scene, transmittance = c(1,2,0.3), id = 1) %>%
change_material(transmittance = c(3,1,2), id = 2)
if(run_documentation()) {
raymesh_model(rm_scene_new, flip_transmittance = FALSE) %>%
add_object(generate_ground(material = diffuse(checkercolor="grey20"))) %>%
render_scene(fov = 30, samples=128, sample_method="sobol_blue")
}
# Override the material specified in the `raymesh` object and render the scene
if(run_documentation()) {
raymesh_model(rm_scene,
material = dielectric(attenuation = "dodgerblue2", attenuation_intensity = 4),
override_material = TRUE) %>%
add_object(generate_ground(material = diffuse(checkercolor="grey20"))) %>%
render_scene(fov = 30, samples=128, sample_method="sobol_blue")
}
# Adjusting the scale, position, and rotation parameters of the `raymesh` model
if(run_documentation()) {
raymesh_model(rm_scene,
x = 0, y = 0.5, z = -1, angle = c(0, 0, 20)) %>%
add_object(generate_ground(material = diffuse(checkercolor="grey20"))) %>%
render_scene(fov = 30,lookat=c(0,0.5,0), samples=128, sample_method="sobol_blue")
}