Introduction#
Blendify is a lightweight Python framework that provides a high-level API for creating and rendering scenes with Blender. Developed with a focus on 3D computer vision visualization, Blendify simplifies access to selected Blender functions and objects.
Key features of Blendify:
Simple interface: Blendify provides a user-friendly interface for performing common visualization tasks without having to dive into the complicated Blender API.
Easy integration: Blendify seamlessly integrates with development scripts, implementing commonly used routines and functions:
native support of point clouds, meshes, and primitives;
support of per-vertex colors and textures;
advanced shadows with shadow catcher objects;
video rendering with smooth camera trajectories;
support for common camera models;
import and export of .blend files for deeper integration with Blender.
Quick start: Blendify is easy to get started with and does not require a standalone Blender installation. All you need to do is run
pip install blendify
.
Blendify simplifies interaction with Blender, allowing you to focus on developing your application. The following example shows the simplicity of visualizing with Blendify in comparison to the native Blender API:
Installation instructions#
Install from pip#
pip install blendify
Optional requirements#
pip install blendify[utils / examples / docs / all]
Running examples 4 and 5 requires PyTorch with PyTorch3D.
Running example 5 requires SMPL model files, please refer to the installation instructions in README.
Quick Start#
# Script to render cube
from blendify import scene
from blendify.materials import PrincipledBSDFMaterial
from blendify.colors import UniformColors
# Add light
scene.lights.add_point(strength=1000, translation=(4, -2, 4))
# Add camera
scene.set_perspective_camera((512, 512), fov_x=0.7, quaternion=(0.82, 0.42, 0.18, 0.34), translation=(5, -5, 5))
# Create material
material = PrincipledBSDFMaterial()
# Create color
color = UniformColors((0.0, 1.0, 0.0))
# Add cube mesh
scene.renderables.add_cube_mesh(1.0, material, color)
# Render scene
scene.render(filepath="cube.png")
Examples#
Cornell Box | Color, albedo and depth | Mesh with texture |
Camera colored point cloud | SMPL movement | NURBS trajectory |
Works that use blendify#
V. Lazova, E. Insafutdinov, G. Pons-Moll: 360-Degree Textures of People in Clothing from a Single Image in 3DV’19
B.L. Bhatnagar, X. Xie, I. Petrov, C. Sminchisescu, C. Theobalt, G. Pons-Moll: BEHAVE: Dataset and Method for Tracking Human Object Interactions, in CVPR’22
X. Zhang, B.L. Bhatnagar, V. Guzov, S. Starke, G. Pons-Moll: COUCH: Towards Controllable Human-Chair Interactions, in ECCV’22
G. Tiwari, D. Antic, J. E. Lenssen, N. Sarafianos, T. Tung, G. Pons-Moll: Pose-NDF: Modeling Human Pose Manifolds with Neural Distance Fields, in ECCV’22
I. Petrov, R. Marin, J. Chibane, G. Pons-Moll: Object pop-up: Can we infer 3D objects and their poses from human interactions alone?, in CVPR’23
Contributors#
Blendify is written and maintained by Vladimir Guzov and Ilya Petrov.
Acknowledgments#
We thank Verica Lazova for providing her Blender rendering scripts. Our code for processing point clouds is mostly based on the amazing Blender-Photogrammetry-Importer addon.
License#
The code is released under the GNU General Public License v3.
The Python logo is trademark of Python Software Foundation. The Blender logo is a registered property of Blender Foundation. Blender-Photogrammetry-Importer is distributed under the MIT License. Blender is released under the GNU General Public License v3.