【图形学入门】概述(Overview)

news2025/5/23 6:36:16

本文基于GAMES 101课程进行记录和总结。

概念

计算机图形学(Computer Graphics,俗称CG),是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学(或使用计算机合成和操作视觉/图像图形的信息:The use of computers to synthesize and munipulate visual information.);主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。

注意需要和计算机视觉相区别,两者并不完全等同。

一、 图形学应用

VideoGame(电子游戏)

极品飞车系列
赛博朋客2077
图形渲染是电子游戏中重要的组成部分之一,目前很多先进的图形渲染技术如实时光照、光线追踪等都是基于计算机图形学这门学科衍生发展而来。

计算机图形学在游戏领域下需要解决的问题:

  • 如何渲染出玩家想要的效果(如真实、卡通等)
  • 如何提高渲染效率
  • 如何将先进的渲染技术应用到游戏中
  • 研究出更加逼真的渲染技术

Movie(电影)

头号玩家
电影中很多特效都需要图形学的支持,例如《黑客帝国》中的时间静止、《奇异博士》中的场景变化,都是通过计算机复杂的合成、计算等过程生成特性并完美的融合到电影里,让观众感觉到这真的是现实存在的东西,形成一种很强的代入感。

实际上,电影中的特效属于计算机图形学最简单的一部分,因为电影中的特效基本都是模拟出现实中不存在的东西,不存在的东西是天马行空、不具有逻辑性的,因此最好模拟;而越是真实的东西反而越难模拟,因为里面包括了很多自然科学中严谨的逻辑。

计算机图形学在电影领域下需要解决的问题:

  • 如何更好模拟出电影中的类人型生物的行为(如何更真实将动态捕捉到的人类行为通过图形渲染到电影中)
  • 如何提高特效在电影中的性能

Animations(动画)

疯狂动物城
动画主要要求的是细节上的东西,观众通过眼睛接受到动画中每一个场景的信息越多,就越接近真实世界给我们的反馈的信息量,比如《疯狂动物城》的动物主角,现实中的很多动物都是给人们一种毛发旺盛的感觉,因此在动画中如何表现出动物的毛发质感,数量,不同光线程度下的反射质量等,都需要深入的计算。

计算机图形学在动画领域下需要解决的问题:

  • 如何渲染出更好的动画风格
  • 如何模拟卡通效果中的粒子等物理运动规律
  • 如何模拟光线打在动画场景里不同位置的展现效果

Design(设计)

概念设计跑车
工业设计在当前也越来越需要图形相关的技术,比较显著的是一个叫CAD的技术(Computer Aided Design),利用计算机及其图形设备帮助设计人员进行设计工作;通过图形技术将处于一些概念性的设计模拟到计算机中,并设置严格的数据去测试这些设计在真实场景下的能达到的效果,大大减少实际研发成本。

计算机图形学在设计领域下需要解决的问题:

  • 如何呈现出概念设计在现实世界的真实的存在效果
  • 如何降低概念设计和实际效果的差别度

Visualization(可视化)

地图三维重建
可视化,就是将我们通过特定方式测量、获取到的数据信息,通过图像这种直接的方式将这些数据信息重建并通过视觉信息的形式表现出来,比如人体的器官骨骼的CT图、地形地貌的三维重现。

计算机图形学在可视化领域下需要解决的问题:

  • 如何根据已有的数据信息更好地转换为视觉信息
  • 如何变现出更真实的视觉信息

Virtual Reality(虚拟现实)

虚拟现实
VR/AR/MR是目前比较热门的东西,应用了很多图形学的东西,是利用计算机模拟产生一个三维空间的虚拟世界,提供用户关于视觉等感官的模拟,让用户感觉仿佛身历其境,可以即时、没有限制地观察三维空间内的事物。人们戴上特制的传感设备就可以直接感知到一种三维的模拟现实。

计算机图形学在可视化领域下需要解决的问题:

  • 如何更平滑且更快的模拟出一个三维场景
  • 如何在没有设备的情况下感知到一个虚拟的东西(比如裸眼3D)

Digital Illustration(数字化成像)

在这里插入图片描述

数字化成像,是用数字传感器将某种物理形式的像进行数字化与可视化的过程。比如一些美术从业人员通过在数位板等设备上进行绘画,然后显示到电子设备中,并且随时对这些美术作品进行修改上色等操作,大大减低美术人员的时间成本。

计算机图形学在数字化成像领域下需要解决的问题:

  • 如何更平滑模拟出输入设备中的操作到电子设备上

