Mesh Renderer¶
We provide a convenient mesh renderer based on:
kiui.mesh.Mesh: our mesh implementation.
nvdiffrast: an NVIDIA GPU is required, install with
pip install git+https://github.com/NVlabs/nvdiffrast
.dearpygui: a desktop is required (cannot be forwarded by ssh). For headless servers, you can still use
--wogui
for rendering images and videos.
Usage¶
# invoke renderer
kire --help
# this is short for
python -m kiui.render --help
Examples¶
## open a GUI to render a mesh
kire mesh.obj
kire mesh.obj --force_cuda_rast # if you cannot use OpenGL backend (usually happens for headless servers), this will fallback to CUDA backend with some limitations (ref: https://nvlabs.github.io/nvdiffrast/#rasterizing-with-cuda-vs-opengl-new)
kire mesh.obj --H 800 --W 800 --ssaa 2 # set resolution and use super-sampling anti-aliasing
kire mesh.obj --front_dir +x # specify mesh front-facing dir, default is +z (OpenGL convention). You can use [+-][xyz] to specify axis, and [123] to specify clockwise rotation (per 90 degree).
kire mesh.glb --pbr # render with PBR (metallic + roughness)
kire mesh.glb --pbr --envmap env.hdr # specify hdr file
## we can also run without GUI on headless servers
kire mesh.obj --save_video out.mp4 --wogui # save 360 degree rotating video
kire mesh.obj --save out --wogui # save rendered images to the out folder (controlled by --elevation and --num_azimuth)
In the GUI, you can use:
Left Drag
to rotate camera.Middle Scroll
to scale camera.Right Drag
to pan camera.Space
to toggle rendering mode.P
to toggle camera orbital rotation.L
to toggle plane light rotation (only valid inlambertian
rendering mode).W
to toggle wireframe rendering on top of current rendering mode.