Вручную текстурировать меня sh с помощью PyRender или аналогичной Python библиотеки? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть часть 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 с помощью другой библиотеки?

Спасибо!

...