BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis 论文阅读

(水一篇博客)
在这里插入图片描述

项目主页

BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis
2023 SIGGRAPH

作者介绍

  • 是 Mildenhall 和 Barron 参与的工作(都是谷歌的),同时一作是 Lipman 的学生,VolSDF 的一作。
  • 本文引用了很多其他文章的方法,Mildenhall 和 Barron 等的论文Mip-NeRF 360,以及VolSDF的方法。
  • 采用了 Instant-NGP 为中介来学习处于顶点位置的参数然后再固定到顶点上。

任务

重建大型无界现实世界场景的高质量网格,适用于逼真的新颖视图合成。(新视图合成,还是与NeRF有关,事实上本文基于Mip-NeRF 360的方法实现)

方法

  • 首先优化混合神经体积-表面场景表示,设计为具有与场景中的表面相对应的表现良好的水平集。(结合VolSDF的方法)
  • 然后,将这种表示烘焙成高质量的三角形网格,并为其配备基于球形高斯的简单且快速的依赖于视图的外观模型。
  • 最后,优化这个烘焙表示以最好地再现捕获的视点,从而产生一个可以利用加速多边形光栅化管道在商用硬件上进行实时视图合成的模型。

要点

提出了一种新方法 BakedSDF,用于重建大型无界真实世界场景的高质量网格,以进行实时视图合成;
用混合神经体-表面场景表示法,为准确的表面重建进行了优化,然后 bake 成具有与视图相关的外观模型的三角形网格;
BakedSDF 在精度、速度和功耗方面优于之前的实时渲染场景表示,可产生高质量的网格,使下游应用如外观编辑和物理模拟成为可能;
该系统可以在消费级设备上以实时帧率进行渲染,产生的网格准确而详细,可以实现标准的图形应用。

实现过程

  1. 第一阶段是把 Mip-NeRF 360 塞进了 VolSDF 中然后加了很多实现上的细节,其中 VolSDF 还做了改进,融合了 Ref-NeRF[9] 的 appearance 处理,实现了更好的高亮效果。

    这里是用了VolSDF的方法,把密度用SDF表示。

  2. 第二阶段就是从训好的 VolSDF 中提取 mesh,作者意识到了 VolSDF 中有偏的问题,所以在做 Marching Cubes 的时候调整了一下阈值 (0 -> 0.001)。此外,BakedSDF 也考虑了可视的问题,所以做了 visibility culling 策略避免在看不见的区域生成不必要的 mesh。而对于不可视区域产生的空洞,BakedSDF 则用区域生长策略将其补全。具体细节见章节 4.2,同时还有细节请参考附录 B。

  3. 最后一步则是利用 spherical Gaussian lobes 构建 view-dependent appearance。BakedSDF 为mesh 的每个顶点都设置了漫反射颜色项 c d c_d cd,( c d c_d cd应该可以查询参考了 Ref-NeRF[9] 的 VolSDF 直接获得,或者作为一个初始化)和一组 spherical Gaussian lobes (单位球内区域每个顶点三个 lobes,单位球外则为一个 lobe)。因此每个顶点的着色写作:
    C = c d + ∑ i = 1 N c i e x p ( λ i ( μ i ∗ d − 1 ) ) C=c_d+\sum^N_{i=1}c_iexp(\lambda_i(\mu_i*d-1)) C=cd+i=1Nciexp(λi(μid1))

    然后根据上述顶点着色,固定 mesh,仅优化每个顶点的着色参数 c d , c i , λ i , μ i c_d,c_i,\lambda_i,\mu_i cd,ci,λi,μi,其中梯度反传需要考虑像素在三角面片上的重心坐标,反传到相应的顶点上。

    由于 mesh 的顶点数量过多,不可能全部放进 GPU 中同时优化,BakedSDF 也采用了 Instant-NGP 为中介来学习这些处于顶点位置的参数然后再固定到顶点上。

参考文献

