NVlabs / nvdiffmodeling

Differentiable rasterization applied to 3D model simplification tasks
Other
455 stars 30 forks source link

About the raymarch fitting case #9

Closed outlawever closed 2 years ago

outlawever commented 2 years ago

Thanks for the marvelous work! I have some questions related to the shadertoy fitting case: It seems figure 22 & figure 23 use some special uv un-wrap methods, can you elaborate the algorithm under the hood? image

jmunkberg commented 2 years ago

Thanks for your kind words!

For the base mesh in Fig 22 and Fig 23 I took a cube, applied Auto-UVs in Autodesk Maya (attaches one uv region for each of the six faces of the cube, layout as shown in the image above). I then subdivided this cube a few times with Catmull-Clark subdivision to approximate a sphere. The goal was to create a spherical base shape with roughly equal triangle size, as a parametric sphere often get lots of sliver triangles near the poles). The sphere.obj model in https://github.com/NVlabs/nvdiffmodeling/blob/main/data/ is created similarly, but I may have applied auto uvs after subdivision in that case as the charts are rounded.

Our approach is fairly robust to different UV layouts, as long as they are non-overlapping. Large continuous charts are preferable, especially when optimizing the full mip chain.

outlawever commented 2 years ago

Thansk for the quick reply~ This looks like learning a parameterization for genus-0 mesh, resembling geometry image in my opinion :) But it cannot hanle geneneral mesh parameterization , for example mesh with hole?

jmunkberg commented 2 years ago

Exactly. We don't optimize topology, nor the UV params, but assume a base mesh with fixed topology (genus 0 in this case), and non-overlapping UVs. You can find additional examples of the base meshes and corresponding UVs we use in the additional assets (link the the readme).

outlawever commented 2 years ago

Maybe UV params learning will become feasible with differentiable rendering in the near future :)

FishWoWater commented 3 months ago

Exactly. We don't optimize topology, nor the UV params, but assume a base mesh with fixed topology (genus 0 in this case), and non-overlapping UVs. You can find additional examples of the base meshes and corresponding UVs we use in the additional assets (link the the readme).

Hi, Munkberg I have noticed that at the end of Section3 in your paper, you mentioned that the initial mesh is required to have non-overlapping texture parameterization. Why is it necessary to have non-overlapping UVs? Just intuitively, nvdiffmodeling should also work with models whose UVs reuse the same texture region

JHnvidia commented 3 months ago

Hi @FishWoWater,

There's no strict requirement for unique UV mapping. However, multiple pixels/parts of an object mapping to the same texel, optimization will converge towards the average. It's fine as long as there's no ambiguity, but if overlapping regions have different materials you will get a blurred/washed out loook. E.g. if a texture region maps to both a white and black square on a checkerboard, you would get an average gray.

It's recommended to use uv-unwrapping, but some special cases such as mirrored mapping on a character might work well with non-unique mapping.

FishWoWater commented 3 months ago

@JHnvidia Got it, thank you so much :)