Simulation(模拟)

流体特效模拟
模拟,就是仿照现实存在的东西并在电子设备上重现出来;如上图中的火焰特效,在制作的过程中需要考虑火焰在实际中是怎样生成的,火焰中的粒子如何运动的,空气中的其他结构是怎样变化的等等,通过图像的形式将一段时间的某些东西的变化模拟出来。

计算机图形学在模拟领域下需要解决的问题:

  • 如何让现实中的细小粒子的运动通过图像方式平滑的模拟出来
  • 如何控制图像按照一定的规律去模拟出一些未知的变化(涉及到深度学习相关知识)

Graphical User Interfaces(GUI图像用户接口)

GUI
图像用户接口,这个概念非常广泛,是一种人与计算机通信的界面显示格式,包含很多东西像一些Windows桌面、Mac桌面、APP的图标按钮等等,甚至是一些UI类的设计,都属于GUI的范畴;与通过键盘输入文本或字符指令来完结例行使命的字符界面相比,图形用户界面有许多长处。图形用户界面由窗口、下拉菜单、对话框及其相应的操控机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以相同的方法来完结,在图形用户界面,用户看到和操作的都是图形目标,应用的是计算机图形学的技能。

二、图像学入门主要内容

Rasterization(光栅化)

投影
其中(a)是透视投影,(b)正交投影

光栅化是一个将三维空间的几何形体显示到屏幕上,这个过程包含了两部分的工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用、分配一个颜色值和一个深度值到各个区域。

这是所有游戏、一些实时(指一秒能够渲染到30帧及以上的画面,否则称为离线)的计算机图像学的主要应用。

  • Project geometry primitives(3D triangles/polygons) onto the screen
  • Break projected primitives int fragments(pixels)
  • Gold standardinVideologicalGames(Real-time Applications)

Curves and Meshes (曲线和网格)

  • How to represent geometry in Computer Graphics

Ray Tracing(光线追踪)

光线追踪

  • Shoot rays from the camera though each pixel
  • Calculate intersection and shading
  • Continue to bounce(反射) the rays till they hit light sources
  • Gold standard in Animations/Movies(Offline Applications)

Animation/Simulation(动画 /模拟)

  • Key frame Animation
  • Mass-spring System

三、图像学入门的基础知识

Basic Mathematics(基础数学)

  • Linear Algebra(线性代数,重要)
  • Calculus(微积分,重要)
  • Statistics(统计学)

Basic Physics(基础物理)

  • Optics(光学,重要)
  • Mechanics(力学)

Misc(其他)

  • Signal Procesing(信号处理,重要)
  • Numercial Analysics(数值分析)
  • Aesthetics(美学)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/743988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux操作系统】多线程初步概念

文章目录 多线程初步概念线程的优点线程的缺点线程异常线程用途Linux进程VS线程 多线程初步概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一个进程至少都有一个执行线程。线程是一…

pandas 笔记 style 调整DataFrame格式

1 format 1.0 数据 # Visual Python: Data Analysis > File vp_df pd.read_csv(https://raw.githubusercontent.com/visualpython/visualpython/main/visualpython/data/sample_csv/iris.csv) vp_dfvp_df[:5] vp_df.at[0,sepal_length]np.nan vp_df.at[2,sepal_length]10…

进程和线程的本质区别

前几天有个同学问我,为什么electron是多进程而不是多线程?今天总结一下,对这个问题做下解答。 首先我们先了解下进程的概念:进程是计算机分配资源的最小单位。 简单地说,进程是一个容器。比如一间漂亮的小别墅&#x…

asp.net core框架搭建1-搭建webapi,对数据增删改查接口模板(附源码)

文章目录 系列文章1.项目搭建1.1 新建Asp.net core webapi项目1.2 配置连接Mysql1.3 实现对mysql数据库的数据增删改查,接口1.3.1 根据id查询数据1.3.2 根据用户名模糊查询数据,并分页1.3.3 新增用户数据1.3.4 修改用户数据1.3.5 根据ID删除数据1.3.6 接…

针对工业网络攻击的五个关键控制措施

人们普遍持有一种过时的误解,认为成功的网络攻击只会造成信息和数据损坏或窃取信息和数据。 但随着互联性的增强和物联网的兴起,存在一种不同类型的网络威胁,其动机更加险恶,对关键民用基础设施造成物理损害,并可能造…

VTS表格数据查看与转换

