1

我有一个房间的部分网格,我试图用从它的特定相机视图拍摄的图像来纹理化。我pyrender用来做渲染。.obj如果我从已经纹理化的文件中加载网格,渲染会正确显示纹理。但是,当我采用无纹理网格并尝试添加单个图像纹理时,它会呈现为纯色。

这是我用于获取网格顶点/面并构建纹理 pyrender 网格对象的代码:

# Project Vertices into the Image to get UV coordinates
v_s, u_s = camera_projection(vertices, camera_pose, camera_K)
uvs = np.concatenate([u_s[valid_indices, None], v_s[valid_indices, None]], axis=1).astype(int)

# Build the Trimesh texture and Mesh 
# image is a (1080, 1080, 3) np.uint8 matrix
material = trimesh.visual.texture.SimpleMaterial(image=image)
color_visuals = trimesh.visual.TextureVisuals(uv=uvs, image=image, material=material)
assert(len(uvs) == len(vertices))
mesh=trimesh.Trimesh(vertices=vertices, faces=faces, visual=color_visuals, validate=True, process=True)

# Convert to trimesh
mesh = pyrender.Mesh.from_trimesh(mesh, smooth=True)

如果给定文件中带有纹理的网格,则渲染管道的其余部分可以正常工作.obj。事实上,我知道所有顶点的uv坐标都在图像边界内,但并非所有图像都被使用(因为网格有一些间隙)。关于这里可能出了什么问题的任何想法,或者关于如何使用另一个库对网格进行纹理化的任何建议?

谢谢!

4

0 回答 0