| |
| |
| |
| |
| |
| |
|
|
| """ |
| This example demonstrates the most trivial, direct interface of the pulsar |
| sphere renderer. It renders and saves an image with 10 random spheres. |
| Output: basic.png. |
| """ |
| import logging |
| import math |
| from os import path |
|
|
| import imageio |
| import torch |
| from pytorch3d.renderer.points.pulsar import Renderer |
|
|
|
|
| LOGGER = logging.getLogger(__name__) |
|
|
|
|
| def cli(): |
| """ |
| Basic example for the pulsar sphere renderer. |
| |
| Writes to `basic.png`. |
| """ |
| LOGGER.info("Rendering on GPU...") |
| torch.manual_seed(1) |
| n_points = 10 |
| width = 1_000 |
| height = 1_000 |
| device = torch.device("cuda") |
| |
| |
| renderer = Renderer(width, height, n_points, right_handed_system=True).to(device) |
| |
| vert_pos = torch.rand(n_points, 3, dtype=torch.float32, device=device) * 10.0 |
| vert_pos[:, 2] += 25.0 |
| vert_pos[:, :2] -= 5.0 |
| vert_col = torch.rand(n_points, 3, dtype=torch.float32, device=device) |
| vert_rad = torch.rand(n_points, dtype=torch.float32, device=device) |
| cam_params = torch.tensor( |
| [ |
| 0.0, |
| 0.0, |
| 0.0, |
| 0.0, |
| math.pi, |
| 0.0, |
| 5.0, |
| 2.0, |
| ], |
| dtype=torch.float32, |
| device=device, |
| ) |
| |
| image = renderer( |
| vert_pos, |
| vert_col, |
| vert_rad, |
| cam_params, |
| 1.0e-1, |
| 45.0, |
| ) |
| LOGGER.info("Writing image to `%s`.", path.abspath("basic.png")) |
| imageio.imsave("basic.png", (image.cpu().detach() * 255.0).to(torch.uint8).numpy()) |
| LOGGER.info("Done.") |
|
|
|
|
| if __name__ == "__main__": |
| logging.basicConfig(level=logging.INFO) |
| cli() |
|
|