wyysf-98 / CraftsMan3D

CraftsMan: High-fidelity Mesh Generation with 3D Native Diffusion and Interactive Geometry Refiner
https://craftsman3d.github.io/
447 stars 25 forks source link

About Laplacian smoothing term #26

Open liyukun-mathmagic opened 2 months ago

liyukun-mathmagic commented 2 months ago

作者好!感谢杰出的工作。 想咨询下拉普拉斯平滑相关的实现是在continuous remeshing中的哪一步进行集成的呢? 原refine方法采用了每个step对梯度进行平滑的操作(与neighbor计算),您的方法是直接在vertices上计算与初始的平滑。 请问是否方便share相关实现code?非常感激

wyysf-98 commented 1 week ago

你好,

十分抱歉由于DDL的原因回复有一些晚。 我们的操作是直接替换了continuous remeshing原始位置的拉普拉斯平滑,可以参考下面的代码进行实现。

relative_pos = self._vertices[edges] - self._initial_pos[edges] 
relative_neightbor_smooth = torch.zeros_like(self._vertices) 
torch_scatter.scatter_mean(src=relative_pos.flip(dims=[1]).reshape(E*2,-1), index=edges.reshape(E*2), dim=0, out=relative_neightbor_smooth)
laplace = self._vertices - self._initial_pos -  relative_neightbor_smooth
liyukun-mathmagic commented 1 week ago

非常感谢

liyukun-mathmagic commented 1 week ago

原方法并没有self._initial_pos这一个属性,方便告知下self._initial_pos的定义逻辑嘛