当前位置: 首页 > news >正文

计算机图形学(几何与建模方向)学习全攻略——学术科研篇

博主以前是打算做计算机视觉的,但是出于好奇,不幸进入了图形学的大坑。在学图形学中,有一些经验和方法,与大家分享一下。

这个博客文章我会不断进行更新,将适合的资料学习顺序进行总结。

准备阶段(一般是刚入大学的大学生)
首先需要学习编程语言,这里主要指C/C++,C++语言是图形学的基础编程语言,是绝对绕不开的。

入门编程书:

C++和Python都很重要。现在基于深度学习的几何处理有很多研究方向,使用Python做一些数值计算也会非常方便,适合科研人员;实现一些底层功能会大量使用C++。

可以参考我的:计算机图形学(渲染方向)学习全攻略——学术科研篇https://feimo.blog.csdn.net/article/details/111146313

的C++编程学习方法。

Python的书其实基本都差不多,由于Python语言较为简单,所以不再列书单,找本国外的书或者官方教程、菜鸟教程  菜鸟教程就可以了。做一些数值计算Python还是非常方便的。

数据结构与算法(浙江大学),习题解可以参考我的:

数据结构浙江大学 全部思考题+每周练习答案(已完结)https://feimo.blog.csdn.net/article/details/104987342?spm=1001.2014.3001.5502编程不行、数据结构不行的人,要么提高这些能力,要么自觉放弃几何处理吧~

需要具备的数学知识:

高等数学(曲线积分、参数方程都很重要),线性代数(最小二乘法)(会一点就好,以后再慢慢拓展)

数值计算方法、微分几何(欧式空间几何)是必备内容,但如果时间紧迫,可以慢慢补充。微分几何很多具体细节并没有那么重要,但是基本概念对理解一些性质很有帮助。

小波变换和信号分析永不过时,图形学所有方向都可以找到小波和信号分析能去解决的问题。

入门课程:

注意,就算是最简单的曲线曲面生成,也有大量的论文和复杂的数学研究,所以新学者不要一头钻进去,否则容易放弃。本质来说,计算几何和几何建模是两种不同的东西,一个主要是与数学有关,另一个更像是优化数据结构与算法,但它们的都有值得掌握的基础知识。

GAMES102:几何建模与处理: 建议有时间的话将里面所讲内容完全掌握,习题全部做完。但是里面的一些细节介绍,尤其是数学性质,做到了解即可,对新手来说深挖下去很容易钻牛角尖。还有就是后几节课会讲很多论文中的技术,这些不用完全弄懂,等都学完以后可以再查缺补漏。

清华大学 计算几何(邓俊辉)非专业学生、非科班学生建议只学习相关概念,能在纸上写写画画,明白基本思路就可以了。想把Voronoi图、三角剖分等实现的非常好、没有BUG则需要很强的编程功底和大量时间来优化,如果你不是研究这个方向的,不希望在这些算法优化上做创新,那么不建议花太多精力去掺和这些。知道有哪些基本算法,以后能用得着就可以了。

《Fundamentals of Computer Graphics》虎书还是值得推荐一下的。

提高方向

值得一提的是,几何、渲染和仿真这图形学三大方向里,现在也就几何方向值得去做的问题比较多了,其他方向除了优化和灌水,也很难有新突破了。(而且仿真对物理要求太高,不会物理甚至都没法比着葫芦画瓢,只能照抄代码,但照现在科研界的你追我赶的风气,没有足够的基础显然是难以踏足物理仿真界的)。

《Polygon Mesh Processing》 是一本内容挺全的书,但是里面不会有太多基础知识。可以参考里面的各个方向。但是事无巨细,具体小方向还得靠自己去找。

《Computational Geometry: Algorithms and Applications》计算几何方面的。

《Curves and Surfaces for CAGD》基础永不过时,但是会让人头大。这本书有各种曲线曲面的基础知识,但是建议当成参考书。

各种嵌套、修复、自动算法都是需要研究的方向,根本意图在于提高人类生产力(除非愿意手动一点一点设计模型)。

一些基本的技术,例如细分、参数化、隐式法都是后面具体应用的基础,而搞定了基本概念之后,就可以去看论文了。新学者可以从一篇最新的论文入手,然后去展开。

相关文章:

  • Latex: subfloat取消编号
  • 各种开发工具的历史版本网页合集
  • 图形学模型资源
  • 信号分析——学习全攻略
  • 每天一个PS技巧(原理+实践)——制作熊猫人表情包
  • 每天一个PS技巧(原理+实践)——简单背景的抠图与毛发抠图
  • 去掉PDF内容的换行符
  • 使用SigmaPlot绘制折线图
  • LaTex报错:xtra alignment tab has been changed to \cr.
  • TypeError: ‘int‘ object is not callable
  • 零基础从意义和公式两个层面深入了解傅里叶变换
  • 数据结构浙江大学 全部思考题+每周练习答案(已完结)
  • QT程序设计系列
  • VTK程序设计系列
  • 蒙特卡洛光线追踪技术
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android开源项目规范总结
  • Create React App 使用
  • crontab执行失败的多种原因
  • HTTP中的ETag在移动客户端的应用
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript对象详解
  • Java面向对象及其三大特征
  • Java知识点总结(JavaIO-打印流)
  • python学习笔记 - ThreadLocal
  • Python中eval与exec的使用及区别
  • SAP云平台里Global Account和Sub Account的关系
  • Tornado学习笔记(1)
  • 基于HAProxy的高性能缓存服务器nuster
  • 人脸识别最新开发经验demo
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端解决方案学习记录
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 在weex里面使用chart图表
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #Z0458. 树的中心2
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (02)vite环境变量配置
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十)c52学习之旅-定时器实验
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (译)2019年前端性能优化清单 — 下篇
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net 程序发生了一个不可捕获的异常
  • .net 验证控件和javaScript的冲突问题
  • .netcore 获取appsettings
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @拔赤:Web前端开发十日谈
  • [android] 天气app布局练习
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C# 基础知识系列]专题十六:Linq介绍