|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
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() |
|
|