isl-org/Open3D

Copy UV coordinates from a reference mesh.

Open

#6,625 创建于 2024年1月26日

在 GitHub 查看
 (5 评论) (0 反应) (0 负责人)C++ (2,151 fork)batch import
feature requestgood first issuemesh

仓库指标

Star
 (10,036 star)
PR 合并指标
 (平均合并 23天 3小时) (30 天内合并 5 个 PR)

描述

Checklist

Proposed new feature or change

In many mesh processing workflows, UV coordinates are not preserved (e.g. mesh simplification). UV coordinates are required for many downstream tasks. One way to propagate UV coordinates through mesh processing workflows is by copying them from the original mesh. Here is an outline:

  1. Mesh A is processed to mesh B. Mesh A contains UV coordinates (and textures), but mesh B does not have them.
  2. Call meshB.InterpolateTextureCoordinatesFrom(meshA). This does:
  • Create a ray casting scene with mesh A.
  • For each vertex in mesh B, find nearest point in mesh A.
  • Assign UV coordinates of nearest point in mesh A to the vertex in mesh B.
  • Optionally, copy over any textures from mesh B to mesh A.

References

No response

Additional information

It may be necessary to convert from per-triangle UVs to per-vertex UVs (or vice versa). The following code shows an example of how to make that conversion: https://github.com/isl-org/Open3D/blob/main/cpp/open3d/visualization/rendering/filament/TriangleMeshBuffers.cpp#L614

贡献者指南