Open WangShuXian6 opened 2 weeks ago
欢迎大家来到本课程,专门讲解游戏开发中技术美术师的角色。我的名字是Vyacheslav Machynko。我是一名全职技术美术师,在育碧工作超过五年。在这段时间里,我参与了多个AAA游戏开发项目,包括《PudgeDog 3》、《孤岛惊魂6》,以及在录制本课程时我心爱的项目《超越善与恶2》。
在接下来的视频中,我将帮助你建立获得技术美术师角色的坚实基础。但让我们一开始就诚实地说。仅仅完成这个课程并不足以让你准备好申请技术美术师的职位。技术美术师是一个高级职位,要求具备广泛的艺术技能和技术知识。这个课程更应该被视为一个指南,甚至是一个揭示技术美术师角色路径的地图。
从高层次的概述来看,我们将涵盖技术美术师所需的所有核心硬技能,即实时引擎,包括渲染管线、游戏分析、帧调试和场景优化;为技术美术师编写脚本,使用Python、MaxScript和MEL;使用Houdini和Substance Designer进行程序化内容创建;基础着色器知识,包括基于节点和HLSL的着色器;游戏开发所需的基本数学,包括点、向量、矩阵、插值甚至四元数;我们还有几节讲座专门讨论建立管道的内容。
此外,我们还将有一个专门的部分,讨论技术美术师的软技能,涵盖团队中的协作与沟通、如何给予和接受反馈、招聘人员青睐的主动性等内容。
但请注意,这些知识仅足以让你在进一步深入学习上述技能和工具时变得高效和自信。我知道这听起来可能有些令人失望,但在一开始就澄清这一点总比在最后被一些不切实际的期望误导要好。
总的来说,这个课程将为你提供以下内容:你需要学习的内容(你可以从课程内容中了解),以及对所有技能和工具的高层次概述,直接列出自学的主题。作为额外奖励,你将获得我自己曾用过的深入学习资源链接。此外,我会为这门课程的每位学生提供终身支持,解答关于技术美术学习路径的任何问题;我们甚至可以进行一次即兴的模拟技术美术师面试,最后给予详细反馈。
所以,现在我们都在同一页面上,准备开始探索通往技术美术师的道路,让我们立即开始吧。期待在下一节课见到你!
在这段简短的讲座中,我想添加一些关于如何使用本课程的说明。
首先,您可以忽略硬技能课程的结构,从您想要的任何主题开始。发现技术艺术职位所需的所有知识没有正确的路径,因此请不要将课程部分的顺序视为可复制的步骤。
选择任何看起来最有趣或最熟悉的主题,随意在各个部分之间跳跃,并始终在需要时在评论中询问澄清。
我试图让主题彼此独立,这意味着我不会依赖于前面讲座中提供的信息。整体图景将在您熟悉课程中列出的所有技能后出现,要实现这一点,确实需要一些努力和时间。
在完成整个课程后,您甚至可能需要第二次或第三次返回某些主题以填补空白。但请不要在每次听到熟悉的词时就打断讲座。技术艺术技能集是庞大的,甚至是最有经验的技术总监也无法详细了解所有内容。
此外,请注意,在每个理论讲座结束时,我会提供一份重要相关主题的列表,这些主题对于技术艺术家来说是值得了解的。整个职位专业的技能组合清单将是巨大的,逐一详细解释每个技能显然不适合任何单一学习材料。因此,这些主题应在本课程之外独立进行专门的、详细的学习。
一些主题简单且短小,例如理解不同的纹理压缩;而有些则庞大且耗时,例如学习任何实时引擎,如Unity或Unreal。我建议您在每个部分或整个课程结束时删除它们,除非您觉得立即需要这些深入的信息。
我无法强调提问的重要性。不要害羞,不要犹豫,询问您不清楚的任何内容。请记住,没有坏问题,只有未问的问题。您的好奇心是解锁更深层理解的关键,因此请随时提出任何问题。
最后,请记住,在课程结束时,我会与您分享其他资源的链接,例如书籍、文章、博客、视频,这些资源专门用于某一特定硬技能的深入学习,这些都是我自己在学习技术艺术时使用过的。这些资源不属于本课程,因为这些是其他人完成的工作,并且并非所有资源都有免费访问权限。但我们稍后会回到这个主题。
作为第一步,让我们使用本课程获取每项技术艺术技能的基础知识。好的,很高兴开始。无论您选择哪个作为下一个主题,我们在下次讲座中再见!
在本讲座中,我们将讨论技术艺术家的角色,包括其职责、子类型、资历对职责的影响,以及人们从哪些部门转变为技术艺术家。
首先,让我们定义什么是技术艺术家。大多数时候,技术艺术家的角色被解释为程序员与内容创作者之间的桥梁。每家公司对这一角色的定义略有不同,这取决于公司规模、项目类型、工作流程等。但一般来说,技术艺术家负责所有不完全属于程序员和艺术家职责范围内的任务。
我在LinkedIn上看到过一张有趣的图片,完美地解释了技术艺术家:这是一个在项目中可以做任何事情的人。
程序员开发的技术与艺术家创作的内容最终应该在游戏中整合并按照设计意图运行。这就是技术艺术介入的地方。它包括创建用于将数据导入/导出到引擎的工具,在游戏中应用这些数据,验证它,优化性能等等。此外,技术艺术家在不同部门之间进行广泛沟通,确保每个团队清楚彼此的理解和项目的总体目标。
你可能会感到惊讶,但程序员和艺术家之间存在语言障碍,尽管他们都使用英语。我的意思是,他们的思维方式不同,技术艺术家可以清除这些团队之间的误解。此外,技术艺术家通常是其他开发者在遇到问题时求助的人。例如,自定义工具无法正常工作,引擎完全无法加载,寻找无敌代码,或者其他可能在生产过程中出现的问题。
这些是技术艺术的三个核心职责,但实际上,工作内容远不止这些。在小团队中,技术艺术家负责多个领域,但我认为这并不是特别有效。技术艺术家需要对生产的许多不同领域有深入的了解,包括数学、编程、工作流程、渲染、绑定、特效、物理、程序化等等。然而,仍然有很多人无法将如此广泛的技能信息始终牢记在心并随时应用。因此,大公司通常会根据个人主要涉及和专业化的领域对技术艺术家的角色进行细分。
让我们探索技术艺术家的可能子类别,并明确每个类别所需的技能。
这些人专注于渲染和照明过程。要精通这一点,需要对数学和编程有深刻的理解,尤其是着色器语言。此人能够实现项目的独特色彩风格,超越简单场景照明设置。
这些人具备高级绑定技能。绑定是用于骨骼动画的技术,表示一个3D角色模型,使用一系列相互连接的数字骨架。在最简单的形式中,3D绑定是为3D模型创建骨架的过程,以使其能够移动。但正如你所想,绑定技术艺术家的工作超越了手动创建骨骼和分配权重的常规工作。他们使用自动化和AI机器学习来获得高级结果。数学也是他们的强项,因为许多任务将与向量、矩阵和四元数相关。
创建一个巨大的空世界很简单,但有意义地填充它以带来生命却极其困难。填充世界的想法是设计师的责任,但直接实施由程序化技术艺术家管理。他们创建规则以程序化生成大型游戏世界,通常负责生成地形、纹理、放置道具、植被,填充世界中的道路、交通标志、电缆、建筑等。
这种技术艺术家,如标题所示,专注于用户界面。用户界面部分可能被误认为是简单或明显的,但要使用户界面可靠、一致、可扩展到任何设备的任何分辨率无疑是一个挑战。
这些人负责建立团队使用的生产规则和流程。除了自身的流程知识,人员还应精通流行的市场工具、流行文件格式及其优缺点等。此人应擅长编程,因为许多Python和C#相关的工作将出现在其任务清单中,以实现DCC(数字内容创作,如3ds Max、Maya或Blender)与引擎(如Unity、Unreal Engine或一些自定义引擎)之间的有效桥梁。
这是技术艺术家家族中一种稀有的存在,通常拥有至少6年或通常10年以上的经验,并且能够在最短时间内在任何给定的技术艺术责任中变得有效。通才技术艺术家的秘密很简单。这个人有机会在不同公司中担任上述所有角色,并且在程序、物理、工作流程、照明、渲染、特效等领域都很自信。
现在是时候发现基于资历水平的技术艺术家职责示例。假设技术艺术部门有一个通用任务,即向像《地平线:零之曙光》这样的3D AAA开放世界游戏交付云作为功能。
高级技术艺术家将负责建立云交付的整个流程。他会进行现有解决方案的初步研究,选择最符合需求的方案,如果没有一个满足功能要求的方案,那么他可能会从头开始创建自己的方法。
中级技术艺术家将负责创建一个工具,用于在游戏世界中填充云的覆盖。这可能包括创建嵌入游戏引擎窗口或一个与引擎连接的独立应用程序。
初级技术艺术家将使用中级艺术家创建的工具,他的工作实际上是利用该工具在游戏世界中填充云的覆盖。
首席技术艺术家则负责审查团队进度,提供反馈,向导演报告并与其他团队沟通。
接下来,我们来探讨成为技术艺术家的可能路径。与与技术艺术相关的所有内容一样,达到这一角色没有严格的路径,但我设法将四种最受欢迎的职业发展路径分开。
程序员,特别是工具程序员。他们的工作与技术艺术家相似,因此转向技术艺术角色不会感到完全不同。通常,程序员转向技术艺术的核心驱动力是希望创造更具视觉和艺术可接触性的东西,例如之前提到的云系统。
3D艺术家或动画师。有时,艺术家会对自动化产生兴趣,并开始创建一些小脚本以替代手动工作,例如使用适当的命名约定或文件存储路径导出资产。对于这些人来说,艺术领域已经相对成熟,他们专注于学习深入的技术技能,以为技术艺术职责做好准备。
质量保证或简单的测试团队。如果一个人曾参与3D资产测试,清楚了解拓扑结构、材料、PBR、纹理等,并自我推动以获得转换为技术艺术家的所需经验,那么这个路径将变得非常简单和直接。顺便提一下,这也是我的路径。我在育碧的职业生涯始于测试员,但不久后我转向了技术QA,并在表现良好后获得了专门的导师和为期9个月的技术艺术家实习。
独立游戏开发者转向全职技术艺术家的职位。独立开发者在个人项目上工作,实际上非常适合技术艺术家的角色,因为这些人对引擎相对熟悉,并且了解大多数核心功能开发。他们可能缺乏的只是代码样式实践、资产管理、与同事的协作以及其他团队相关的内容。
每个人都在构建自己的生活和职业。如果您付出足够的努力、热情和爱,过程一定会成功。您可能没有其他人那么优秀,也可能没有那么多样的经验,但这并不重要。您甚至不应该与他人进行比较。与一个月前、一年前或五年前的自己比较。如果您看到积极的进步,那么您就是在正确的道路上。
好的,关于激励的内容就说到这里。我只想说,如果您没有上述提到的任何背景,不要感到害怕。这些背景更像是锦上添花,而不是成为技术艺术家的必要条件。
本讲座中,我们涵盖了技术艺术家的核心职责,阐明了该角色的不同子类型及其主要技能,模拟了基于资历水平的技术艺术家可能的工作负荷,并探讨了发展成为技术艺术家的最受欢迎的职业路径。
我们完成了介绍部分,现在将进入技术艺术家的硬技能。谢谢,期待在下节课见到您!
欢迎来到专门讨论实时引擎的硬技能部分。在开始之前,我想感谢您注册本课程。我很高兴看到您在我们一起学习的过程中不断成长和取得成功。请记住,我会在您需要支持的时候始终在这里。
现在,让我们开始我们的学习之旅。在这一部分,我们将澄清什么是实时引擎,发现市场上最流行的实时引擎,即虚幻引擎和Unity,以及一些自定义的内部引擎。我们还将以最简单的方式解释实时渲染,了解如何分析游戏以找出性能问题,什么是游戏中的CPU和GPU瓶颈,以及如何优化性能,即如何解决性能问题,最后如何使用渲染文档调试帧创建。
在这一部分,有很多重要的内容等着我们。让我们马上开始吧!
大家好!在这节课中,我们将简要讨论实时引擎。首先,什么是实时引擎?通常我们称之为游戏引擎。它是开发者用来将视觉效果和逻辑组装成最终产品的应用程序。在游戏的情况下,它就是一个可玩的产品。
通常,游戏引擎包含各种内置工具,用于特定目的,比如创建用户界面、视觉效果、声音、关卡设计、性能分析等等。一些工作是在代码中完成的,主要是游戏逻辑和自定义解决方案;一些工作是在基于节点的工具中完成的,比如创建着色器,或某些数据驱动的游戏逻辑;还有一些是在文本编辑器中配置各种组件和游戏对象属性;一些则直接在游戏引擎视口中进行,例如设计地形或游戏关卡布局。
您可能会惊讶,但技术艺术家必须至少了解项目中使用的游戏引擎的所有流程和工具。当然,没有必要在每个环节上都成为专家,尤其是在大型AAA项目中,但能够了解这些流程并理解其工作原理是必须的。
总结一下,当您学习一个新的游戏引擎时,技术艺术家应该尽可能广泛地学习这款游戏引擎的各个方面,至少在基础层面上了解每个方面,然后再深入学习与日常任务相关的领域。
如您所知,目前市场上最流行的游戏引擎是虚幻引擎和Unity。它们过去常常被区分为虚幻引擎用于AAA PC和主机游戏,而Unity则非常适合针对移动设备的独立项目。在某些情况下,这种说法是正确的,但您应该意识到这并不是严格的规则或限制。这两个引擎都非常灵活,经验丰富的团队可以在任一引擎上交付合格的产品。
那么,您应该学习哪个引擎作为第一个游戏引擎呢?我个人认为Unity对于初学者会更容易,但这取决于您自己。在选择时,请考虑游戏规模,比如虚幻引擎的开放世界或Unity的超休闲游戏,以及您现有的经验。我是说,赶上曾经见过的东西会更容易,即使知识早已遗忘。
一些公司使用自己的内部游戏引擎。它们曾被称为自定义引擎,Crytek的CryEngine或Ubisoft的Dunia就是这样的例子。显然,除非您在其中工作,否则您无法学习自定义引擎,因为它是封闭的,但这并不应该成为您在这样的公司被雇佣的障碍,因为自定义引擎受到其他游戏引擎的启发,许多工具和解决方案对于虚幻引擎或Unity用户而言也会相似。
由于我在Ubisoft工作,我主要接触自定义引擎,因此我想根据自己的经验再多说几句。首先,使用自定义引擎的主要好处是开发人员可以访问完整的源代码。这意味着可以对任何现有功能进行更改或调整,无论是渲染管线还是一些代码和逻辑,性能分析等等。团队拥有完全的控制权,可以直接决定什么最适合他们的需求。从商业角度来看,这是一个有趣的事情,因为不会有任何利润被削减,但这属于完全不同的领域。
但是,使用独特的技术,他们可能会创造一些市场上尚不存在的新技术。主要缺点是团队必须从头开始创建所有功能。通常这是一种重新发明轮子的方式,可能无法与其原始产品竞争。有时我希望能在虚幻引擎上工作,而不是我们的内部解决方案,但也有一些时刻自定义引擎表现出色,我无法想象更简单的方法来实现目标。此外,自定义引擎的用户界面和用户体验可能较弱,因为开发人员通常专注于交付功能,往往会忘记它必须对用户方便。
现在我们将进入本主题中需要学习的常规内容。请记住,这张幻灯片将在课程中的每节课结束时出现,包含与技术艺术家相关的额外主题列表,这些主题都是非常有用的学习内容。
对于本节课,进一步学习的内容将简短但同时广泛。您需要学习至少一个您选择的游戏引擎。总结一下这一讲,我想强调技术艺术家在各种主题上与游戏引擎合作的关键需求,因此如果您还没有做到这一点,请务必进行研究并花时间探索虚幻引擎或Unity。
谢谢大家!
大家好!在这一讲中,我们将探索渲染管线的最简化形式。首先,让我们开始了解渲染的定义。什么是渲染?渲染是由渲染引擎执行的一个过程,在这个过程中,数据(即对象的网格、纹理等)被表示为2D图像。这些2D图像在显示设备上进行可视化,例如PC显示器。我们通常称这些2D图像为帧,而准备帧的过程称为渲染。
那么,实时渲染是什么?实时渲染就像简单渲染,但速度非常快。通常,游戏开发者的目标是让游戏的最终性能结果至少达到每秒30帧。为了实现这一目标,一帧的计算时间应控制在33毫秒内。每秒提供如此多的简单2D图像创建了一种互动感,使这些图像充满生机。这不再只是图像的序列,而是一个活生生的3D游戏世界。
单个帧或2D图像是如何绘制的呢?简而言之,过程既混乱又复杂。渲染管线的简化视图可以在这张图中看到。在左侧,您会看到资源,大致是网格和纹理。在右侧,则是最终渲染或帧。中间的大部分是我们称之为简化渲染的部分。如您所见,使用了两种颜色。蓝色方块表示相对静态的过程,开发者对此有非常有限的控制。绿色方块是着色器,开发者可以在这些地方添加自定义解决方案,从而实现独特的视觉效果,比如《塞尔达传说》中使用的色调着色器。
我们将在专门的部分深入了解着色器。我最初计划描述渲染管线的每个基本步骤,但我决定将其留作可选学习内容。这样做的主要原因是,技术艺术家通常不直接负责项目中的渲染管线建立。这主要是渲染或称为3D程序员的任务,此外,他们通常并不是从零开始创建管线,而是管理现有解决方案,并根据项目的特定需求进行调整。
顺便说一下,我记得在Ubisoft学习渲染管线时参加了为期四周的小型每日培训。这个培训有用吗?当然有!我在工作中是否定期使用所获得的知识?不,完全没有。对于技术艺术家而言,了解整个过程的一般情况而不会在相关术语中迷失是足够的,比如视锥剔除、G缓冲区、像素、顶点着色器、重塑、前向和延迟渲染等。有时技术艺术家参与着色器的创建,但主要仅限于几何着色器。
关于进一步学习该主题的内容,首先,请检查完整的渲染管线的详细信息。再次强调,不需要理解每一个步骤。同时,要了解前向渲染和延迟渲染之间的区别,这一点很重要。阅读一些关于AAA游戏的图形研究也很不错,看看人们如何解释帧是如何绘制的。我知道关于GTA V和Doom 2016的研究都很不错。
我可以想象,这一讲可能给您带来了更多问题而不是答案。由于这个主题的整体难度,您需要接受这种结果。我记得试图通过阅读Eric Haynes的《实时渲染》一书来弄清楚渲染管线。我尝试了多少次?也许三到四次,总是无法完全理解。但每次尝试,我都能在不失去理解的情况下进一步进行。这种原理在这里同样适用。下次您遇到渲染管线时,至少不会立刻迷失方向。这就是本课程的目标,让您在通往技术艺术的道路上不迷路。
在本课程中有很多主题等待探索,最开始并不需要详细理解所有内容。谢谢大家,我们在下一节课见!
大家好!在这一讲中,我们将探讨性能分析技术。技术艺术家是确保最终游戏产品运行流畅并且视觉效果出众的魔法师。然而,即使在游戏设计得再细致的情况下,性能问题也可能会出现,且相信我,这种情况肯定会发生。我们将深入了解为什么游戏并不总是运行流畅,并探索性能分析技术以帮助识别这些问题。
想象一下:您花费数月甚至数年时间制作令人惊叹的3D模型,优化着色器,微调纹理。游戏在您的工作站上看起来非常棒,但当您在不同的平台上或使用更复杂的场景时,它却卡顿、延迟,甚至崩溃。这是为什么呢?游戏是复杂的软件系统,依赖于多个元素的和谐互动,包括图形、物理、人工智能、音频、游戏逻辑等等。当任何一个元素出现问题时,就会导致性能问题。
以下是一些常见原因:
瓶颈:就像游戏处理管线中的交通堵塞。当系统中的某个部分减慢其余部分的速度时,会产生多米诺效应,影响整体性能。常见的瓶颈包括:
低效代码:代码优化在游戏性能中发挥着重要作用。编写不当或低效的代码会导致CPU或GPU的工作量增加,从而导致性能下降。
资产管理:不当的资产管理可能会导致加载时间过长、高内存使用和在游戏过程中资产流媒体传输缓慢。
现在我们已经识别出潜在的性能问题,让我们讨论您作为技术艺术家如何通过性能分析来缩小这些问题的范围。
确认问题:首先,信任任何人都不可取。这是游戏开发中的黄金法则。确保确实存在性能问题。激活当前FPS计数器(在所有游戏引擎中均可用),验证该位置的性能确实低于目标。
做出假设:尝试猜测一般的性能问题。是由于AI问题(例如该位置有很多NPC),还是某些特效(如周围有浓密的烟雾或循环爆炸),又或者是某些复杂的高多边形模型?在可能的原因中进行排除,您可以通过禁用或移除它们来确认。
进行性能捕获:通常,这是开始和停止记录性能结果到相应文件的切换,这些结果将在后续使用性能分析工具中打开。
加载性能分析工具:市场上有许多可供游戏开发者使用的性能分析工具。流行的选项包括Unity Profiler和Unreal Profiler。这些工具提供有关CPU和GPU性能、内存使用情况、资产加载时间等的全面概述。
打开性能数据文件:在性能分析工具中打开性能数据文件,查看存储的信息。
进行性能分析:查看CPU和GPU使用情况的尖峰、长帧渲染时间和过度的内存分配。分析调用栈可以帮助识别瓶颈的根本原因。
与团队合作优化:一旦识别出性能瓶颈,与程序员和艺术家紧密合作,优化有问题的区域。这可能涉及重写代码、减少着色器复杂度、优化资产大小或改进资产加载策略。
测试和沟通:确保在所有目标平台上进行测试以确保一致的性能,并向团队解释问题以及如何防止其再次发生。
首先,探索游戏引擎的性能分析工具,了解CPU和GPU是如何协同工作的。这些主题与实时引擎、CPU-GPU瓶颈以及渲染管线中解释的内容相交。这种关系将帮助您建立坚实的基础,以便深入学习。
作为技术艺术家,您在游戏开发过程中的角色是确保玩家获得流畅的游戏体验。了解为什么游戏并不总是运行流畅,以及掌握性能分析技术是必不可少的技能,这将使您能够识别和缓解瓶颈,优化代码和资产,从而最终交付出抛光且令人愉快的游戏。通过利用性能分析工具并与开发团队紧密合作,您不仅会发现流畅游戏背后的秘密,还将对游戏的整体成功做出重要贡献。感谢您在这门课程中付出的努力,祝您一切顺利!
欢迎回来参加我们的技术艺术家课程。在本讲中,我们将讨论场景优化。作为技术艺术家,您的角色不仅限于创造令人惊叹的视觉效果。您还是性能的架构师,确保您的游戏在各种平台上平稳运行。在上一讲中,我们探讨了如何识别性能问题。现在,让我们探索关键的优化策略,以实现稳定的性能。
首先,资产是任何3D游戏的基本元素。关于资产优化,首先想到的是细节层次(Level of Detail, LOD)技术。这种技术涉及为对象创建多个版本,每个版本与前一个版本相比都有减少的细节。这些版本会根据与相机的距离进行使用:离得越近,显示的对象就越详细,反之亦然。通过为远处的对象渲染简化版本,我们显著减少了所需的处理能力,从而提高了性能而不妥协视觉质量。
纹理压缩是一种在不牺牲太多视觉清晰度的情况下,减少纹理内存占用的技术。我们可以利用巧妙的算法来实现性能与质量之间的平衡。通过使用这些格式,您可以显著降低内存使用,同时保持几乎相同的视觉质量。
网格优化涉及对3D模型进行精简,使其尽可能高效。这个过程通常包括去除不必要的顶点、合并相似的表面以及减少多边形数量。然而,我将这种实现方法放在最后提到,因为根据当前的技术,多边形计数实际上不再是一个大问题。
视觉效果在创造身临其境的游戏世界中发挥着重要作用,然而如果处理不当,它们也可能非常消耗资源。粒子是许多视觉效果的核心,然而在复杂效果中,巨大的粒子数量可能会超载GPU。通过限制粒子的数量并利用例如广告牌(Billboarding)等技术,可以在不超载GPU的情况下保持视觉清晰度。
复杂的着色器,尤其是那些具有多个通道的着色器,会对GPU资源造成显著的负担。尽可能选择更简单的着色器,以实现所需的视觉效果而不对显卡造成过大的负担。此外,将多个纹理合并为一个大的纹理通常是明智的做法,这样可以减少纹理采样的数量并提高纹理渲染性能。
纹理图集(Texture Atlases)尤其适用于具有共同特征或图案的对象。例如,考虑一个森林场景,许多树木具有相似的树皮纹理。与其为每棵树加载单独的纹理,不如创建一个纹理图集,将这些相似的树皮纹理合并为一个大纹理。这样,显卡在渲染场景时更轻松,从而改善整体性能。
实例化(Instancing)是一个强大的技术,用于高效渲染多个相同对象的实例,从而减少CPU和GPU的工作负载。GPU实例化允许您以相似的绘制调用渲染多个实例。通过将相似对象批处理在一起,您可以显著提高性能,特别是在有许多相同对象的场景中。适合实例化的对象包括树木、草地、地面覆盖物、岩石、可能的星际环、路灯和其他类似的相同对象。
后处理效果为游戏增添了光彩,但它们也可能成为性能负担。大多数后处理效果依赖于着色器实现其视觉效果,因此调整这些着色器的质量设置可以帮助您找到视觉清晰度与性能之间的最佳平衡。例如,辉光(Bloom)和景深(Depth of Field)效果虽然在视觉上引人注目,但也可能非常消耗资源。考虑使用这些效果的优化版本,或者仅在“关键点”(即每个玩家在游戏过程中必定会访问的地方)实施。
请注意,后处理在性能方面通常是昂贵的,有时除了简单地禁用效果之外,您别无选择。
除了上述特定技术外,还有其他额外策略可以帮助您实现更好的性能:
您在本讲中听到的许多新词可能仍然不完全清楚。作为第一步,尝试更深入地了解以下优化方法:LOD、纹理压缩和GPU实例化。这些是基础。一旦您理清这些概念,再回过头来快速研究其他提到的方法。
掌握场景优化是任何技术艺术家的重要技能。通过战略性地应用这些技术,您将能够创建视觉惊艳的游戏,并在各种平台上流畅运行。记住,在性能和视觉清晰度之间的平衡是微妙的,通过实践,您将成为微调游戏的高手。祝您优化顺利,感谢您!下次讲座见。
欢迎来到我们技术艺术家课程的下一讲。在本讲中,我们将探讨帧调试,这是优化游戏性能的一个关键技能。我们将讨论什么是帧调试、何时使用它,以及如何使用 RenderDoc 执行帧调试的逐步过程。
帧调试是在某些场景中至关重要的。首先,当游戏经历帧率下降或卡顿时,帧调试可以帮助识别导致减速的特定渲染操作。其次,帧调试对于调查图形故障(如错误的着色器输出、Z-fighting 或纹理采样问题)也非常有效。此外,当显卡成为瓶颈时,帧调试可以提供有关 GPU 如何处理渲染任务的洞见,以帮助找出瓶颈的原因。
RenderDoc 是一个强大的帧捕获和分析工具,广泛用于游戏开发行业。以下是使用 RenderDoc 执行帧调试的步骤:
下载和安装 RenderDoc:访问官方网站下载并安装 RenderDoc。它是免费使用的。大多数现代引擎都有专门的插件或对 RenderDoc 的直接支持,因此如果您使用的是 Unity 或 Unreal,那里已经有解决方案可以使用 RenderDoc。
捕获日志文件:启动您的游戏或应用程序,使用指定的键或命令(通常是键盘上的 F12)触发 RenderDoc 捕获一帧。这将冻结应用程序并创建一个帧捕获文件。
分析捕获的帧:在 RenderDoc 中打开捕获的帧,并尝试识别问题的原因。RenderDoc 界面提供了帧渲染阶段的详细概述,包括顶点和像素着色器、渲染目标等。
性能分析:调试需要实验和迭代。根据您的发现进行调整,并再次捕获帧以进行验证。这一迭代过程是实现最佳渲染性能的关键。
RenderDoc 的用户界面初看可能有些令人不知所措,但考虑到它提供的信息量以及作为一个100%开源项目,用户界面还是相当可接受的。以下是 RenderDoc 捕获帧的用户界面简要概述:
要提高帧调试的经验,建议深入阅读官方文档,然后尝试在实践中应用所学知识,检查您当前正在玩的任何游戏的帧,出于好奇。
使用 RenderDoc 进行帧调试是任何技术艺术家的必备技能。它提供了调整渲染管线、优化着色器和纠正视觉异常所需的洞察力。通过理解何时以及如何利用帧调试,您将掌握工具来创建不仅视觉惊艳而且在各种硬件配置上运行流畅的游戏。深入了解 RenderDoc,发现您游戏渲染的秘密,熟悉这个略显混乱但功能强大的用户界面,提升您的游戏开发水平。祝您调试愉快!
欢迎来到专门介绍技术艺术家脚本技能的新部分。在本节中,我们将踏入编码和自动化的世界,这些都是使技术艺术家能够创建高效管道和创新工具的基本技能。作为一名技术艺术家,掌握脚本语言的坚实基础是必不可少的。我们将讨论 Python,这种多功能语言在脚本开发中起着关键作用;还会介绍适用于 3ds Max 的 MaxScript 和用于 Maya 的 MEL。此外,我们还将探索一些独立示例,展示技术艺术通过脚本可以实现的内容。那么,让我们深入了解这一重要领域。
Python 是一种流行且功能强大的编程语言,广泛应用于各个领域,包括游戏开发。作为技术艺术家,学习 Python 可以帮助您自动化重复的任务,创建自定义工具和提高工作流程的效率。以下是一些技术艺术家可能会用 Python 实现的功能:
MaxScript 是 Autodesk 3ds Max 的脚本语言,允许用户创建自动化工具和自定义工作流程。技术艺术家可以使用 MaxScript 实现以下功能:
MEL(Maya Embedded Language)是 Autodesk Maya 的内置脚本语言,类似于 MaxScript。技术艺术家可以利用 MEL 实现以下目的:
在这一部分,我们将展示一些技术艺术家通过脚本实现的示例项目。包括:
掌握脚本技能对于技术艺术家来说至关重要。通过学习 Python、MaxScript 和 MEL,您将能够创建高效的工作流程和工具,提高团队的生产力。在接下来的课程中,我们将深入探讨每种脚本语言的具体用法和应用示例。让我们开始这段脚本学习之旅吧!
你好!在本讲中,我们将讨论技术艺术家需要掌握的最小Python知识。作为技术艺术家,进入脚本编程的世界为您和您的团队的工作流程提供了自动化和高效性的大量可能性。要在这一领域取得成功,建立扎实的脚本知识基础至关重要。本讲将重点介绍Python,这是一种在游戏和工具开发中广泛使用的多功能语言。我们将重点学习您应该掌握的关键组件,以便在技术艺术家的角色中有效利用Python,这些组件包括数据类型、条件与循环、函数、导入外部库和文件操作。
理解数据类型是知道如何在脚本中操作和交互不同类型的信息。从最简单的形式开始,整数和浮点数。知道如何对它们执行基本的算术运算是基础。
条件语句和循环是自动化的驱动力。它们使您的脚本能够根据特定条件做出决策并执行操作。
函数是结构良好的代码的基本构件。您可以在不同的地方和需求中重用这些代码块。
导入将特殊工具添加到您的脚本,使其更强大且多功能。您可以导入整个模块,使用别名,或者仅导入模块中的特定函数。
文件操作是自动化的核心方面。
当编写Python脚本时,技术艺术家不必过于担心代码运行的速度。最重要的是确保代码能正常工作并每次返回正确结果。无论是4秒还是2秒并不重要,关键是创建一个可靠的工具来完成工作。
上述所有内容应当清晰易懂。任何书籍或视频课程都可以帮助您达到这一点,但请勿深入研究Python。学习到类的概念即可。
祝您在学习过程中一切顺利!
大家好!在本讲中,我们将讨论MaxScript语言。以下是本讲的议程:
MaxScript是专为Autodesk 3DS Max软件设计的一种强大脚本语言。它作为艺术创意与3D建模和动画技术能力之间的桥梁。MaxScript使技术艺术家能够自动化重复任务、创建自定义工具并扩展3DS Max的整体功能。
通过MaxScript,技术艺术家可以实现以下功能:
值得注意的是,虽然MaxScript是3DS Max的本地脚本语言,但在3DS Max中用MaxScript实现的所有功能也可以使用Python完成。许多技术艺术家发现Python更为灵活,因为它不仅可以用于3DS Max,还可以在其他软件和应用程序中使用。因此,我的建议是专注于Python并使用Python开发新功能,而不是使用MaxScript。然而,了解MaxScript仍然很有用,因为在您工作中的项目可能已经在使用一些MaxScript工具,并需要持续支持。在某些情况下,您甚至可能希望将它们转换为Python,但这只是我的个人偏好。
现在让我们来看一些实际的MaxScript代码。这段脚本将生成一个立方体网格,并为每个立方体分配随机颜色。每行代码都有注释,因此您可以清楚地理解发生了什么。要运行此脚本,您应该打开3DS Max应用程序,转到脚本,选择MaxScript,然后在新出现的窗口中编写此代码。完成代码后,点击运行按钮。这样,您的3DS Max场景中应该会创建一个包含随机颜色立方体的网格。
-- 创建立方体的数量和网格大小
numCubes = 10
gridSize = 5
-- 循环生成立方体并分配颜色
for i = 1 to numCubes do
(
-- 计算立方体位置
posX = (i - 1) % gridSize * 2
posY = (i - 1) / gridSize * 2
-- 创建立方体
cube = box length:1 width:1 height:1
cube.position = [posX, posY, 0]
-- 随机颜色
cube.wirecolor = color (random 0 255) (random 0 255) (random 0 255)
)
在此示例中,几乎所有在MaxScript中编写的内容都可以通过PyMax模块以Python代码表示。下面是相同立方体网格生成器的Python版本。是的,与MaxScript版本相比,这里有更多的代码行,但我们有熟悉的Python语法,非常友好。
import random
import pymxs
rt = pymxs.runtime
# 创建立方体的数量和网格大小
num_cubes = 10
grid_size = 5
# 循环生成立方体并分配颜色
for i in range(num_cubes):
# 计算立方体位置
pos_x = (i % grid_size) * 2
pos_y = (i // grid_size) * 2
# 创建立方体
cube = rt.Box(length=1, width=1, height=1)
cube.position = rt.Point3(pos_x, pos_y, 0)
# 随机颜色
cube.wirecolor = rt.color(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
为了更全面地理解MaxScript,您可以参考Autodesk的MaxScript官方文档和资源。此外,进行一些研究以了解更多使用MaxScript实现的自动化解决方案,并查看如何将旧版MaxScript转换为Python。
通过深入学习MaxScript,您为自己掌握了一种强大的工具,以增强作为技术艺术家的能力。随着实践和探索,您将解锁更多优化工作流程和为3DS Max项目创建自定义解决方案的方法。祝您脚本编写顺利!
大家好!在本讲中,我们将讨论Maya Embedded Language(简称MEL)。本讲的议程和结构将与之前关于MaxScript的讲座非常相似,因此您将了解这种脚本语言的存在,并在需要时准备深入细节。
MEL是为Autodesk的Maya软件设计的脚本语言。
通过MEL,您可以实现以下功能:
虽然Python是一种多用途且广泛使用的脚本语言,但MEL在Maya生态系统中仍然占有重要地位。了解MEL的好处包括:
现在让我们来看一些实际的MEL代码。这段脚本将生成一个立方体网格,并为每个立方体分配随机颜色。每行代码都有注释,因此您可以清楚地理解发生了什么。要运行此脚本,您应该打开Maya应用程序,转到脚本编辑器,在窗口中编写此代码并点击执行按钮。这样,您的Maya场景中应该会创建一个包含随机颜色立方体的网格。
// 创建立方体的数量和网格大小
int $numCubes = 10;
float $gridSize = 5.0;
// 循环生成立方体并分配颜色
for ($i = 0; $i < $numCubes; $i++) {
// 计算立方体位置
float $posX = ($i % $gridSize) * 2;
float $posY = floor($i / $gridSize) * 2;
// 创建立方体
string $cube[] = `polyCube`;
move $posX $posY 0 $cube;
// 随机颜色
float $r = rand(0, 1);
float $g = rand(0, 1);
float $b = rand(0, 1);
setAttr ($cube[0] + ".overrideEnabled") 1;
setAttr ($cube[0] + ".overrideColor") -1;
setAttr ($cube[0] + ".overrideRGBColors") 1;
setAttr ($cube[0] + ".overrideColorRGB") $r $g $b;
}
正如我所说,几乎所有在Maya中编写的内容都可以使用Python代码表示。以下是相同立方体网格生成器的Python版本。
import random
import pymel.core as pm
# 创建立方体的数量和网格大小
num_cubes = 10
grid_size = 5
# 循环生成立方体并分配颜色
for i in range(num_cubes):
# 计算立方体位置
pos_x = (i % grid_size) * 2
pos_y = (i // grid_size) * 2
# 创建立方体
cube = pm.polyCube()[0]
cube.setTranslation((pos_x, pos_y, 0))
# 随机颜色
r = random.random()
g = random.random()
b = random.random()
pm.polyColorPerVertex(cube, rgb=(r, g, b))
为了更全面地理解MEL,您可以参考Autodesk的Maya脚本官方文档和资源。此外,进行一些研究以了解更多使用MEL实现的自动化解决方案。
通过深入学习MEL,您为自己掌握了一种强大的工具,以增强作为技术艺术家的能力。随着实践和探索,您将解锁更多优化工作流程和为Maya项目创建自定义解决方案的方法。就像在一个国家旅行时使用英语一样,Python是通用语言,而MEL是本土语言。在熟悉Python后,不要害怕学习这些特定的脚本语言。
祝您好运,我们在下一个讲座中再见,届时我们将探索技术艺术家使用这些脚本语言所取得的一些实际示例。
大家好!在本讲中,我将展示五个实际示例,展示脚本如何帮助技术艺术家简化工作流程、自动化任务并提高效率。今天的议程直接包含五个脚本示例。所有示例都是抽象的,但可以轻松调整为实际应用。
在第一个示例中,目标是从存储为XML格式的性能日志文件中计算平均FPS。以下是代码示例,每行都有注释,便于理解方法的整体思路。
import xml.etree.ElementTree as ET
# 读取XML文件
tree = ET.parse('performance_log.xml')
root = tree.getroot()
# 初始化FPS总和和计数
fps_sum = 0
fps_count = 0
# 遍历每个帧的FPS数据
for frame in root.findall('frame'):
fps = float(frame.get('fps'))
fps_sum += fps
fps_count += 1
# 计算平均FPS
average_fps = fps_sum / fps_count
print(f'Average FPS: {average_fps}')
第二个示例是使用MaxScript建立3ds Max与Substance Painter之间的自动化桥梁。此工具使艺术家能够轻松地将网格从3ds Max导出并立即加载到Painter中。每行代码也都有注释,便于理解。
-- 选择要导出的对象
select $MyMesh
-- 导出到Substance Painter
exportSelected "C:\\path\\to\\export\\MyMesh.fbx"
第三个脚本使用Python,旨在快速重命名具有PNG扩展名的文件。它展示了在目录中重命名特定文件的整体思路,可以进一步修改为根据后缀名(如粗糙度、法线、透明度等)命名纹理文件,以便着色器能更好地识别和处理这些纹理。
import os
# 目录路径
directory = 'path/to/textures/'
# 遍历目录中的文件
for filename in os.listdir(directory):
if filename.endswith('.png'):
new_name = filename.replace('.png', '_texture.png')
os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))
这个工具专门为Substance Painter创建,旨在检查纹理集的分辨率是否符合要求。它是一个简化的版本,技术艺术家可以在此基础上构建一个更高级的验证器,以适应不同类型资产的不同纹理分辨率预算。
import os
# 假设已有分辨率数据
required_resolution = {
"melee_weapon": 2048,
"ranged_weapon": 1024,
"shield": 512
}
# 检查当前纹理集分辨率
current_asset_type = "melee_weapon" # 假设从纹理集中提取
current_resolution = 1024 # 当前纹理分辨率
if current_resolution > required_resolution[current_asset_type]:
print("Warning: Resolution exceeds the budget!")
最后一个示例是使用MEL脚本在Maya软件中自动分配骨骼,节省时间。
// 假设已经选择了模型
string $selected[] = `ls -sl`;
string $skeleton = "mySkeleton";
// 将骨骼绑定到模型
skinCluster -toSelectedBones true $selected;
为了更全面地理解脚本,您可以参考其他技术艺术解决方案的示例。重点不仅在于理解脚本的直接实现,还要了解创建该脚本的目的和原因。
如果您想深入学习Python,以下库将非常有用:
这些示例展示了脚本在自动化各种任务方面的强大功能。请注意,仅仅十几行代码就可以创建一个小工具。因此,不要错过在工作流程中使用脚本的强大机会。在此讲座中,我们完成了脚本部分,接下来将进入程序化部分。期待在下一个讲座中与您见面!
欢迎来到程序化内容生成部分。本部分旨在为您提供程序化主义的关键概念和技术概述,这是一种强大的内容创建方法。同时,我想提醒您,本部分及整个课程的目标是提高对技术艺术主题的意识,而不是具体的深度技能发展。
程序化主义概述
在第一讲中,我们将介绍程序化主义作为一种内容创建方法。您将了解程序化主义的含义,并探索通过程序化工具提供的多样化可能性,同时理解何时在项目中整合程序化解决方案是值得的。
Houdini概述
第二讲将提供对Houdini的总体介绍,这是一款在程序化内容生成领域领先的软件。
学习Houdini的路径
第三讲将讨论如何学习Houdini,从何处开始,以及何时需要停止(如果有必要)。
VEX编程语言
在第一讲中,我们将深入探讨VEX,这是一种强大的Houdini脚本语言。
SideFX Labs介绍
第五讲将介绍SideFX Labs,这是一个丰富的工具包,扩展了Houdini的功能。您将发现大量工具和资产,这些工具和资产简化了程序化内容创建过程,使创作更加高效和富有创意。
Substance Designer概述
第六讲将重点介绍Substance Designer,作为创建程序化纹理和材料的工具。
Substance Designer与Substance Painter的整合
最后,在最后一讲中,我们将探索Substance Designer与Substance Painter之间的无缝集成。
通过这些讲座,您将获得程序化内容生成的基础知识和实际应用技能,帮助您在技术艺术领域发展并提高工作效率。准备好进行一系列探索了吗?让我们马上开始吧!
欢迎,未来的技术艺术家!在本讲中,我们将讨论程序化主义的概念。这种方法可以说是内容创作的超级力量。让我们深入了解一下。
程序化主义可以看作是您内容创作的个人助手。您无需手动制作游戏世界的每个细节,而是设置规则和参数,让软件来完成繁重的工作。这意味着您可以更高效地创建模型、纹理甚至整个游戏世界,而不是手动完成。
程序化主义的一个典型示例是创建环境。程序化算法可以生成各种位置、植被和水体的逼真景观,从而节省艺术团队几周甚至几个月的手动劳动,并允许他们通过改变程序化规则轻松地应用剧烈的整体布局变化。
在资产构建的例子中,右侧是手工制作的3D建筑资产,由艺术家使用建模软件手动制作。每个细节,从整体结构到单个纹理,都是专门设计和实施的。这种过程提供了高度的控制,并允许独特、定制的结果,但可能耗时较长,并且不易于大项目的扩展。
在左侧,程序化创建的建筑是自动生成的,遵循一组设计好的规则和给定的初始参数。下面是两种方法的优缺点对比:
核心工具是 Houdini,我们将在接下来的四讲中深入讨论。Houdini不仅是一个工具,更是一个强大的程序化解决方案,几乎涵盖了所有可能的需求。
其他专门的工具包括:
程序化资产是通过节点基础的方法创建的,涉及将不同操作或功能通过节点可视化连接。每个节点执行特定的操作,如噪声生成、形状混合或纹理映射。节点基础的方法增强了灵活性和控制能力,使创作者能够调整参数、尝试不同功能,并实时观察最终用户的影响。
目标是对游戏中应用的程序化解决方案有意识。您可以查找GDC讲座或文章,了解开发者如何使用程序化工具改善他们的游戏。捕捉实施的整体思路,了解使用原因、成功之处和改进空间。
通过深入研究程序化主义,您为自己装备了一种强大的工具,增强了作为技术艺术家的能力。通过实践和探索,您将解锁更多的方式来简化工作流程并为项目创建定制解决方案。欢迎程序化主义,释放您的创造力。在下一讲中,我们将深入探讨Houdini的基础知识。期待见到您!
欢迎,技术艺术家们!今天,我们将探索Houdini,这是您进入程序化内容创作世界的通道。让我们对Houdini进行一个顶层的概述,强调它作为一个多功能的程序化强大工具的特点。
首先,重要的是要理解,Houdini不仅仅是一款软件,它是一个完整的程序化解决方案生态系统。对于初学者而言,试图完全掌握Houdini可能会变得过于复杂。即便是经验丰富的Houdini用户,也总有新的东西可以探索。
Houdini包含了从建模、动画到模拟和着色的广泛功能,提供了无数种实现每个任务的方法。令人惊讶的是,所有这些方法都是有效的,能够达到预期的结果。
在深入研究之前,管理您的期望非常重要。理解Houdini不是一讲或一项快速学习的故事。它需要时间、奉献和探索的意愿。相反,请将本讲视为指南或第一步,为您即将到来的激动人心的学习冒险做好准备。
Houdini的核心建立在程序化的概念上。在Houdini中工作涉及创建节点网络,这些节点相互连接,描述完成任务的步骤。节点具有输入和输出,通过将一个节点的输出连接到另一个节点的输入来创建节点之间的关系。例如,一个创建方块的节点可以连接到一个挤压方块侧面的节点,然后连接到一个细分多边形的节点,最后连接到一个编辑点位置的节点,依此类推。
Houdini的一个关键特性是其分为不同的上下文。每个上下文代表内容创建过程中的一个阶段。您将会遇到的上下文包括:
Houdini 提供多个版本:
关于进一步学习的内容,Houdini是一个独特的工具,需要独特的方法。因此,我决定创建专门的讲座,以更精确的学习步骤来介绍Houdini,而不是在这里简单列出需要学习的内容。因为列表会过于庞大,不适合放在单个幻灯片中,同时也会过于复杂。
接下来,让我们前往下一讲,详细讨论如何掌握Houdini。期待见到您!
大家好!在本讲中,我将与您分享我认为的Houdini最佳学习路径。在开始之前,温馨提醒:Houdini是一个非常复杂的工具,功能强大但复杂,因此请做好不容易上手的准备。您可能需要几周时间来了解基础知识,几个月来学习节点,甚至不知道需要多长时间才能获得足够的经验,正确使用这些节点并产生有效的解决方案。
熟悉Houdini界面
几何上下文的重点学习
选择合适的教程
在本讲的幻灯片中,我列出了几何上下文中常用的节点。请花时间探索这些节点。暂停视频,逐一搜索每个节点以了解其应用、所需输入、参数等。
关于进一步学习的内容,本讲已经提供了大量学习的内容,因此我不会在此增加更多,您至少需要3个月的学习时间。请花时间好好运用这些建议,祝您探索Houdini的旅程顺利!在下一讲中,我们将深入讨论VEX(Houdini内部编程语言)。期待见到您!
大家好!今天我们将深入探讨VEX(向量表达语言),并了解它如何赋能技术艺术家在Houdini中的工作。VEX是一种专门为高性能计算而设计的脚本语言,采用C风格的语法。它处理点、向量、矩阵、属性等多种数据,提供了强大的方法来在Houdini中操控资产。无论您是在处理运行目标、着色器还是数字资产,了解VEX的基础知识都有助于创建高效且强大的工作流程,但并不是强制性的。大多数结果仍然可以通过直接使用预定义节点或在VOP网络内创建自定义逻辑来实现。
在深入了解代码之前,让我们先看看它在Houdini中的整体使用方式。最简单直接的方法是使用Attribute Wrangle节点。当这个节点放置在网络中并被选择时,在它的属性标签中会有一个输入VEX代码的字段,以及几个其他参数来指定代码的执行方式。
现在,让我们来编写一个简单的脚本,通过在Y轴上移动点来修改基础几何体。我将默认的网格节点连接到Attribute Wrangle节点,并用一行代码对几何体进行了显著修改,甚至提供了一个最简单的噪声生成器,可以在处理地形时使用。
addPy.y += rand(@ptnum);
总之,这行代码将每个点的Y分量设置为一个基于其点编号生成的随机值。这意味着每个点将根据其编号拥有不同的随机Y位置。
接下来,我们将进一步介绍条件语句,以根据特定条件应用不同的操作。我在基本表达式中添加了几行代码,现在它还会将网格的右侧抬高并给它上色。让我为您解释每部分代码。
if (addPy.x > 0) {
addPy.y += 1;
Cd.r = 0;
}
+=
运算符是对当前值的简写,表示将右侧的值加到当前值上。我展示了VEX的基础知识,但即使理解这些也足以开始使用VEX构建一些小解决方案。下一步可以是参加专门的课程或阅读Houdini的官方文档。
请不要急于深入学习VEX。如果您是编程人员,可以从简单的单行语句开始逐步实现VEX,并逐渐增加复杂性。但如果您更愿意在Houdini中避免编码,请放心,完全可以在不涉及VEX的情况下取得良好的结果。就我个人而言,我在可能的情况下使用VEX,因为它通常能更快地实现所需的结果。然而,它也有一些缺点,比如可读性不太友好,所以这取决于您自己的选择。
感谢您的参与,我们下次讲座再见!
欢迎来到这节讲座,在这里我们将认识Houdini的SideFX Labs。首先,什么是SideFX Labs?它是由SideFX团队的工具开发者直接创建的一套工具和插件,包含各种创新解决方案,提供最佳实践、灵感以及原型设计的平台,所有这些都是免费的,非常值得一试。
让我们看看如何安装这些工具。最简单直接的方法是使用Houdini的本地启动器应用程序,可以从SideFX的官方网站下载。您可以在初始Houdini安装过程中安装SideFX Labs,或者将其作为包添加到已经安装的Houdini软件中。此外,您还可以直接从GitHub克隆源包并手动安装,但我建议您使用Houdini启动器应用程序的这两种方法。
一旦安装完成,您可以加载Houdini,并在几何体上下文中尝试在标签菜单中输入“labs”。您应该会看到一个可供直接使用的工具列表。
SideFX Labs提供多种工具和资源,可以增强和简化Houdini的各种工作流程。技术艺术家可以利用这些工具优化常见任务,减少重复过程所需的时间。
SideFX Labs中的许多工具都是实验性的或专为原型设计而设计。技术艺术家可以使用这些工具快速迭代和实验新想法,使他们能够找到解决技术挑战的有效方案,而无需投入大量的开发时间。
技术艺术家经常需要创建自定义工具来满足特定项目要求。SideFX Labs可以作为现成工具和资源的宝贵资源,您可以将其用作构建自定义工具的基础或参考,以满足项目的特定需求。
SideFX Labs包括用于资产创建和管理的工具。技术艺术家可以使用这些工具开发和管理可重用资产,从而更容易在项目间保持一致性,并与其他团队成员共享资源。
SideFX Labs引入了实验性功能和工具,这些功能可能最终会纳入Houdini的正式版本。因此,技术艺术家可以通过尝试这些功能,提前获得潜在的未来工作流程和能力的见解。
关于进一步学习的内容,您无需深入学习Labs解决方案本身,而是要了解它们的存在,意识到它们的能力,并在适用时将其应用于项目中。值得注意的是,虽然SideFX Labs提供有价值的工具,但技术艺术家应该注意,其中一些可能是实验性的,可能没有与核心功能相同的官方支持。因此,您可以将它们用于灵感和解决方案,快速找到原型或构建自定义功能的基础,但不应作为核心系统使用。
以上就是本节讲座的内容和Houdini的整体介绍。接下来我们将介绍另一款程序化工具——Substance Designer。下次见!
大家好!欢迎来到我们关于Substance Designer的高级概述,这是游戏开发行业标准的程序化纹理和材料创建解决方案。Substance Designer是一款使用类似于Houdini的节点基础方法的软件,让艺术家能够以高效、非破坏的方式,通过节点和图形设计程序化形状、图案和材料。
正如我所提到的,Substance Designer是一个基于节点的工具,用户可以将不同的节点连接在一起,这些节点代表某些操作,如混合、变换、瓷砖采样、噪声生成等,以实现可通过修改这些节点的参数轻松调整的结果。
让我们来看看用户界面。乍一看,Substance Designer可能有些复杂,但既然你已经见过Houdini,这不会让你感到害怕。默认UI布局中有五个主要窗口。
Explorer(资源管理器):我用绿色矩形突出显示了当前描述的窗口,方便你在屏幕上定位。每个项目都从Explorer窗口开始。它显示你在Designer中打开的包或文件,并让你打开这些包内的不同内容。这个窗口还允许你导入和导出工作。
Designer的图形界面:这是用户实际操作节点的地方,包括添加和连接节点、合理布局等。
Properties(属性窗口):用户在图形或资源管理器窗口中选择的任何内容,其字段和值都会显示在属性窗口中。更改属性可以应用于选定内容的修改,例如更改节点的混合类型。
预览窗口:屏幕底部有两种类型的预览窗口——2D和3D。2D预览用于查看用户双击图形中任意节点的中间结果。3D预览窗口用于显示多个纹理输出的结果,这些输出组合形成一个物理基础材料。顺便说一句,可以将默认立方体替换为任何其他自定义网格,以便获得更精确的3D预览。
Library(库窗口):位于左下角,显示可用于构建图形的所有内容。
在这一主题中,你应该一般了解如何使用Substance Designer,并准备好提供用Python编写的脚本工具,为常规设计师用户带来质量提升的改善。
最后,我想强调的是,Substance Designer是材料或环境艺术家的日常工具。技术艺术家应该了解这个工具的存在,知道它的工作流程,并准备为团队提供一些帮助或制作一些自定义解决方案,以更好地组织整体管道。我们的下一节讲座将专门讨论Designer中一个快速简便的解决方案,简化Painter中艺术家的工作。下次见!
大家好!今天我们将探讨如何在Substance Designer中创建程序化技术艺术解决方案,这些解决方案可以被艺术家在Substance Painter中使用。这是一节独特的讲座,我想进行一个小的实践研讨会,而不是仅仅展示幻灯片。所以请和我一起动手试试看。
我已经准备好了一个简单的平面网格,并将在其上创建一个流动贴图。流动贴图在游戏开发中通常用于表示方向,比如雨水在窗户上滑动的痕迹,或动物毛发的流向等。
在Painter中创建流动贴图的最简单方法是启用笔刷设置中的“跟随路径”选项。确保此选项已打开,然后使用特定的法线贴图在法线通道上手动绘制。现在,当我们在不同方向上绘制时,将出现不同的颜色,例如,从上到下是绿色,从下到上是紫色。着色器将使用每个像素的这些不同颜色值来指定其方向。
这个过程已经在运作,但作为技术艺术家,这个例子应该引起你的注意,因为这并不够用户友好。不同颜色代表方向会使创建复杂资产(例如狗、熊或浣熊等)变得复杂。颜色不再是自解释的,特别是在纹理上存在各种小细节时。
因此,让我们作为技术艺术家,创建一个解决方案,用实际的调试箭头替换颜色,这样可以更直观地显示流动贴图的方向。为此,我们将利用Substance Designer的功能。
这里是一个小而简单的图形,它实现了我们的目标。图形的核心逻辑由一个大的“瓷砖样本颜色”节点处理。该节点接受我们需要的箭头图案纹理,并根据不同的地图输入应用修改。由于我们目前只想旋转这些箭头,单个向量地图输入就足够了。
我们添加了输入颜色节点以从Painter接收信息,并将其传递到Designer的图形中。同时,暴露一些参数,允许直接从Substance Painter进行调整。每个图形都需要输出节点,所以我们也添加了,并将其连接到瓷砖样本节点的输出。
完成后,我们将图形导出或发布为.sbsar文件。
现在返回到Painter。首先,准备好创建流动贴图的场景。为法线通道激活跟随路径,并用表示向上的单一颜色纹理进行绘制。接着使用锚点将信息从Painter传递到Designer图形中。
我们应该有以下结构:
现在,导入之前发布的.sbsar文件。只需将文件拖放到Painter的库窗口,并指定该资源应被视为生成器。
我们将此生成器应用于输入图像的颜色通道。如果一切顺利,我们在基础颜色中应该能看到我们的箭头。选择方向绘制层并尝试绘制一些方向,例如从上到下。你可以看到箭头的方向已经改变,表示法线贴图中隐藏的方向。
希望这段工作坊对你有帮助。你已经看到了一个解决方案的高层概述,当然这个解决方案可以在各个方面进一步改进。比如,可以使用另一种图案作为默认法线贴图颜色,例如点状图案,初始网格将覆盖点,箭头仅在手动绘制的地方出现。此外,还可以考虑将法线纹理颜色与这些箭头混合,以便它们在视觉上不那么单一。
感谢你们的参与!我们已经完成了程序化部分。在下一节中,我们将专注于着色器。再见!
你好,欢迎来到着色器部分。本节旨在为您提供有关着色器的基础知识,为您在此领域的学习之旅奠定基础。在本节中,我们将进行三次知识分享讲座。
第一讲将提供有关着色器的一般信息。这一基础概述将帮助您更好地理解着色器在游戏中的创建和使用。
接下来,我们将探讨艺术家友好的可视编程方法,用于通过节点创建着色器。这种方法可以让您以更直观的方式理解和使用着色器。
最后,我们将简要介绍如何通过编写直接代码来创建着色器。这将帮助您深入了解着色器的工作原理。
好的!期待在第一讲中见到你!
大家好,欢迎来到这一讲,我们将讨论着色器的基本概念。今天的议程包括以下内容:
在计算机图形学中,着色器是一种强大的程序,它决定了 3D 物体的实时视觉外观。它们控制颜色、光照、纹理和特殊效果等方面,为游戏世界注入生命。着色器通常在图形处理单元 (GPU) 上并行运行,负责计算屏幕上每个像素的颜色值。
着色器在游戏开发中用于定义游戏对象的视觉外观,通过计算光照、颜色和各种视觉效果来增强游戏体验的真实感和沉浸感。它们被用于模拟物理基础渲染,实现在游戏中复杂的视觉效果,如反射、阴影、环境光遮蔽、后处理滤镜、动画材质、程序纹理等等。
着色器可以通过两种主要方法创建:基于节点的可视化编程或基于代码的方法。基于节点的系统允许艺术家和设计师通过连接可视化元素来创建着色器,而基于代码的方法则涉及在专用着色器语言中编写指令,例如 OpenGL 的 GLSL 或 DirectX 的 HLSL。值得注意的是,即使使用节点,节点着色器编辑器也会在后台将节点网络转换为实际的代码指令。
右侧示例显示了如何在着色器编辑器中使用这些数据类型的构建节点。
需要明确的是,着色器主要是执行在 GPU 上的程序,通过着色语言(如 HLSL 或 GLSL)定义像素外观,也就是说,是一系列代码行。而材质则是从着色器派生的可定制实例,指定游戏对象的视觉特性。
换句话说,材质被应用于游戏对象,以提供实际的视觉外观。从单个着色器可以创建多个材质,每种材质具有不同的视觉属性。例如,想象一个简单的着色器,只强制设置颜色。用户可以通过调整暴露的颜色值,创建不同的材质,如红色、蓝色、黄色、粉色等等。
总而言之,着色器提供渲染逻辑,而从着色器派生的材质使得视觉上多样化的游戏对象的定制和高效创建成为可能。
在讨论着色器时,回顾实时引擎的整体渲染管线,并特别关注着色器是个不错的选择。
着色器是技术艺术家展示艺术效果的完美领域,它是技术技能与创造力交汇的地方,能够产生令人惊叹的艺术作品。因此,不要害怕。正如所有与技术艺术相关的内容一样,着色器复杂但非常强大。我们将在即将到来的讲座中探索一些简单的着色器创建方法,感谢大家的参与,我们下次见!
大家好,欢迎来到这一讲,我们将专注于使用基于节点的方法创建着色器。我们将使用虚幻引擎 5,但节点着色器编辑器的概念是通用的,理解这一点将使技术艺术家能够在任何游戏引擎中舒适地交付所需的结果。这一讲将是一个实际的示范,所以我们的目标是创建一个简单的基础颜色着色器,并从中实例化一些材质。
首先,我已经在虚幻引擎 5 中打开了默认的第三人称演示项目。我们直接进入内容浏览器,找到想要添加着色器和材质的合适位置。我将创建一个新文件夹以便于管理。
在新文件夹中,我们右键点击选择“创建新材质”。命名时遵循良好的命名习惯,材料前缀使用字母“M”,然后加上实际名称。比如命名为“SimpleColor”。接下来,双击打开这个材质,分享一些关于材质窗口界面的内容。
现在,我们创建一个返回单一实色的着色器。为此,我们需要添加一个常量四维向量节点,并将其连接到根节点的基础颜色插槽。右键点击图表空白处,输入“常量四维”,在过滤结果中选择它并连接到基础颜色。
通过按住数字“4”并单击,您也可以快速创建常量四维节点。默认情况下,四维常量节点的值为零,显示黑色。我们将其更改为粉色,通过选择颜色并点击确认,编译完成后,预览网格应显示为所指定的颜色。
在当前状态下,这个着色器不够实用,因为常量四维节点的颜色值未暴露到材质实例属性中。为了暴露该颜色值,我们需要将节点转换为参数并给它命名,例如“Base Color”。然后返回主场景。
我们刚才创建的是一个着色器,在虚幻引擎中称为材质。现在我们创建一个实际的材质,即材质实例。右键点击最近创建的材质,选择“创建材质实例”,并在命名前添加“mi”作为前缀,指定确切名称,例如“Yellow”。
此时,它仍使用默认的粉色,双击并覆盖颜色属性。现在,它的颜色变为黄色。接下来,以同样的方式创建一个绿色的材质实例。右键点击,选择“材质实例”,命名为“mi_Green”,并双击覆盖颜色,设置为绿色。
通过拖放材质实例到网格上以查看效果。将绿色材质应用于这个立方体,将黄色材质应用于另一个立方体。
最后,我想展示如何为核心着色器添加发光特性,使所有着色器实例都能自动更新。再次打开 Simple Color 材质,将常量四维节点连接到发光颜色。我们可以通过乘以 2 来增加效果的可见性。
保存并检查场景中的实例。现在我们可以看到,绿色和黄色的颜色都在发光。
我们创建了一个名为 m_SimpleColor 的着色器,并实例化了两个材质,这些材质的颜色值经过覆盖。我们还添加了发光特性,并观察到所有材质实例都得到了更新。
接下来的一张幻灯片是关于进一步学习的内容。我建议您坚持使用您喜欢的材质编辑器,无论是虚幻引擎还是 Unity,探索所有可用的节点并开始尝试。尝试学习如何实现各种真实材质,如雪、冰、沙子、湿气、玻璃或程序纹理,如砖、泥土、草等。
谢谢大家的参与,我们在下一讲中将探讨如何通过代码创建着色器!
大家好,这一讲我们将讨论使用代码创建着色器。首先,我想讨论一下使用代码创建着色器的优缺点。
优化和效率:代码着色器可以更优化和高效,因为开发者可以直接控制算法和计算。一些着色器的功能可能只需要 15 到 20 行代码,而使用节点重建相同的功能可能会变成一个庞大的、节点交织的网络。
精确控制:能够精确控制着色器逻辑的每一个方面,从而实现复杂和定制的效果。
代码重用性:代码着色器可以很容易地在不同的项目和平台之间重用,促进代码的重用性。
独立性:代码不依赖于特定节点着色器编辑器提供的功能和特性,甚至在早期开发阶段的自定义引擎中也是如此。只需创建一个新文件,设置适当的扩展名并立即实现所需的行为。
但是,编写代码着色器是困难的。它需要对编程和图形概念有深入理解,这对初学者来说可能具有挑战性。同时,与可视化节点方法相比,着色器代码的调试可能更加棘手,因为没有用于着色器的断点,只有中间输出。
在图形编程中,我们有两个核心的着色语言:GLSL 和 HLSL。它们非常相似,主要的区别如下:
关联图形 API:GLSL 与 OpenGL 图形 API 关联,而 HLSL 则与 Microsoft 的 Direct3D 关联。
平台兼容性:GLSL 被广泛用于跨平台应用程序,支持各种操作系统和设备,而 HLSL 主要用于基于 Windows 的应用程序。
语法:两者都使用类似 C 的语法,结构和功能非常相似,但由于与不同的 API 关联,存在一些特定的差异。
为了更好地可视化代码之间的差异,我展示了一个纹理采样的例子,可以看到 HLSL 使用 float4
,而 GLSL 使用 vec4
,采样方法的命名也有所不同。
作为提醒,技术艺术家通常不编写着色器代码,尤其是直接用于引擎渲染计算的着色器。为此,公司通常会雇用 3D 程序员。然而,技术艺术家在其他地方也可以应用编写着色器的技能。例如,创建在 Substance Painter 中使用的自定义着色器。
事实上,项目通常使用自定义的独特着色器,必须在 Painter 中进行对齐。如果不这样做,同一网格在 Painter 和游戏引擎视口中将呈现不同的外观,艺术家将不得不随机调整现有参数并多次重新导出网格,以期最小化视觉差异。相反,他们应该依靠你,技术艺术家,利用自定义着色器在 Substance Painter 中实现“所见即所得”的原则,使材质在 Substance Painter 视口中的视觉外观与在实时引擎视口中的外观尽可能接近。
为了创建这些自定义着色器,您无需从零开始。您可以利用游戏引擎中已有的自定义着色器作为基础,或使用 Painter 中一些已存在并经过良好文档化的着色器,通过代码直接编写。它们位于 Painter 的安装文件夹下,资源、入门、资产和着色器中。此外,在资源/着色器文档文件夹下还有丰富的文档,您可以了解如何创建自定义参数、访问引擎参数、渲染状态等。
关于进一步学习的方向,我有几个优秀的资源,可以深入学习着色器代码,但现在我只提及一个一般方向,具体链接将在课程结束时作为额外奖励提供。所以现在请尝试查看尽可能多的着色器,目的是理解整体思路、方法和每个功能的作用。为 Substance Painter 创建自定义着色器可能是该主题的实践入门,因此,如果您有项目需求或只是想实验,我会推荐这一领域作为起点。
很高兴与您分享这些内容,这一节的着色器部分就到此结束。谢谢您,我们下节课见,内容将涉及数学!
大家好,欢迎来到专门为技术艺术家设计的数学基础部分。这一部分旨在为您理解游戏开发中适用的线性代数打下基础。这是硬技能部分中最短的章节,只包含一节课,我们将在其中讨论技术艺术家在数学方面应该了解的内容,具体包括向量、矩阵、四元数和插值。
我敢打赌您在学校时期已经掌握了这些知识,我们现在的目标只是刷新一下您的记忆,并解释这些数学概念在游戏开发中的直接实际应用。
所以,下一节课见!
大家好,欢迎来到我们数学部分的最后一节课。最初我计划为每个数学主题创建专门的讲座,但最终决定将所有内容整合在一个视频中,因为大多数主题您在学校时期已经掌握,我们现在的目标只是刷新您的记忆,并讨论这些数学概念在游戏开发中的实际应用。
这些内容按优先级降序排列,换句话说,理解向量至关重要,而四元数则相对不那么重要。
向量通常用于表示位置、速度、力和方向。向量有大小和方向。
向量相加:添加两个向量的结果可视化在下面。向量的加法与数字加法类似,u + v 等于 v + u,因此顺序无关紧要。
实际应用:向量加法通常用于组合和更新游戏对象的位置、速度或方向,例如:
向量减法:用于寻找两个点或游戏对象之间的相对位置或方向。向量减法的顺序很重要,v - u 与 u - v 不同。
应用:用于碰撞检测、AI决策、路径寻找、目标锁定等功能。
向量归一化:将向量转换为单位向量,即其大小为1,但保持原方向。归一化向量确保它们具有一致的规模,特别是在物理模拟和涉及力或速度的计算中。
点积:通过两个向量计算的结果是一个值,范围在1到-1之间。用于计算光照、视图穿透、地面检测等功能。
叉积:结果是一个垂直于两个初始向量的第三个向量。常用于计算表面法线,例如,在程序性地在地形上放置树木时,确保树木与地面法线对齐。
线性插值(LERP):用于在两个值或向量之间进行平滑过渡。
矩阵用于表示3D空间中对象的变换,包括平移、旋转和缩放。
四元数主要用于表示3D空间中的旋转,由4个分量(w,x,y,z)组成,其中w是标量部分,x,y,z构成向量部分。
祝贺您完成了技术艺术家的数学基础部分。请记住,这只是开始和理论。现在您对游戏开发中技术艺术家所需的关键数学概念有了了解,一旦在工作中遇到这些术语,您至少不会迷失,并能快速找到或回忆所需的知识以实现期望的结果。
下一部分将是最后一部分硬技能,专门讨论管道。感谢您的参与,我们下次见!
欢迎来到我们《通往技术艺术家之路》课程的管道部分。在这一部分,我们将深入探讨游戏开发中管道的基本概念。让我们看看这一部分的内容安排。
期待在接下来的讲座中见到你们!
欢迎来到我们管道部分的第一节课。在今天的课程中,我们将探讨游戏开发中管道的概念。
在游戏开发的背景下,管道指的是一种结构化和系统化的方法,用于处理创建游戏过程中涉及的各个阶段和过程。它充当了一条路线图,指导团队从最初的概念到最终产品的旅程。
提升效率与协作:管道对促进游戏开发团队内部的效率与协作至关重要。它们提供了一个结构化的框架,确保每个人都在同一页面上,共同朝着共同目标努力。
确保工作流程的一致性:管道强制执行工作流程的一致性,确保每个团队成员遵循共同的程序。这种一致性不仅提高了游戏的整体质量,还便于故障排除和调试。
概念化与设计阶段:管道始于概念化和设计阶段,在这一阶段,团队进行头脑风暴,阐明游戏的愿景。此阶段涉及游戏设计师、艺术家和创意领导。
开发阶段:开发阶段涵盖了创建游戏所需的资产、代码和其他元素。程序员、艺术家、设计师、动画师等在此阶段协作。
测试与质量保证:测试和质量保证是管道中不可或缺的部分,确保所做的更改按预期工作,并且不会破坏游戏的其他部分。
集成与部署阶段:最后阶段涉及整合所有组件,进行最终测试,并将游戏部署以供分发。
管道通常由被称为管道架构师或技术总监的专业人员设计和管理。这些人对游戏开发过程有深入的理解,并致力于优化工作流程。此外,经验丰富的技术艺术家在管道开发中也发挥着重要作用。作为技术艺术家,你可能会接手已有的管道,因此,识别这些管道中的问题区域并提供解决方案(例如改进技能、简化工具、清晰的规则等)是你的责任,从而增强管道的效率,使其更加强大和用户友好。
这一主题是一般介绍,了解术语就足够了。创建管道的知识需要通过经验积累,因为它涉及对所用工具、命名约定、生产步骤等的决策。因此,准备自己进入管道开发的最佳方法是不断提高自己的技术艺术技能。
管道在游戏开发中充当指导框架,确保有序、高效和协作。它们是指挥游戏创作复杂交响乐的无形之手,使团队能够将创意转化为身临其境的游戏体验。在接下来的讲座中,我们将更深入地探讨特定管道,首先是艺术创作管道。感谢您的聆听,期待在下节课见到您!
欢迎来到我们管道部分的第二节课。在今天的课程中,我们将深入探讨AAA游戏工作室中的艺术创作管道。我们将逐步指导您了解角色在游戏开发中的生命历程。
在游戏开发中,艺术创作管道是一个结构化的流程,涵盖了从角色概念到最终整合到游戏中的每个步骤。虽然我们将以角色创建为例,但此管道也可以针对其他艺术资产(例如道具、武器或任何其他视觉元素)进行适当调整。
概念化阶段:艺术家与游戏设计师合作,进行角色的构思和可视化。这包括草图、情绪板和讨论,以确定角色的外观、个性和在游戏中的角色。
概念审批:初步概念完成后,需经过审批流程。游戏总监和艺术负责人审核并提供反馈,以确保与整体游戏愿景的一致性。
高分辨率概念艺术:获得批准的概念将转化为高分辨率的概念艺术。这幅详细的艺术作品为3D建模团队提供了视觉参考,并帮助定义纹理、颜色和复杂细节。
3D建模:在这个阶段,艺术家使用专业软件构建角色的形状,确保准确性并遵循概念艺术。
纹理贴图:为3D模型应用纹理,以赋予角色生命。此步骤涉及定义表面细节,例如皮肤纹理、衣物图案和其他视觉元素。
绑定(Rigging):为了实现运动和动画,角色需要进行绑定。创建一个绑定(或骨骼),使动画师能够对角色进行逼真的关节和动画。
动画:一旦角色绑定,动画师便为角色注入生命,创造从基本运动到复杂动作的一系列动画,确保游戏中的多样性。
中间艺术验证:在继续之前,中间艺术需经过验证。艺术负责人审核模型、纹理、绑定和动画,分享反馈以便艺术家进行必要的调整,达到质量标准。
集成与测试:一旦反馈得到解决,资产(在本例中为角色)便集成到游戏环境中进行测试。这一阶段涉及评估角色与游戏世界的互动,识别任何技术问题,并确保无缝集成。
最终艺术批准:在游戏中成功测试和验证后,最终艺术获得批准。这一批准是进入下一步(集成)的关键检查点。
集成角色:最后一步涉及将角色集成到游戏中。虽然之前已经在测试阶段进行了集成,但此时是为了确保玩家在实际游戏中能够遇到该角色。
持续支持:这可能包括修复在测试阶段遗漏的小错误或根据项目的整体变化进行的额外优化或调整。
作为艺术与技术之间的重要桥梁,技术艺术家为艺术创作管道带来了独特的技能,显著提高了效率和成功率。
自动化:技术艺术家擅长为艺术团队的特定需求创建自定义工具。这些工具可以自动化重复任务、简化工作流程,提高整体生产力。
着色器创建:技术艺术家可能会参与着色器的创建,以确保在Painter和引擎视口之间最小化视觉差异。
促进协作:技术艺术家在艺术家与其他团队成员之间架起沟通的桥梁,确保工作流程的和谐。
故障排除与支持:技术艺术家通常能够快速定位并解决技术问题,是解决问题的关键。
要理解管道中的哪些部分值得改进,技术艺术家可以采取以下两种方法:
获取反馈:积极寻求管道用户的反馈,了解哪些方面运作良好,哪些方面需要改进。
观察和分析:通过观察艺术团队的工作流程,发现瓶颈和低效之处。
管道在游戏开发中是确保有序、高效和协作的关键。它们是游戏创作复杂交响乐的无形之手,使团队能够将创意转化为身临其境的游戏体验。在下一节课中,我们将更深入地探讨资产管理管道。感谢您的聆听,期待在下节课见到您!
欢迎来到我们管道部分的最后一节课,在这一节中,我们将深入探讨项目资产管理管道。虽然它不像艺术创作管道那样线性,但资产管理仍然是良好组织和高效游戏开发流程的支柱。让我们深入了解其重要性以及技术艺术家在确保顺畅资产管理工作流程中所扮演的角色。
在游戏开发的协作环境中,版本控制系统是一个基本工具。它跟踪文件随时间的变化,允许团队无缝协作。这不仅促进了合作,还提供了安全保障。在最近提交的文件中,如果引入了关键错误,版本控制系统允许团队回滚到先前的版本,从而避免潜在的阻碍。在游戏开发领域,两个流行的解决方案是Perforce和Git。两者都被广泛使用,各有其优势和细微差别。选择合适的版本控制系统通常取决于开发团队的具体需求和偏好。
建立稳健的文件命名规则和维护良好的文件夹层次结构至关重要。一致的命名规范使查找和识别资产变得更加容易,从而减少混淆和潜在错误。清晰的文件夹结构可以简化特定文件的搜索,并确保团队中的每个人都知道在哪里找到所需的内容。
以下是建立健康且有序系统的实施建议:
命名文件:文件名称应包含描述文件内容的信息。如果需要太多的单词来完全描述文件,可以考虑引入缩写,例如,“夹克”可以缩短为“GCT”,“武器”可以缩短为“WPN”等。
资产类型分离:将不同类型的资产分离到不同的文件夹中,例如NPC与道具、纹理与材质等,每个文件夹中设立子文件夹,以使分离层次更加精确。
导出路径解决方案:确定资产的适当导出路径可以根据其名称或其他标识类型自动生成,从而完全消除人为错误的可能性。
文件命名的稳定性:使用版本控制系统时,修改文件时无需每次都重命名。版本控制系统会保存所有文件的修订版本,并提供轻松访问,因此请不要让团队在项目中使用像这样的命名方式,即便是用于原型或个人测试。
作为维护团队内部秩序、效率和协作的重要角色,技术艺术家为资产管理管道的成功做出了显著贡献。
引入版本控制系统:如果项目中没有版本控制系统,请尽一切可能添加它。这是任何健康协作环境的必备条件。
工具开发:如果涉及命名规范,可以创建一个验证工具,检查艺术家在DCC中给资产取的名称是否合适。提到的自动化导出路径生成工具也是常见工具之一,能够简化艺术家的整体导出流程。
实施单元测试工具:这些工具在提交之前自动验证文件的合规性,检查项目标准,标记潜在问题,以防在项目中固化。
建立清晰的规则:技术艺术家应与技术总监或管道架构师合作,从头开始构建文件命名和存储位置的规则。规则越清晰,用户遵循的难度就越小。最好有一个集中存放所有规则的位置,所有用户和工具都能参考这一信息来源。
深入了解版本控制系统,包括如何恢复更改列表、检查文件历史记录、为指定层次路径的提交创建通知等。
在创建文件层次管理工具时,Python的OS库将会非常有用,因此请了解它。
通过这节课,我们不仅完成了管道部分,也完成了技术艺术家硬技能阶段的整个课程。我们涵盖了一系列对技术艺术家角色至关重要的技术技能。这是一段漫长的旅程,但我们还没有结束。当我们过渡到课程的下一个阶段时,我们将深入探讨同样重要的软技能。请继续与我一同前行,加入到下一个专门讨论软技能的部分。感谢您的参与,期待在下节课见到您!
欢迎来到我们《ROBOT TO TECH OUT》课程中针对技术艺术家的软技能部分。在这段旅程中,我们将探讨区分成功技术艺术家的关键软技能。这些技能对于有效的协作、问题解决和确保团队内部的和谐工作流至关重要。
在我们开始这一部分时,重要的是要认识到技术卓越只是成功的一个方面。软技能是提升技术艺术家从优秀到不可或缺的无形品质。
让我们概述一下我们将要深入探讨的关键软技能:
主动性不仅仅是承担责任。这是关于预见挑战、提供创新解决方案以及积极寻找改善流程的方法。我们将探讨主动心态如何使您在动态的游戏开发环境中脱颖而出。
能够高效完成任务是有效技术艺术家的标志。从细致的规划到时间管理,我们将深入探讨使您能够在分配的时间和预算内持续交付高质量功能的策略,展示您的可靠性和效率。
作为开发和艺术团队之间的桥梁,有效沟通是您的超能力。我们将探讨如何无缝共享信息、提出问题、编写清晰的文档以及在多元团队中导航以实现协作的利益。
与其仅仅解决表面问题,寻找根本原因的思维模式涉及识别和解决核心问题。我们将讨论如何采用这种思维方式,通过跟踪问题的源头,推动更可持续和成功的项目开发。
最后,我们将探讨如何提供建设性和有意义的反馈,以提升团队表现,以及如何优雅地接受并根据他人的反馈采取行动。
好的,期待在接下来的讲座中见到你们!
欢迎来到我们《技术艺术家软技能系列》的第一讲——主动性。在本讲中,我们将探讨主动性的重要性,为什么它是技术艺术家的核心软技能,以及它如何提升您在动态游戏开发领域的职业生涯。
主动性不仅仅是一个流行词。它是一种思维方式,使优秀团队成员与其他人区分开来。从根本上说,主动性涉及承担责任、提供创新解决方案、积极寻找改进流程的方法,并且永远不为失败责怪他人。我们将分别讨论这些要点与技术艺术家的角色之间的关系。
主动的技术艺术家不会等待问题出现。他们会对自己的任务和责任承担起所有权。无论您是初级还是经验丰富的专业人士,承担责任都表明了可靠性。技术艺术家是问题解决者,而主动性意味着不仅要解决问题,还要提供创造性的解决方案。无论您的经验水平如何,提出创新想法都会使您成为团队不可或缺的资产,为项目的整体成功做出贡献。
主动性不仅涉及识别问题,还包括建议改进。当一个人提出问题时,如果能同时提供三种可能的解决方案,这总是受到赞赏。关于指责他人,无论如何都不应该这样做。与其指责,不如采取主动心态,专注于共同寻找解决方案并从挑战中学习。这种方法促进了积极的工作环境,培养了持续改进的文化。
招聘人员高度重视主动性这一特质。它展示了您的承诺、解决问题的能力,以及适应快速发展的游戏开发环境的能力。无论您处于哪个经验水平,考虑在简历的软技能部分加入“主动性”这个词,以吸引潜在雇主的目光。但当然,首先要树立主动的心态,然后再谈论它。
就该主题进一步学习的内容,研究其他资源,看看人们如何谈论主动性。可以选择TED演讲、播客、一些专门的文章或甚至书籍,任何都可以。目标是更广泛地理解主动性的本质,并在工作以外的时间也能定期应用这种方法。
主动性并不仅仅留给资深人士和管理者。它是一个强大的工具,可以塑造任何层级人员的职业生涯。通过承担创新责任、提供创新解决方案,您为在快速发展的游戏开发世界中取得成功奠定了基础。
本讲内容简短且易于理解,接下来的材料也将保持这样的特点。但实际上,日常应用这些技能所需的努力是巨大的。因此,我再次强调软技能的重要性,它们对于技术艺术家与硬技能同样重要。对于初学者而言,软技能甚至更为关键。程序和技术可以很快学习,但成为一个优秀的团队成员是一生都在赋能的技能。
谢谢您的关注,下次讲座再见!
欢迎来到《技术艺术家软技能系列》的下一讲。在本次课程中,我们将探讨“完成工作”(Get Stuff Done,GSD)方法的实际应用,重点关注有效的计划、时间管理以及持续交付高质量成果的策略。GSD 方法是您成为一个可靠的技术艺术家的关键,以可靠、按时、符合预期的方式完成工作。
GSD 方法强调通过一致的优秀成果来展示可靠性,并在团队中建立信任,无论您当前的任务是什么。
与生产力一样,GSD 方法是基本软技能的组合。我将快速介绍每个方面。
了解自己的能力是 GSD 方法的一个重要方面。评估自己的优势、劣势和改进领域,以提高整体生产力。诚实地说“我在这个领域不自信”总比在劣势领域过度承诺导致的次优结果要好。
时间管理是通过分解任务、设定现实的截止日期、优先排序、优化工作流程和避免拖延来实现有效计划的过程。
技术艺术家每天都会遇到问题和挑战。重要的是将这些问题视为挑战,并尽力以出色的解决方案不断克服这些问题。
就该主题进一步学习的内容,研究其他资源,看看人们如何讨论时间管理,不必聚焦于技术艺术家的角色,只需获取一般的软技能信息。我个人更喜欢阅读详细描述这项技能的书籍,但 TED 演讲、YouTube 视频、播客或一些专门的文章也同样有效。目标是有效地利用时间,避免拖延。
勇于承认自己不知道某件事,在计划即将开展的工作时非常重要。这样并没有什么不好,只要接着说“但是我会对此主题进行额外研究,这可能需要一些额外时间以确保结果达到预期质量”。
GSD 方法强调设定合理的标准并始终如一地达成或超越这些标准。通过有效的计划、时间管理、自我评估和问题解决,您将自己定位为团队中不可或缺的资产。
感谢您的参与,期待在下一次讲座中见到您!
欢迎来到我们技术艺术家软技能系列中的另一节课。这一节专注于团队中的沟通与合作。正如你所知道的,技术艺术家在开发过程中扮演着独特的角色,连接技术和艺术的创意方面。这个桥梁需要有效的沟通与合作,以确保项目中信息和想法的顺畅流动。让我们探讨这些软技能的关键方面。
成功的合作始于清晰而准确的信息共享。将你的沟通方式调整为适应技术和非技术团队成员是至关重要的,因此要努力做到清晰,使用适合不同受众的术语和例子。提出有见地的问题是一种艺术。这种能力能够促进对项目需求的更深理解,减少误解并促进更顺畅的工作流程。要勇于好奇,必要时寻求澄清。不要害怕请人重述不清楚的部分。这不会让人觉得烦,但会防止误解,而这对健康的合作至关重要。
文档记录是沟通与合作的另一重要支柱。保持详细且易于访问的文档,以帮助知识传递,为未来的工作提供参考,并有助于对项目的整体理解。技术艺术家在协作环境中茁壮成长。积极参与团队讨论,尊重多元观点,并为积极的团队文化做出贡献。以热情拥抱你作为团队成员的角色。
最后,通过提供定期的进度更新,让团队保持透明,从而在团队中建立信任,让团队成员了解你所取得的成果和所面临的挑战。
关于进一步学习的内容。软技能是在整个生命过程中不断发展的。沟通与合作也不例外。所以我认为在这一点上,你已经知道如何做到这一点。这节课应该更像是一个提醒,这些技能对任何技术艺术家都是至关重要的。
总之,我建议有效的沟通与合作是技术艺术家成功的基础元素。通过掌握这些技能,你成为连接开发和艺术团队的桥梁,确保和谐高效的工作流程。在接下来的课程中,我们将专注于寻找根本原因, adopt 一个聚焦于识别和解决项目中问题根源的思维方式。谢谢你,期待在下一节课见到你。
欢迎来到《寻找根源》的讲座,我们将讨论技术艺术家另一个重要的软技能。在本节课中,我们将探讨专注于识别和解决项目中问题根源的心态,从而促进更成功和顺利的发展过程。根本原因是导致可见问题的潜在问题。具有“寻找根源”心态的技术艺术家会寻求理解这些核心问题,而不仅仅是解决表面症状。
理解根本原因对于有效的问题解决至关重要,通过解决核心问题,你可以防止问题重复出现,创造一个更稳定可靠的发展环境。为了更好地理解表面症状与核心问题之间的区别,让我们想象以下场景:
我们有一个艺术创作管道,其中包含特定资产的纹理分辨率预算。例如,所有游戏中的近战武器应使用不超过2x2K的分辨率。而你作为技术艺术家被分配到一个问题上,发现一把剑使用了4K的纹理,这超出了预算。
简单的解决方案是将该特定剑的纹理分辨率降低到符合要求,这样就可以了。但这并不是最佳的解决方案。更好的方法是思考这个问题是如何发生的,以及如何防止类似事件的发生。如果纹理分辨率是艺术家在导出时选择的,而且没有对这个参数进行验证,那么问题的根源就在于艺术创作管道。如果提供一个工具来验证资产导出的纹理分辨率,我们就能消除类似事件再次发生的可能性。当然,我们仍然需要手动修复那把剑的问题。
我建议遵循这种处理任何问题的方法。首先,明确你面临的问题;然后问为什么会发生这个问题,并继续追问,直到你找到根本原因。一旦找到了根本问题,就去修复它。最后,确保根本问题被修复,从而不再出现在第一个步骤中发现的新问题。
注意,有时立即修复初始问题是值得的。这通常适用于有短期截止日期的情况,需要尽快提供修复方案。但无论如何,一旦冲刺或里程碑结束,就要花时间处理根本原因。
关于这个主题没有进一步学习的内容。请永远不要忘记关注根源。最后,我想说,采用“寻找根源”的心态就像在游戏开发的世界里做侦探。通过理解和解决问题的核心原因,你为成功打下了基础。在下一节课中,我们将探讨反馈的力量。谢谢,你们下次见!
欢迎来到我们的技术艺术家软技能系列的最后一节课——反馈的力量。在本节中,我们将探讨有效反馈的重要性,包括给予和接收反馈,以及它如何促进个人成长和团队整体成功。
反馈不仅仅是表达意见。它是一种宝贵的持续改进工具。无论您是在对同事的工作提供意见,还是在接收对自己工作的建议,目标都是营造一个学习和精炼的环境。反馈应该是有意义的。为了更好地理解这一点,我们来比较一下不好的反馈和好的反馈的例子。
例子:这个工具需要改进。修复它。
为什么不好:它缺乏具体性、建设性指导和积极的强化。
例子:您创建的导出工具为整个艺术团队节省了宝贵的时间。它已经解决了我们在导出流程中面临的核心问题。但您能否考虑在未来版本中增强其能力,通过添加纹理分辨率验证?这将确保更大的一致性并提升工具的实用性。您对艺术家工具的改进努力是非常显著的。
为什么好:具体指出了工具的功能和建议的改进,提供了建设性指导,并给予了积极的强化。
请注意,包含改进意见的反馈仍然被视为好的反馈。它不应该完全充满积极的时刻。此外,我甚至会说,分享可能的进一步改进的反馈比单纯的赞美更好。
给予反馈时:
接收反馈时:
理解反馈的力量对于协作和成功的团队动态至关重要。通过给予和接收有意义的反馈,我们为持续改进和卓越的文化做出了贡献。
这结束了我们的技术艺术家软技能系列。在接下来的最后一节课中,我将专注于您为技术艺术家角色申请的实际准备,发现最常见的面试问题并提供作品集创建的总体指南。我们距离最后一步只有一步之遥。让我们一起迈向技术艺术家的角色。谢谢,期待与您再见!
欢迎来到我们《通往技术艺术家之路》课程的总结部分。我们已经涵盖了核心的硬技能和软技能,在这里我将分享一些有价值的信息,这些信息在您准备实际过渡到技术艺术家角色时将派上用场。本节内容包括:
很好,期待在接下来的课程中与您见面!
欢迎来到我们准备技术艺术家面试的重要阶段。在本节课中,我将为您提供应对面试过程挑战的工具和见解,从一般建议和技巧开始。
首先,了解公司的项目、文化以及技术艺术家在组织中的角色至关重要。接着,利用本课程中提供的资源,涵盖与实时引擎、脚本语言、程序化内容生成、着色器、数学和管道相关的核心概念。此外,我们将在本节的下一次讲座中提供一份包含典型技术艺术家面试问题的文档,以供您深入审阅。
然后,准备讨论您的作品集。我们将在专门的讲座中进一步探讨这一主题。
现在,关于为面试建立正确的心态,几句建议:相信自己的技能和经验。如果没有经验和技能,那就展现出您的动力和热情。不管怎样,保持自信。自信能够增强信任感,这是任何面试中的关键因素。以问题解决的思维方式来应对技术问题,将复杂问题分解为可管理的部分。展示您适应新挑战和新技术的能力。将每次面试视为更好理解市场需求的机会,识别自己的弱点,并扩展您的职业网络。拥抱学习的经历,不要害怕失败,尤其是如果这是您第一次面试。记住,每一次尝试都是通向改进和成功的一步。
关于模拟面试:与朋友或导师进行练习,模拟真实的面试场景。既然您注册了本课程,如果您还记得,我承诺每位学生可以与我进行即兴面试,所以如果您想和我直接练习,请告诉我,我们可以安排一次会议。然后利用在线资源进行脚本编写,例如使用 Pramp、Leadcode 或 Codewars 等平台,专注于 Python。同时,练习在面试中管理时间,确保您提供全面而直接的回答。
面试中有一些常见的误区最好避免。虽然自信是必要的,但要避免显得过于自信。不熟悉公司的情况或对自己的作品集不熟悉,都会削弱您的可信度。并且请记住,技术艺术不仅仅是技术能力的展示。展示您的软技能,包括生产力、沟通、协作、GSD 方法、知识共享和文档记录,这些同样重要。
在您开始这段准备旅程时,请记住,成功在于技术熟练度、问题解决能力、有效沟通以及一些好运的结合。做好充分准备,保持自信,随时准备展示您对技术艺术的热情。
在下一节课中,我们将为您提供一份独特的资源——一份包含典型技术艺术面试问题及准备答案的文档,以指导您的准备工作。谢谢大家!
欢迎来到我们的技术艺术作品集专门讲座。在这次讲座中,我们将讨论关于作品集的建议以及如何在市场上展示自己。让我们开始吧。
多样性:
详细说明“如何完成”部分:
精选作品:
定期更新:
明确兴趣:
个人项目的重要性:
记录进展:
参与技术艺术社区:
构建网站:
质量重于数量:
保持更新:
创建一个出色的技术艺术作品集需要不断努力。拥抱多样化的技能,添加细节,确保相关性,并定期检查。如何在市场上定位自己对职业成功至关重要。祝你在成为市场上公认的技术艺术家之路上好运!谢谢你,下次再见!
欢迎大家!随着你们踏上技术艺术家之路,一个有趣的选择即将到来——在AAA工作室和独立工作室之间进行选择。在这次讲座中,我们将探讨这两个领域中技术艺术家的任务和职责之间的主要区别,以帮助你做出正确的决定。
巨人的游乐场
进入AAA工作室可能是一个挑战。竞争激烈,门槛高。然而,成功进入之后,所获得的回报对于那些最终突破的人来说是可观的。一旦进入AAA的领域,你的职责往往会更加专业化。在大型团队中,技术艺术家通常专注于特定团队的特定功能,例如角色、环境、自动化或其他专业领域。这使得你能够深入掌握某一特定领域。
AAA工作室通常提供结构化的学习环境。你将能够获得资源、培训项目以及经验丰富的专业人士的网络支持。这为你在支持性的氛围中技能发展提供了良好的基础。
独奏交响曲
与AAA工作室相比,独立工作室的情况则大相径庭。被录用的机会往往更高,你对项目的潜在影响也更为显著。然而,拥有巨大的权力也意味着要承担更大的责任。在独立环境中,你不仅仅是一个大拼图的部分。你是核心的拼图解决者,同时处理广泛的任务。
在独立工作室中,你需要身兼多职。你会发现自己同时深入参与角色、环境、管道等多个领域。多样性至关重要,你的适应能力和解决各种挑战的能力是项目成功的关键。
在独立工作室工作是一种“火中取栗”的学习体验。你会遇到挑战和胜利,解决跨越整个制作管道的问题。虽然自主权迅速提升,但这也需要你准备好深入未知领域。
选择AAA还是独立工作室是个人偏好和职业目标的问题。如果你寻求一个结构化的学习环境,并有机会专注于特定领域,AAA可能是你的路径。另一方面,如果你追求自主性,享受多样的任务,并希望产生显著影响,独立工作室可能是你想要的冒险。
对于那些渴望探索AAA世界的初学者,考虑申请实习。这是一个绝佳的机会,让你迈入这个领域,向专家学习,逐渐融入技术艺术的复杂性。
我个人也经历过这种方式,知道它效果很好。而对于那些希望深入独立游戏开发的人,参加游戏创作大赛是一个很好的起点。它为你提供了快速获得实践经验、与同好者合作的独特机会,让你沉浸在独立游戏创作的动态快节奏世界中。
无论你选择AAA的结构化环境还是独立工作的动态环境,请记住,两者都提供了独特的体验,可以塑造你的技术艺术旅程。拥抱这次冒险,考虑你的个人偏好,选择与你的愿望相符的道路。请确保,你始终可以在AAA和独立工作室之间切换,因此最初的决定绝不是最终决定。
这次讲座是本课程的最后一次学习讲座。接下来是承诺的附加文档,包含我自己在学习技术艺术时所使用的外部学习资源链接,以及总结整个课程的最后话语。谢谢大家!
亲爱的毕业生们,
我们已经走到了《通往技术艺术家之路》课程的结束,我想向每一位同学表达我最深切的感谢。希望这个课程为你们的学习旅程奠定了基础,帮助你们成为熟练的技术艺术家。虽然它可能不是所有问题的答案,但它为你们提供了成功所需的基本硬技能和软技能。
我们的故事并没有在这里结束。正如我在开始时承诺的,我将继续提供终身支持,帮助你们在未来的学习冒险中取得成功。
祝愿你们每个人都能在职业转型中取得成功,获得美好的前程。感谢你们参与这段令人难以置信的冒险旅程。
谨致敬意,
Yechislav
如何成为游戏开发中的技术艺术家 How to become Technical Artist in Game Development
1. 介绍 欢迎参加课程
如何使用本课程
游戏开发中的技术艺术家是谁
2. 硬技能 – 实时引擎 章节概述
实时引擎概述(UE、Unity、自定义)
渲染管线
性能分析技术
场景优化技巧
使用 RenderDoc 进行帧调试
3. 硬技能 – 脚本编写 章节概述
技术艺术家所需的最小 Python 脚本知识
3Ds Max 脚本的 Max Script 基础
Maya 脚本的 MEL 基础
技术艺术脚本示例
4. 硬技能 – 程序化 章节概述
程序化作为内容创作的方法
揭开 Houdini 的面纱
Houdini 学习计划
Houdini 中的 VEX
Houdini SideFX Labs
Substance Designer
[工作坊] Substance Designer 和 Substance Painter 之间的桥梁
5. 硬技能 – 着色器 章节概述
着色器介绍
[工作坊] 基于节点的着色器创建基础
基于代码的着色器创建基础
6. 硬技能 – 数学 章节概述
向量、插值、矩阵和四元数
7. 硬技能 – 建立管线 章节概述
什么是管线
艺术创作管线
项目资产管理管线
8. 软技能 章节概述
主动性
G.S.D 方法
团队中的沟通与合作
寻找根本原因
反馈的力量
9. 规划进一步迈向技术艺术角色的步骤 章节概述
准备技术艺术面试
技术艺术作品集推荐
申请 Indie 与 AAA 工作室的比较
10. 课程总结 作者的最后寄语
Who is Technical Artist in Game Development
Frame debugging with RenderDoc
Tech Art scripting examples
[Workshop] Bridge between Substance Designer and Substance Painter
Basics of code-based Shaders creation
Vectors, Interpolations, Matrices and Quaternions
Project Asset Management pipeline
The Power of Feedback
Where to apply Indie vs AAA studio comparison