说明 vts是由formula one生成的文件后缀名,它兼容中文,具备类似EXCEL的功能:如格式编排、制作表格线、移动和复制单元格、单元格的计算、画简单框图等等。 查看与转换 直接执行脚本,自动注册ttf16.OCX,打开TTF1.ex…

Java版本企业电子招投标采购系统源码——功能模块功能描述

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供…

第十一章:C语言数据结构与算法初阶之排序

系列文章目录 文章目录 系列文章目录前言排序的概念及其运用排序的概念常见的排序算法 常见排序算法的实现1.直接插入排序2. 希尔排序(缩小增量排序)3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序将区间按照基准值划分为左右两半部分的常见方式&#…

为Kubernetes(k8s)集群安装仪表盘(Dashboard)

为Kubernetes集群安装仪表盘 文档说明部署仪表盘(Dashboard UI)访问 Dashboard 用户界面 文档说明 对应本片文章的视频教程地址:https://www.bilibili.com/video/BV1MF41197RS/?vd_source98deeeab6739fa30792cfcffa994b50e 在之前的文章当中我们搭建了一个kubern…

Spring接收前端传递数据的方式

搭建项目 然后点击下一步完成即可搭建成功 在pom文件中导入lombok的jar包,帮助我们快速创建实体类 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version> </dependency&…

腾讯云服务器CPU处理器大全_性能测评

腾讯云服务器CPU采用什么处理器型号&#xff1f;主频睿频多少&#xff1f;腾讯云服务器CPU性能如何&#xff1f;云服务器CVM规格不同CPU型号也不同&#xff0c;轻量应用服务器的CPU处理器性能如何&#xff1f;腾讯云服务器网分享腾讯云服务器CPU处理器大全&#xff1a; 目录 …

Win10+Anaconda+RTX3070+Pytorch-GPU深度学习环境搭建

一、CUDA安装 1. 查询CUDA driver版本&#xff1a; 2. 下载并安装&#xff1a; CUDA Toolkit Archive | NVIDIA DeveloperPrevious releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please sele…

MFC第十五天 HWND与CWnd对象之间的转换、CWnd类简介(补充)、员工管理系统登录界面眼睛捕获(补充)

文章目录 HWND与CWnd对象之间的转换CWnd类简介&#xff08;补充&#xff09;cwnd系统函数Coordinate Mapping Functions 坐标系转换窗口树 Window tree access计时器管理Window Access Functions 窗口访问功能Window Text Functions 窗口文本函数Window State FunctionsCMenu F…

matlab将0 1矩阵显示为黑白图像

解决方法 clear clc pattern cell2mat(struct2cell(load("pattern"))); pic1 squeeze(pattern(1:64,:,:,:)); pic1 logical(permute(pic1, [2,3,1])); temp pic1(:,:,1); imshow(pic1(:,:,1));显示效果 test int8(rand(30,30)); imshow(logical(test));本来想…

CANoe运行时改变系统变量的值的几种方式

在CANoe运行时,想要随时改变系统变量的值为任意值,怎么办?(这里的值指的是数值) 我们在CANoe工程上创建一个系统变量: 改变系统变量的值,我们第一时间想到的是在CAPL中用代码实现: on key a {@sysvar::ControlPanel::EngineSpeed = 10; }通过一个按键’a’的事件程序…

前端选择时间范围关联日期快速查询

效果图 html部分 <div class"select-list"><ul><li><label>时间&#xff1a;</label><select id"timeInterval"><option value"1">自定义</option><option value"2">当天<…

手机切换ip地址会遇的问题以及解决方法汇总

手机切换IP地址是一种常见的操作&#xff0c;它可以帮助用户解决一些网络问题&#xff0c;提高网络连接速度&#xff0c;或者绕过某些限制。然而&#xff0c;在进行IP地址切换时&#xff0c;用户可能会遇到一些问题。本文将详细介绍手机切换IP地址可能遇到的问题&#xff0c;并…

一、rocketmq整体架构及nameServer源码分析

RocketMQ源码深入剖析 1 RocketMQ介绍 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术&#xff0c;自主研发的云正式商用的专业消息中间件&#xff0c;既可为分布式应用系统提供异步解耦和削峰填谷的能力&#xff0c;同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠…

前端Vue仿美团地址管理列表组件

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

将Xvfb和Chrome封装到Docker镜像中并执行java程序

docker pull ubuntu:22.04docker run -itd --net host -v /home/:/home ubuntu:22.04 进入容器 docker exec -it 8203e24ed bash apt-get update apt-get install xvfb apt-get install chromium-browser apt install chromium-chromedriver apt install openjdk-11-jdk …