NeRF Baking 系列工作个人总结
VolSDF(Volume Rendering of Neural Implicit Surfaces)论文阅读笔记
Nvidia最新三维重建技术Instant-ngp初探

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误通常是由于几何体中的端口没有正确定义导致的。您可以尝试以下步骤来解决此问题: 1. 确保在几何体中正确定义了所有的端口。您可以使用 "Create Waveport" 工具或手动创建端口。 2. 在模拟设置中选择 "Mesh" 选项卡,并确保已启用 "Port" meshing。 3. 在 "Mesh Control" 选项卡中,选择 "Port" 并增加 "Max Mesh Size" 值以确保端口周围的网格足够细致。 4. 如果仍然存在问题,请尝试在 "Mesh" 选项卡中选择 "Advanced" 并将 "Mesh Type" 更改为 "Tetrahedral",然后重新运行网格生成。 如果这些步骤仍然无法解决问题,请尝试检查几何体是否存在其他问题,例如重叠的几何体,不连续的边界等。 ### 回答2: hfss报错"failed to collect the port needed for meshing"一般是由于端口在建模过程中未正确定义或者定义错误导致的。解决这个问题的方法包括以下几点: 1. 确保端口正确定义:在HFSS中,当使用波导或导体作为端口时,需要正确定义其位置和尺寸。首先,确认模型中端口的位置是否正确,确保其与几何模型的位置相匹配。其次,检查端口的尺寸是否合适,特别是对于复杂的结构,端口的尺寸可能需要经过进一步的优化。 2. 确认模型中是否有重叠的几何体:当模型中存在重叠的几何体时,HFSS可能无法正确收集端口的信息。因此,检查模型中是否有不必要的重叠部分,并修复这些问题。 3. 检查网格设置:网格设置是影响HFSS计算精度和效率的重要因素。确保在进行网格划分之前,端口的设置对应的是正确的尺寸和几何形状。如果网格设置过于粗糙,可能会导致计算错误。 4. 清除缓存并重新进行模拟:有时,HFSS报错可能是由于计算过程中出现了一些错误或冲突。在这种情况下,可以尝试清除软件缓存以及重新进行模拟操作,以便解决这些问题。 5. 参考官方文档和用户论坛:对于HFSS报错问题,可以参考ANSYS官方文档或者用户论坛,查找相关解决方案。在这些资源中,往往可以找到其他用户提供的类似问题的解决方法或者建议。 综上所述,要解决HFSS报错"failed to collect the port needed for meshing",需要确认端口的定义是否正确,修复模型中的几何体重叠问题,检查网格设置并适当调整,清除缓存重新模拟,并参考相关文档和用户论坛获取解决方案。 ### 回答3: HFSS是一款用于高频电磁场模拟的软件,当遇到报错"Failed to collect the port needed for meshing"时,以下是一些可能的解决方法: 1.检查模型中是否存在未连接的电磁场端口。该错误通常是由于没有正确定义电磁场端口或射频端口导致的。请确保所有需要进行网格划分的端口已正确定义并与所需的电路元件连接。 2.检查模型中的捕捉面设置。由于模型的几何结构或网格设置问题,可能会导致无法正确收集到进行网格划分所需的端口。尝试调整模型中的捕捉面设置,并确保它们正确包围着端口区域。 3.更改网格设置。网格设置是进行HFSS模拟时的重要参数,可能会对网格划分过程产生影响。尝试调整网格设置,例如增加网格密度或更改划分算法,以解决报错问题。 4.检查模型中是否有几何结构错误。如果模型中有几何结构错误,例如重叠的面、断裂的边等,可能会导致无法正确进行网格划分。请仔细检查模型中的几何结构,并尝试修复任何错误。 5.更新软件版本。HFSS的不同版本在处理和报告错误时可能会有所不同。尝试升级到最新版本的HFSS,可能会解决一些已知的问题或错误。 如果上述方法无法解决问题,建议查阅HFSS的用户手册、在线帮助或联系软件厂商的技术支持团队,以获取更详细的解决方案和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值