3D 相关知识点汇总

ZhuYuanxiang 2023-09-21 00:00:00
Categories: Tags:

3D 相关知识点汇总

Tools 工具

trimesh2

trimesh2 is a C++ library and set of utilities for input, output, and basic manipulation of 3D triangle meshes. The goals of the code are ease of use and efficiency, possibly at the expense of some generality.

trimesh2 是一个 Princeton 内部使用的一个简洁的 3D mesh 操作工具

笔者使用过后感觉它的优点有:

当然,缺点是它体量较小,功能不多,而且基本没有 GUI。

Build Trimesh2

Linux 中最简单,下载压缩包,解压,然后用 make -f Makedefs.Linux64 直接编译。也可以用下面 Mac 中的编译方法。

Windows 中,建议使用:https://github.com/Forceflow/trimesh2%E3%80%82%E8%BF%99%E4%B8%AA repo 给出了 Visual Studio 2017/2019 的编译接口,打开对应工程文件在 VS 中编译。

Mac 中,建议使用:https://github.com/jrock08/Trimesh2%E3%80%82%E8%BF%99%E4%B8%AA repo 提供了 CMake 编译接口,经测试没有问题。原始的 Trimesh2 中提供的 Makefile 似乎有问题,总是编译失败。不过这个 Repo 稍微有点老。

使用 mesh_filter 来 smooth a mesh

1
./mesh_filter input_mesh -smooth 3 output_mesh

数值 3 代表 smooth 的程度,数值越大越平滑,根据经验来看,3 已经足够好了,比它小的话不够平滑,过大则过于平滑。具体可以参见 mesh_filter 的帮助(mesh_filter –help)

mesh_view 支持多个模型渲染

1
mesh_view model1.ply model2.ply ...

键盘操作:

libigl

https://libigl.github.io/tutorial/

libigl is an open source C++ library for geometry processing research and development. Dropping the heavy data structures of tradition geometry libraries, libigl is a simple header-only library of encapsulated functions.

libigl 是一个功能强大的开源 C++ 3D Mesh 库,个人认为的优点是:

缺点:

meshroom

Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision framework. AliceVision is a Photogrammetric Computer Vision Framework which provides 3D Reconstruction and Camera Tracking algorithms. AliceVision comes up with strong software basis and state-of-the-art computer vision algorithms that can be tested, analyzed and reused. The project is a result of collaboration between academia and industry to provide cutting-edge algorithms with the robustness and the quality required for production usage.

Meshroom 是一个三维重建工具。它的核心流程是从二维图片中建立三维模型(即 structure from motion 这种)。它的优点是:

个人认为的几个缺点:

MagicaVoxel

https://ephtracy.github.io/index.html?page=mv_main#

一个非常强大的编辑渲染 voxel 模型的开源工具,渲染效果及其好。不过比较像是一个商业软件,使用方法复杂。

Open3D

Point cloud denoising

http://www.open3d.org/docs/release/python_api/open3d.geometry.PointCloud.html?highlight=remove%20outlier#open3d.geometry.PointCloud.remove_radius_outlier

Get image data (like pixels) inside open3d.open3d.geometry.Image

https://github.com/intel-isl/Open3D/issues/957

Open3D 安装

注意:经本人测试,目前 0.11.0 版和更老的版本没有问题,但是更新的 0.11.1 和 0.11.2 都出现了 visualization window 在 Mac OSX 中打不开的问题。因此,建议安装 0.11.0 版。安装方法:

1
pip install open3d==0.11.0

不知为什么,使用 conda install 时显示找不到 0.11.0 版本,因此建议使用上面的 pip install。

不过注意,0.11.0 版本中的 Open3D examples 代码和 github repo 上的最新代码有很多不同。因此,在Clone Open3D Repo 后,建议 checkout 0.11.0 版本对应的 commit:

1
git checkout d5167ae

OpenGL

http://www.songho.ca/opengl/gl_camera.html

Fyuses (iOS App)

https://fyu.se/

Fyuses are interactive 3D images.

3D Face and Body 相关工作

3D Morphable Face Models - Past, Present and Future

一个很好的 survey paper: https://arxiv.org/pdf/1909.01815.pdf

SMPL

https://smpl.is.tue.mpg.de/en

大名鼎鼎,不过多解释了。Siggraph Asia 2015的工作,提供了一个(几乎算是one of the earliest?)3D skinning human body dataset,包含模型以及 bone poses 等 skinning mesh 的所有信息。

优点:

GANerated Hands

https://handtracker.mpi-inf.mpg.de/projects/GANeratedHands/

CVPR 2018 的一个有名的工作 GANerated Hands,全名是 GANerated Hands for Real-Time 3D Hand Tracking from Monocular RGB,做单目相机的手部动作跟踪和模拟。优点是跟踪效果非常鲁棒,连很多复杂动作都可以做的非常好。

