mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-13 03:14:00 +08:00
4.2 MiB
4.2 MiB
In [1]:
import torch
from pyrad.structures import cameras
import plotly.graph_objects as go
import mediapy as mediaIn [2]:
def vis_camera_rays(camera):
coords = camera.get_image_coords()
coords[..., 0] /= camera.get_image_height()
coords[..., 1] /= camera.get_image_width()
coords = torch.cat([coords, torch.ones((*coords.shape[:-1], 1))], dim=-1)
print("Image UV coordinates")
media.show_image(coords, width=400)
ray_bundle = camera.generate_camera_rays()
origins = ray_bundle.origins.view(-1, 3)
directions = ray_bundle.directions.view(-1, 3)
coords = coords.view(-1, 3)
lines = torch.empty((origins.shape[0] * 2, 3))
lines[0::2] = origins
lines[1::2] = origins + directions
colors = torch.empty((coords.shape[0] * 2, 3))
colors[0::2] = coords
colors[1::2] = coords
fig = go.Figure(
data=go.Scatter3d(
x=lines[:, 0],
y=lines[:, 1],
z=lines[:, 2],
marker=dict(
size=4,
color=colors,
),
line=dict(color="lightblue", width=1),
)
)
fig.show()In [3]:
cx = 20
cy = 10
fx = 20
fy = 20
camera = cameras.PinholeCamera(cx, cy, fx, fy)
vis_camera_rays(camera)Image UV coordinates
In [4]:
height = 10
width = 30
camera = cameras.EquirectangularCamera(height=height, width=width)
vis_camera_rays(camera)Image UV coordinates
In [ ]: