instant-ngp 简单使用

1,435 阅读3分钟

目标

调研instant-NGP生成3D模型的效果。

结论

在硬件加持下实时渲染效果较为逼真还原度较高。

效果如下:

image.png

视频: www.bilibili.com/video/BV1oP…

不足

  • Instant-NGP 导出mesh文件(obj)后的效果很差

    • 视频:

    • Instant-NGP 的实时渲染是依赖硬件支持的,因此效果比较好,但对导出obj 后的效果很差,一方面是instant-ngp的重点不是在 3D mesh 方向上,因此导出的Obj 文件仅用于展示,无法直接作为产品使用。

调研

简介

  • Instant-NGP 核心是基于 NeRF 实现3D模型的渲染。

    • NeRF的研究目的是合成同一场景不同视角下的图像。方法很简单,根据给定一个场景的若干张图片,重构出这个场景的3D表示,然后推理的时候输入不同视角就可以合成(渲染)这个视角下的图像了。

使用

  • 基本要求

    • 显卡要求:起码 GTX 1000 系列以上,RTX 系列最好。
  • 环境要求:

    • CUDA, 必须是 11.6 及以上(允许安装多个版本)。
    • Anaconda: 是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。
    • Python版本需要在3.9 及以上。
    • 安装 Colmap 工具
  • 数据要求

    • 需要使用基于 Colmap 工具对素材进行处理,计算相机位置的数据
  • Instant-NGP 官方提供可用的GUI 程序

  • 自行构建(demo演示直接使用官方的即可)

    • 必要安装

      • VS 2019 (必须是这个版本,新版会有问题)

      • 安装 CUDA v11.6 (推荐这个版本,因为看vs2019是的是该版本)。

        // 命令行使用如下命令确认版本
        nvcc --version  
        
      • 安装 Anaconda

  • 安装 OptiX 7.3 (需要注册才能下载),安装完成后,PATH 中配置 OptiX_INSTALL_DIR 指 安装地址
  • image.png
  • 编译

    • 使用 git 拉取 Instant-ngp 源码

    • 创建编译环境:

      • 打开: Developer Command Promp

      • 输入: conda install python=3.9

      • cd 到 instant-ngp 源码目录

        cmake . -B build
        cmake --build build --config RelWithDebInfo -j 16
        

python 配置

# 使用清华源,命令行中执行
pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple

最佳实践

  • 素材要求

    • 素材前后具有连续性且相似度高时比较好

    • 拍摄图片

      • 相机固定,相机固定,连续性拍摄,在拍摄物缓慢旋转是原则上1秒1张比较好
      • 拍摄物固定,围绕拍摄物拍摄时,需要保持相机的相对稳定,抖动、不稳容易造成图形模糊。
    • 拍摄视频

      • 围绕拍摄物旋转是需要稳,速度要缓慢,上下抖动大而导致的视频帧模糊。
  • 素材处理(Colmap)

    • 使用Colmap处理素材是硬件性能越好效率越高(CPU、内存)
    • colmap 参数 -aabb_scale 数字越大处理时间越长,这是colmap处理素材的关键参数,决定渲染时的场景范围,数值越大,colmap的计算量约大,推荐32,160张照片处理时间在30分钟上下(硬件: AMD 5800, 16G内存)。

参考资料