kaolin.render.easy_render

Common Utilities

kaolin.render.easy_render.default_camera(resolution=512)

Returns default pinhole camera, assuming a scene that’s centered and normalized around the origin.

Parameters

resolution (int) – rendering resolution.

Returns

(kaolin.render.camera.Camera)

kaolin.render.easy_render.default_lighting()

Returns default lighting, represented as Spherical Gaussians.

Returns

(kaolin.render.lighting.SgLightingParameters) default single SG light

kaolin.render.easy_render.default_material(diffuse_color=None)

Returns simple default PBR material that is a bit specular.

Parameters

diffuse_color (tuple or torch.FloatTensor) – of 0..1 range RGB color value (green by default)

Returns

(kaolin.render.materials.PBRMaterial)

Easy Rendering of Meshes

class kaolin.render.easy_render.RenderPass(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
albedo = 'albedo'
alpha = 'alpha'
diffuse = 'diffuse'
face_idx = 'face_idx'
features = 'features'
normals = 'normals'
render = 'render'
roughness = 'roughness'
specular = 'specular'
uvs = 'uvs'
kaolin.render.easy_render.render_mesh(camera, mesh, lighting=None, custom_materials=None, custom_material_assignments=None, backend=None, nvdiffrast_context=None)

Default easy-to-use differentiable rendering function. Is able to perform rasterization-based rendering with partial PBR material spec, if the input mesh comes with materials of type kaolin.render.materials.PBRMaterial.

Parameters
  • camera (Camera) – single unbatched camera.

  • mesh (SurfaceMesh) – single unbatched mesh with bundled materials and material assignments.

  • lighting (SgLightingParameters, optional) – spherical Gaussians lighting parameters instance, if not set, will use default.

  • custom_materials (list of PBRMaterial, optional) – allows passing in materials distinct from mesh.materials

  • custom_material_assignments (torch.LongTensor, optional) – allows passing in material assignments distinct from mesh.material_assignments

  • backend (str, optional) – which backend to use for rasterization/interpolation. If not set, will use nvdiffrast if available in the environment, or else Kaolin CUDA rasterizer. Pass in “nvdiffrast” to force the use of nvdiffrast (or error if not installed), and pass in “cuda” to force Kaolin bundled CUDA implementation.

  • nvdiffrast_context (optional) – if using nvdiffrast, pass in optional context. If not set, default context will be created for device.

Returns

(dict) from RenderPass enum value names to 1 x camera.height x camera.width x nchannels images,

guaranteed to contain RenderPass.render.name key with a value. Output is not clamped.

Misc Utilities

kaolin.render.easy_render.mesh_rasterize_interpolate_cuda(mesh, camera, normals_required=True, uvs_required=True, tangents_required=True, features_required=True)

Performs rasterization and interpolation using bundled Kaolin CUDA kernel. Returns image-space values, given camera resolution, for attributes that are required and available, and None for others.

Parameters
  • mesh (SurfaceMesh) – unbatched surface mesh

  • camera (Camera) – single camera

  • normals_required (bool) – if True, will compute interpolated mesh normals, else return None

  • uvs_required (bool) – if True, and present in mesh, will compute interpolated mesh uvs, else return None

  • tangents_required (bool) – if True, will compute interpolated mesh tangents, else return None

  • features_required (bool) – if True, and present in mesh, will compute interpolated mesh features, else return None

Returns

face_idx, im_normals, im_tangents, im_uvs, im_features

Return type

(tuple of)

kaolin.render.easy_render.mesh_rasterize_interpolate_nvdiffrast(mesh, camera, nvdiffrast_context, normals_required=True, uvs_required=True, tangents_required=True, features_required=True)

Performs rasterization and interpolation using nvdiffrast. Returns image-space values, given camera resolution, for attributes that are required and available, and None for others.

Parameters
  • mesh (SurfaceMesh) – unbatched surface mesh

  • nvdiffrast_context (render context) – nvdiffrast context, either CUDA or OpenGL

  • camera (Camera) – single camera

  • normals_required (bool) – if True, will compute interpolated mesh normals, else return None

  • uvs_required (bool) – if True, and present in mesh, will compute interpolated mesh uvs, else return None

  • tangents_required (bool) – if True, will compute interpolated mesh tangents, else return None

  • features_required (bool) – if True, and present in mesh, will compute interpolated mesh features, else return None

Returns

face_idx, im_normals, im_tangents, im_uvs, im_features

Return type

(tuple of)

kaolin.render.easy_render.texture_sample_materials(backend, face_idx, im_base_normals, materials=None, uv_map=None, material_assignments=None, im_tangents=None)

Perform texture sampling on all material channel images.

kaolin.render.easy_render.sg_shade(camera, face_idx, albedo, spec_albedo, im_roughness, im_world_normals, amplitude, direction, sharpness)

Performs partial PBR shading of the materials, given SG lighting parameters and image space maps.