一个图形引擎的画面风格是由那些因素(技术)决定的?

2024-09-08 07:58

本文主要是介绍一个图形引擎的画面风格是由那些因素(技术)决定的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

可能很多人第一直覺會認為shader決定了視覺風格,但我認為可以從多個方面去考慮。

1. 幾何模型

一個畫面由多個成分組成,最基本的應該是其結構,在圖形學中通常稱為幾何模型。

一些引擎,如Quake/UE,有比較強的Brush建模功能(或應稱作CSG),製作建築比較方便。而CE則有較強的大型地表、植被、水體等功能,做室外自然環境十分出色。而另一些遊戲類型專用的引擎,例如RTS/MOBA,可能會有特殊的基於tiling的建模方式。也有一些主要只支持三角形網格(如Unity,雖然它也有簡單的地形建模)的引擎,這是最基本的,所以也最為通用,但在建立某些場景時製作效率和運行效率也可能較低。

圖:Unreal以brush製作基本的建築結構( docs.unrealengine.com/l

圖:CE的地形、植被、水體

理論上,三角形網格是現時光柵化硬件的主要幾何圖元,其他形式的建模方式最終都要變成三角形網格渲染。然而,大部分遊戲使用實時渲染,在性能的限制下,引擎需要使用可見性判斷(visibility determination)、細緻程度(level of details, LOD)。CSG、地型、植被、水體等較專門的建模方式可以更好地提供這些技術。也就是說,如Unity這種較簡單的引擎,因為設計的一些限制,和UE/CE構成遊戲世界的方式有一些區別。

模型也有其他形式的風格,例如體素。

圖:《Cube world》

2. 光照及材質

在藝術上,決定了畫面的構成後,需要決定怎樣去着色(shading)。這是關於光的傳播以及物體表面的互動。

光照包括光源的種類(點光源、方向光源、面積光源等)、靜態/動態、陰影。引擎的渲染管道很大程度上決定了支持哪些光源以及數量,例如延遲渲染和Forward+等渲染管道支持大量的局部光源,而傳統的forward lighting在多個光源會有較多的渲染pass。靜態的光源與靜態的場景可以使用預計算,簡單的光照貼圖(light map)只能捕捉漫反射的效果,而像source引擎的radiosity normal mapping或是一些precomputed radiance transfer(PRT)的貼圖則可以有更細緻的表現。而CE的Light Propagation Volume (LPV)或一些引擎使用到的Voxel Cone Tracing可以帶來某程度的動態實時全局光照。

陰影其實也對遊戲的畫面風格帶來很大的影響。例如Doom3就使用到stencil shadow volume來做到動態點光源的陰影,帶來當時與別不同的畫面風格。

圖:DOOM3 開關陰影、鏡面反射的區別 ( seiryu.cside.to/3dfps/D )

引擎對材質的支持也很影響到畫面風格。現時,照片真實感(photo realistic)風格會以基於物理的着色方法。

圖:基於物理的着色(非實時)。參考  SIGGRAPH 2013 Course: Physically Based Shading in Theory and Practice (內裡包括UE4的相關講義)

當然,不是所有遊戲都追求真實感,也有追求風格化的渲染效果,例如卡通渲染、水墨渲染等。這些風格化渲染,在支持可編程着色器的引擎中通常不難實現。但有時候也需要引擎提供足夠的客制化能力,例如,有些輪廓(silhouette)效果需要更多的render pass及/或render target。

圖:《大神(Okami)HD》。

為了讓美術製作獨特的材質,有些引擎(如UE)提供視覺化材質編輯工具,充分利用這些工具可以增強遊戲場景的多樣性。

圖:UE4的材質編輯器。

3. 動畫、特效及後期處理

除了以一幀一幀的畫面來營造遊戲的視覺風格,動畫、特效這些具時間性的視覺元素也是十分重要的。例如GDC2014中《Infamous: Second Son》談及為了表現超能力而開發的特效引擎。


圖:《Infamous: Second Son》利用curl noise技術製作的視覺特效。詳見  GDC Vault - The Visual Effects of inFAMOUS: Second Son  講義。

後期處理(post-processing)也是對遊戲風格的重要部分。動態模糊(motion blur)、景深(depth-of-field)、bloom、vignetting等用於模擬真實鏡頭的效果,而color grading可以營造出各種遊戲氛圍。

動畫方面,除了常見的以手工編制動畫樹及關鍵幀動畫的技術,有些引擎/中間件也會支持一些基於物理(如布娃娃/ragdoll),以及基於生物力學/人工智能的動畫方式,增加動畫的真實感。模擬柔體也能製造一些與別不同的風格。


圖:《爱丽丝惊魂记:疯狂再临》中利用柔體模擬的頭髮效果。詳見  爱丽丝的发丝──《爱丽丝惊魂记:疯狂再临》制作点滴

4. 總結

遊戲引擎(或是具體遊戲經過客制化的技術方案)的多個方面決定了美術上可以做出那些風格。為了製作獨特風格的遊戲,引擎本身提供的自由度及擴展性也是重要的因素。

这篇关于一个图形引擎的画面风格是由那些因素(技术)决定的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147550

相关文章

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.