
三维图形学理论与编程实践
司南牧
立志让初学者跨界学编程/算法/AI机器人无障碍专注零基础教程,知乎@司南牧
展开
-
[简洁]点云库PCL绘制立方体代码
绘制立方体代码如下所示#include <thread>#include <pcl/common/common_headers.h>#include <pcl/features/normal_3d.h>#include <pcl/visualization/pcl_visualizer.h>using namespace std::chr...原创 2019-12-02 20:02:40 · 2669 阅读 · 2 评论 -
[有效]如何解决Cmake编译PCL项目报错:cannot find -lvtkproj4这个问题的解决方案
Cmake编译PCL项目报错:cannot find -lvtkproj4只需要在CmakeLists.txt里面中PCL依赖项后面加上这句话即可list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4") 。即为:find_package(PCL) include_directories(${PCL_INCLUDE_DIRS})link_directories...原创 2019-12-02 19:22:15 · 903 阅读 · 0 评论 -
cmake下使用PCL如何写CmakeLists.txt的内容
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)project(YourProjectName)find_package(PCL)include_directories(${PCL_INCLUDE_DIRS})link_directories(${PCL_LIBRARY_DIRS})add_definitions(${PCL_DEFIN...原创 2019-12-02 19:07:49 · 1293 阅读 · 0 评论 -
支持Python和c++的Open3D三维重建与点云操作库入门使用
Open3D是一个开放源代码库,支持快速开发处理3D数据的软件。Open3D前端在C ++和Python中公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D是从一开始就开发出来的,带有很少的,经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进行最小的编译。代码干净,样式一致,并通过清晰的代码审查机制进行维护。而且文档也不错Open3D的文档。它...原创 2019-12-02 10:56:04 · 5732 阅读 · 6 评论 -
计算机图形学中点法画圆教程
中点画圆法看下面这个图,这就是一个像素一个像素的画出来的。我们平常的圆也是一个像素一个像素的画出来的,你可以试试在“画图”这个软件里面画一个圆然后放大很多倍,你会发现就是一些像素堆积起来的。我们看出来圆它是一个上下左右都对称,而且也是中心对称的。所以我们只用画好八分之一圆弧就可以,其他地方通过对称复制过去就好。看下面这幅图,绿线夹住的那部分就是八分之一圆弧。注意我们是逆时针画圆的(即从...原创 2019-07-22 11:21:00 · 1870 阅读 · 0 评论 -
易懂的Bresenham 布雷森汉姆算法画圆的原理与Python编程实现教程
Bresenham 布雷森汉姆算法画圆的原理与编程实现教程注意:Bresenham的圆算法只是中点画圆算法的优化版本。区别在于Bresenham的算法只使用整数算术,而中点画圆法仍需要浮点数。所以我先介绍中点画圆法。中点画圆法看下面这个图,这就是一个像素一个像素的画出来的。我们平常的圆也是一个像素一个像素的画出来的,你可以试试在“画图”这个软件里面画一个圆然后放大很多倍,你会发现就是一些像素...原创 2019-07-21 15:09:12 · 4224 阅读 · 3 评论 -
图像从程序到GPU再到屏幕显示的流程:GPU渲染管线
1. 模型坐标变换这个阶段主要是将各个物体的建模坐标系转换到世界坐标系。在程序中不同物体他们建模坐标系是不一样,有些适合球坐标有些适合直角坐标。但是为了将他们整合在一起,最终程序需要将他们转换到世界坐标。在游戏里面你开第一人称视角,那就是以你为原点设计了一个建模坐标系,但是你开枪击中别人以及你位于地图哪个位置。这些都是需要转换到世界坐标中统一进行计算。2. 视图变换虽然经过步骤1可以把所有...原创 2019-06-04 16:23:21 · 1658 阅读 · 0 评论 -
针孔相机模型成像原理与图像变形矫正教程
相机成像原理与焦距概念针孔相机的本质就是初中学过的小孔成像,镜头是一个小孔,然后光线透过小孔被感光传感器所捕获。当然以前的相机是通过胶片来捕获光线。虽然各个时代的相机记录图像的技术不一样,但是不变的都是利用小孔成像这个原理来将外面的三维的大图像缩小到一个二维的小照片上。相信你不会对下面这个图陌生,比较初中物理书上必备这个。真实图像各个像素点的位置与照片里面的图像的位置对应关系是由下面这个红色...原创 2019-06-15 21:16:56 · 9204 阅读 · 0 评论 -
一文梳理旋转矩阵,欧拉角,四元数,旋转向量和齐次变换矩阵之间的联系和用途
前言这几个名词都是用来描述一个物体的位置和姿态的。它们之间可以相互转化,而且各有各的优点与缺点。我先把这几个名词之间的联系理清楚,然后再解释他们各自适合的领域以及为何需要他们。旋转矩阵的初衷就是人们希望给定一个向量x,然后我对它旋转,能直接通过矩阵乘法的形式得到旋转后的向量坐标。也就是说y=Ax。这个方便计算机计算,因此旋转矩阵常用于编程。既然有了旋转矩阵那么为何还要欧拉角呢?这是因为我给你一个...原创 2019-06-14 09:18:36 · 4015 阅读 · 3 评论 -
Ubuntu下使用Eigen旋转几何运算总结教程
如果你未安装Eigen或者完全未接触Eigen请参考下面这三篇好文一文梳理Ubuntu下Eigen矩阵运算库总结教程Ubuntu下安装与使用Eigen矩阵运算库教程Ubuntu下cmake教程实践从入门到会用#include<iostream>using namespace std;#include <Eigen/Core>// 几何模块(旋转矩阵,四元数...原创 2019-06-13 16:41:27 · 349 阅读 · 0 评论 -
一文梳理Ubuntu下Eigen矩阵运算库总结教程
Eigen是一个高效率的c++矩阵运算库,tensorflow等一系列开源框架都是用它来进行高效率的代数运算。如果你还没安装Eigen,那么亲参考Ubuntu下如何安装与使用cmake编译Eigen。0. 入门如果你不清楚如何使用cmake请参考Ubuntu下cmake教程实践从入门到会用。如果你不清楚引入Eigen头文件时CMakeLists.txt需要写什么内容请参考Ubuntu下如何...原创 2019-06-13 15:06:43 · 923 阅读 · 1 评论 -
Python使用VTK三维3D图形绘制入门教程
安装:pip install vtk学习一个东西最快的方法是知道基本原理和用途VTK有啥用不能做游戏。适合快速开发绘制静态三维模型。所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合。VTK工作流程(大致看看对vtk各模块做的事有点印象即可)读取图形数据→过滤→建图→构建执行单元→渲染→打开渲染窗口→交互界面读取图形数据\rightarrow过滤\rightarrow建图\...原创 2019-05-05 20:42:57 · 11186 阅读 · 2 评论