У меня есть часть sh комнаты, которую я пытаюсь текстурировать с изображением, полученным с определенной камеры. Я использую pyrender
для рендеринга. Если я загружаю me sh из файла .obj
, который уже текстурирован, рендеринг отображается с текстурами правильно. Однако, когда я беру нетекстурированный элемент me sh и пытаюсь добавить текстуру одного изображения, он отображается в цвете solid.
Вот код, который у меня есть для получения вершин / граней me sh и построение текстурированного объекта pyrender me sh:
# 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)
Остальная часть конвейера рендеринга работает правильно, если дано me sh, текстурированное в файле .obj
. Я точно знаю, что все вершины имеют координаты uv
, которые находятся в границах изображения, но не все изображение используется (поскольку у me sh есть некоторые пробелы). Любые идеи о том, что здесь может быть не так, или любые предложения о том, как go текстурировать меня sh с помощью другой библиотеки?
Спасибо!