其它优点:

FaceScape

https://facescape.nju.edu.cn/

CVPR 2020 的工作,提供了一个高精度的 3D Face dataset。

数据目前已经放出来了,仅供研究使用,需要申请。

AvatarMe

https://github.com/lattas/AvatarMe

CVPR 2020 的工作,它可以从一张普通的人脸图片中重建出一个高精度的 texture 3D face mesh(当然它提前采集了很多的高精度人脸数据)。

结果模型未定,原始数据没有,源代码暂无(06/27/2020)。

PIFu

https://shunsukesaito.github.io/PIFu/

大名鼎鼎

3D Reconstruction 相关工作

3D Semantic Parsing of Large-Scale Indoor Spaces

http://buildingparser.stanford.edu/method.html#Introduction

这是一个发表在 CVPR 2016 的做 3D indoor point cloud parsing 的工作,可以将室内的点云分割成不同的分层的类别,例如不同房间、甚至一个房间内的不同部位(天花板、墙、地板、其余家具等)。

其它优点:

Implicit Neural Representations – Yaron Lipman

这是 CVPR 2020 的一个 Workshop – Deep Learning Foundations of Geometric Shape Modeling and Reconstruction – 中的其中一个部分,包含了 4-5 篇过去的重要工作的回顾。

主要讲述了隐式表示方法(Implicit Representation)在模型表达和三维重建中的应用。隐式表达结合神经网络后的优点有:

等。

Structured Representations for 3D Computer Vision

CVPR 2020 的一个 Workshop – 2nd CVPR Workshop on 3D Scene Understanding for Vision, Graphics, and Robotics – 中的一个部分,回顾了 2 篇重要工作。

1. NASA: Neural Articulated Shape Approximation

目前依然在 arXiv 上的文章,不过在 CVPR 2020 的 workshop 中有介绍,作者都来自 Google Research。这篇文章提出了利用神经网络对有关节、可变形的三维模型进行估计的方法,与传统方法相比,NASA具有复杂度低、模型水密性好、分辨率高、模型估计效果好等优势

作者提出了一种新的方法用于训练解码器来估计有关节的三维模型,解码器生成的三维模型通过指示函数(indicator function)来表示,这一指示函数以三维模型的姿态作为参数,输入为三维空间中的点x,当该点位于三维模型内时,输出为1;位于三维模型外时,输出为0。与其他方法不同的是,NASA专注于通过姿态参数来估计三维模型的指示函数,这些姿态参数描述了三维模型是如何变形的。

这篇论文的贡献在于:

  1. 提出了一种通过神经网络估计有关节可变形的三维模型的方法;
  2. 通过明确地在网络中表示模型的变形结构,利用更少的模型参数实现了与之前方法相比相似的性能和更好的泛化能力;
  3. 指示函数这一表示方式支持交集和碰撞查询,无需再将其转换为其他的三维模型表示方式;
  4. 模型结果与之前的方法相比能够更好地学习三维人体模型的动作。

2. CvxNet: Learnable Convex Decomposition

这篇是 CVPR 2020 的工作。做的是将一个输入的模型图片转换成 3D(当然模型通常比较简单)。该工作认为任意一个 solid 物体都可以被分成若干个 convex 子部分,称为 convexes。该工作提出了一个神经网络 CvxNet 将输入的图片分割成不同的部分,并最终生成 3D mesh。

这篇工作也是在模型的隐式表示上做文章。

Single-view Reconstruction

单图或者几张图重建三维模型

pixelNeRF

项目网站:https://alexyu.net/pixelnerf/

DISN

源码:https://github.com/Xharlie/DISN

这两篇文章也引用了不少最前沿的论文

教程资料 Tutorials and Other Materials

GAMES101-现代计算机图形学入门-闫令琪

闫令琪是 CG 这块的年轻大牛,目前是 UCSB 的助理教授,主要方向就是和 rendering 相关的几乎所有的子方向。他的论文和课程材料都非常给力。个人感觉他的课程的优点是:清晰明了,包含内容全面多样,并且还结合了当前最新的一些技术做介绍。非常值得一学。

Karman Filter

Karman Filter 卡尔曼滤波是用途很广的一个滤波器。

AABB Tree

AABB Tree 数据结构是用来进行三维物体间的快速求交/计算距离的,它通常用语快速碰撞检测,在几何处理中非常基础且应用广泛。

Estimating 3-D rigid body transformations: a comparison of four major algorithms

http://graphics.stanford.edu/~smr/ICP/comparison/eggert_comparison_mva97.pdf

VOCA: Voice Operated Character Animation

Code: https://github.com/TimoBolkart/voca