Open tobyclh opened 2 years ago
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.
This issue was closed because it has been stalled for 5 days with no activity.
Thanks for reporting and great repro steps!
I checked that the seam disappears if you change to blur_radius=1e-5
. Also, there's no blur if you use the new MeshRasterizerOpenGL (though you need pycuda.gl and pyopengl for that!).
Nevertheless, this looks like a bug in MeshRasterizer -- it shouldn't be leaving holes even with blur_radius=0.0. I'll try to look into it when I get some time.
If you do not know the root cause of the problem / bug, and wish someone to help you, please post according to this template:
🐛 Bugs / Unexpected behaviors
I am trying to render a simple quad created by two triangles, but there is a seam when rendered from a close distance.
Instructions To Reproduce the Issue:
Please include the following (depending on what the issue is):
git diff
) or code you wrote Minimal working example based on the tutorialfrom pytorch3d.io import load_objs_as_meshes, load_obj
Data structures and functions for rendering
from pytorch3d.structures import Meshes from pytorch3d.vis.plotly_vis import AxisArgs, plot_batch_individually, plot_scene from pytorch3d.vis.texture_vis import texturesuv_image_matplotlib from pytorch3d.renderer import ( look_at_view_transform, FoVPerspectiveCameras, PointLights, DirectionalLights, Materials, RasterizationSettings, MeshRenderer, MeshRasterizer,
SoftPhongShader, TexturesUV, TexturesVertex )
add path for demo utils functions
import sys import os sys.path.append(os.path.abspath(''))
Setup
if torch.cuda.is_available(): device = torch.device("cuda:0") torch.cuda.set_device(device) else: device = torch.device("cpu")
obj_filename = 'plane.obj'
mesh = load_objs_as_meshes([obj_filename], device=device) fov = 45 half_fov_rad = (fov / 2) / 180.0 * math.pi height = 0.5 / math.tan(half_fov_rad) R, T = look_at_view_transform(height, 0, 0) cameras = FoVPerspectiveCameras(device=device, R=R, T=T, fov=fov)
raster_settings = RasterizationSettings( image_size=512, blur_radius=0.0, faces_per_pixel=1, )
Place a point light in front of the object. As mentioned above, the front of the cow is facing the
-z direction.
lights = PointLights(device=device, location=[[0.0, 0.0, 1.0]])
Create a Phong renderer by composing a rasterizer and a shader. The textured Phong shader will
interpolate the texture uv coordinates for each vertex, sample from a texture image and
apply the Phong lighting model
renderer = MeshRenderer( rasterizer=MeshRasterizer( cameras=cameras, raster_settings=raster_settings ), shader=SoftPhongShader( device=device, cameras=cameras, lights=lights ) )
images = renderer(mesh)
plt.figure(figsize=(10, 10))
plt.imshow(images[0, ..., :3].cpu().numpy()) plt.show()
mtllib plane.mtl o Cube v 0.5 0.5 0.0 v -0.5 0.5 0.0 v 0.5 -0.5 0.0 v -0.5 -0.5 0.0 vt 0.0 1.0 vt 1.0 1.0 vt 0.0 0.0 vt 1.0 0.0 usemtl material_1 s off f 4/3/1 1/2/1 2/1/1 f 4/3/1 3/4/1 1/2/1
newmtl material_1 map_Kd banana.jpg
Test colors
Ka 1.000 1.000 1.000 # white Kd 1.000 1.000 1.000 # white Ks 0.000 0.000 0.000 # black Ns 10.0