在 Maya、ZBrush 和 Arnold 中重塑来自邪恶西部的 Edgar Gravenor

news2025/1/4 18:58:36

今天瑞云渲染小编给大家带来Giancarlo Penton 介绍的Edgar Gravenor项目背后过程,展示了皮肤纹理和头发是如何制作的,并解释了详细的服装是如何设置的。

介绍

大家好,我的名字是Giancarlo Penton。我是一名3D角色艺术家,最近毕业于中佛罗里达大学的游戏设计专业。目前,我是Gunfire Games的助理QA测试员,负责Remnant 2的工作。

在我的一生中,我从未想过要成为一名艺术家。我从来没有画过画,也没有雕刻过,但有一点是肯定的,我喜欢玩电子游戏。在我发现对角色艺术的兴趣之前,我最初是学习考古学。我第一次接触游戏设计是在大学二年级。之后,我开始尝试各种与游戏有关的领域,如概念艺术,环境艺术,动画,甚至编程。通过试验和错误,我终于找到了我对角色艺术的热爱,并且从未回头。

Edgar Gravenor项目

这个项目是作为尼古拉斯-亨特教授的大学课程的期末考试而制作的,他也有一篇关于他的装饰性AK-47的精彩文章。我知道这将是一个挑战,因为我为Gunfire Games做全职工作,而且还有其他课程作业。因此,我只能在有限的业余时间里做这件事。考虑到这一点,我想做一个逼真的人物画像。在我做的每一个角色中,我总是试图以某种方式提高我的技能。对于这个项目,我专注于推动我的纹理和雕刻技能。我在浏览ArtStation时发现了Artur Chochowski的这个概念艺术,试图找到一个新的角色来创作。当我看到这个概念时,我立刻受到了启发。

参考资料

这个过程中最关键的一步是收集参考资料。我总是通过使用PureRef建立一个参考板来开始我的角色。接下来,我在谷歌上找到现实生活中的参考图片,甚至是符合我所要达到的质量标准的ArtStation项目。虽然我的参考板在整个创作过程中都会更新,但在开始时收集参考资料有助于在任何项目中获得一个总体方向。

建模

我对这个角色的所有高聚物工作都是在ZBrush中完成的。从硬表面到有机雕塑,我觉得专注于使用一个软件比在不同的程序之间来回跳动更有效率。我的高多边形工作流程是在尽可能长的时间内保持所有的东西都是低的,只有在需要时才进行细分。这为角色的其他部分打下了良好的基础。

对于我所有的项目,我总是从基础网格开始;我从ArtStation商店购买的。一开始就有一个基本的网格,可以帮助我加快创建一个角色的开始过程。

不幸的是,没有捷径或灵丹妙药可以雕刻出逼真的解剖结构。完全理解人体需要时间和大量的实践。我仍然每天都在学习。因此,当涉及到头部时,我尽可能地避免将其细分化。在细分之前,我在最低的细分部分找到正确的形状和形式。在这里,参考是至关重要的。我使用3D扫描商店的一个位移头图来创建微孔细节。在ZBrush中为头部添加微孔细节时,我遵循了高级角色艺术家Jared Chavez的一个伟大教程。

对于制作衣服,我避免使用模拟程序。我喜欢尝试从头开始雕刻衣服的挑战。这使我查找更多的参考资料,并进一步推动我的知识,了解服装是如何制作的,以及形状和形式是如何相互折叠的。例如,在制作皮夹克时,我做了一个大致形状的面具,并提取了它。一旦我得到了我喜欢的形状,我就对其进行DynaMeshed,然后开始玩不同的形式。在制作褶皱时,我只使用标准和捏合笔刷。这是一个繁琐的过程;在对结果感到满意之前,我经历了许多不同的外套迭代。

皮带和腰带的制作很简单。同样,像夹克一样,我在我想让皮带去的地方做了一个简单的遮罩,并提取了它。然后,我对它进行了ZRemeshed,使其足够低以保持其形状。我使用Dynamic SubD来预览我的网格。这是一个很好的工具,因为它可以让你快速移动和调整你的模型而不需要添加实际的SubDivisions。高聚物,对我来说,是过程中最长的部分。然而,通过多次迭代,我对结果很满意。

网状结构

我所有的重新拓扑和UV工作都是在Maya中完成的。我使用最初的低拓扑结构作为起点。我将这些网格用于我的大部分低聚物模型,并使用四边形绘图工具对其进行调整。有一些地方,如皮夹克和皮带,我不得不用手重新拓扑。至于模型中较小的部分,我使用了Maya中的Auto Retopo工具。目标是确保剪影仍然可读。当涉及到多维数时,我没有多维数预算;最后,我的目标是高保真。

贴图

在我看来,贴图是这个过程中最令人愉快的部分。现在你可以看到你的角色变得栩栩如生。伟大的纹理的关键还是在于参考。我怎么强调都不为过,但有好的参考资料会导致成功。对他的皮肤进行处理是贴图过程中最繁琐的部分。细微的调整可以使皮肤纹理的逼真度提高或降低。我喜欢从头开始制作我的纹理。自己制作皮肤纹理给了我绝对的控制权和最大的创作自由。

我从制作头部纹理开始,制作了我的Sub Dermal文件夹,其中放置了皮肤下面的颜色填充层,如红色和紫色。在这些填充层中,我添加了多层噪音以增加复杂性和变化。然后,在创建真皮皮肤纹理之前,我在头上把这些颜色屏蔽掉。之后,我创建了一个真皮文件夹,里面有我所有的真皮皮肤属性,如皮肤颜色、皮肤变化、阳光伤害、嘴唇、油性等等。在这一点上,我不断地看我的参考资料,以确保它匹配正确。

为了在纹理中获得一些额外的细节,我总是创建自己的SSS贴图并导出镜面贴图。这不是必须的,但它给了模型一些额外的细节。我为疤痕组织添加了一些变色填充层,以确保它看起来像一个疤痕。另外,我还为那些特定的伤疤区域添加了一些额外的SSS。

我从Textures.com为我的皮革和金属材料收集正常、高度和韧性的纹理。他们有一个庞大的逼真材料库,对我所有的角色项目有很大帮助。我在这个项目中使用了他们的一些皮革和布的材料。一旦我把它们导入substance,我就把这些贴图添加到它们自己的填充层中,以便完全控制。我学到的一个很酷的技巧是使用对比度发光过滤器来帮助调整高度、法线和粗糙度,如果它变得过于强烈。

从那里,我在上面创建了2到3个变化层,其中包括颜色、粗糙度和材料的高度的差异。然后,我添加我的边缘,同样的,我巧妙地添加变化。太多的边缘高光会使模型看起来过于CG。

在所有的材料集上面,我总是有一个泥土/灰尘填充层。这给了材质一个额外的 "推动力",使它们进入现实。我尽量不做得太过分,因为我不希望我的纹理看起来太嘈杂,但只要巧妙地处理,它可以起到很大的作用。

头发

我首先为我的所有头发网格创建头皮。这使得它很容易组织和画上面具。然后,我为所有的头皮做了XGen描述,把它们与我想让它们容纳的特定头发联系起来。为了创建头皮,我复制了我的头部网格,屏蔽了放置头发向导的面,并删除了网格的其余部分。除了辫子,我对每个头皮都做了这样的处理。我知道在这个项目中,决定成败的时刻将是辫子的问题。值得庆幸的是,我使用了高级角色艺术家Tomas Sackmann的课程来帮助我翻越创建辫子的大山。

在具体创建辫子头皮时,我使用了Maya中的EP曲线工具来制作初始曲线形状。然后,一旦我对曲线的位置感到满意,我就用扫网工具来创建辫子的头皮。在为我的每个头皮创建描述后,我通过每个头皮网格,尽可能地放置和塑造曲线导轨。我使用修改器来调整头发的大小、形状和体积。一旦我对结果感到满意,我就使用转换XGen原形为多边形的功能并将其导出。

渲染

最终的渲染是在Marmoset Toolbag中完成的,并在Arnold中进行高聚物粘土渲染。Marmoset Toolbag使设置着色器和照明变得超级简单。此外,它的即插即用的渲染功能、友好的用户界面和光线追踪使它成为我最喜欢的渲染器之一。我的Marmoset场景的照明是非常简单的。场景中所使用的都是Marmoset库中的Studio HDRI,一个角色的边光,和一个枪的边光。此外,我还调整了相机的后期效果设置。

为了给皮肤纹理添加更多的调料,我在皮肤着色器中打开了二次反射。这只是给皮肤纹理提供了额外的逼真度。

我还在Marmoset中创建了一个自定义的头发着色器,以模仿头发在现实生活中的行为方式。我喜欢用阿诺德来做我的高聚物渲染,因为它使用起来很简单,而且渲染质量也很高。首先,我把高聚物网格导入到一个场景中,并加入我的头发。然后,我用一个平面创建了一个简单的背景。在阿诺德中进行渲染时,你只需要使用两个明暗器,即aiStandardSurface和aiStandardHair。我将aiStandardSurface应用于我的网格和背景,将aiStandardHair应用于我的头发模型。最后,我从PolyHaven导入了一个Studio HDRI,并根据我的喜好进行了调整。

结论

总的来说,这个项目花了我一个半月的时间,在我仅有的一点空闲时间里完成,其中大部分时间用于高聚物雕刻。最具挑战性的部分是XGen的创造,特别是恐惧症的创造。为了找到正确的形状和最自然的布局,我花了很长时间才找到答案。

我对任何新的角色艺术家的建议是要与你的工作保持一致。一致性是你在做任何事情时成为伟大人物的关键。不断地创造你喜欢的东西,并不断地挑战你的极限。看看其他艺术家,弄清楚他们在做什么。对批评持开放态度,学习新的东西,并不断挑战自己。我最喜欢的拿破仑-希尔的一句话是:"力量和成长只能通过不断的努力和奋斗来实现。"

本文《在 Maya、ZBrush 和 Arnold 中重塑来自邪恶西部的 Edgar Gravenor》内容由Renderbus瑞云渲染-云渲染平台整理发布,如需转载,请注明出处及链接:
https://www.renderbus.com/share/post-id-1533/

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

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

相关文章

从零开始 Spring Boot 53:JPA 属性转换器

从零开始 Spring Boot 53:JPA 属性转换器 图源:简书 (jianshu.com) 这篇文章介绍如何在 JPA(Hibernate)中使用属性转换器。 在前篇文章中,我介绍了如何使用Embedded和Embeddable将一个类型嵌入实体类,并映…

初识mysql之表内容的增删查改

目录 一、插入 1. 插入基础语法 2. 单行数据 全列插入 3. 多行数据 全列插入 4. 插入,失败则更新 5. 替换 二、基础查询 1. 查询基础语法 2. 全列查询 3. 指定列查询 4. 表达式查询 5. 结果去重 6. where条件 6.1 比较运算符与逻辑运算符 6.2 查询…

爬虫入门指南(5): 分布式爬虫与并发控制 【提高爬取效率与请求合理性控制的实现方法】

文章目录 前言多线程与多进程多线程多进程多线程和多进程的选择 使用Scrapy框架实现分布式爬虫1. 创建Scrapy项目2. 配置Scrapy-Redis3. 创建爬虫4. 启动爬虫节点5. 添加任务到队列 并发控制与限制请求频率并发控制限制请求频率 未完待续... 前言 在进行爬虫任务时,…

STM32外设系列—红外遥控

文章目录 一、红外遥控简介二、红外遥控的原理三、二进制脉冲编码3.1 NEC码的位定义3.2 NEC遥控指令的数据格式 四、红外遥控程序设计思路五、红外遥控程序设计5.1 红外遥控初始化程序5.2 记录高电平持续时间函数5.3 中断服务函数5.4 读取键值5.5 参数定义 六、应用实例 一、红…

ADB原理,常用命令汇总及示例

一. ADB简介 ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种…

基于Java+SpringBoot+vue的食品安全管理系统设计与实现

博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…

基于Java+Vue前后端分离网络教学平台设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Ubuntu连不上网,在windows安装docker后

在windows上安装docker后,会依赖于virtualbox虚拟机,并且有虚拟网络,与ubuntu虚拟机网络产生冲突。 解决办法,打开网络适配器,禁用VirtualBox网络 这个时候就可以了。 ubuntu上使用docker pull镜像的时候&#xff0c…

线性代数克莱姆法则的几何含义

以二元一次方程组的求解为例: { a c a 1 b c b 1 c 1 a c a 2 b c b 2 c 2 \left\{\begin{array}{l} a_{c}a_{1} b_{c}b_{1} c_{1} \\ a_{c}a_{2} b_cb_{2} c_{2} \end{array}\right. {ac​a1​bc​b1​c1​ac​a2​bc​b2​c2​​ 其中 a c a_c ac​和 b c b_…

【Lua】ZeroBrane Studio免费专业IDE使用详解

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ IDE界面说明项目目录编辑器控制台窗口输出窗口选择解释器堆栈窗口监视窗口大纲窗口 2️⃣ 调试程序3️⃣ 自定义lua解释器编译自己的lua解释器增加interpreters配置文件重启IDE 4️⃣ 其它IDE比较Lua EditorVSCode 🛬 …

精密电阻的丝印识别方法

在PCB上经常会出现一些精密的电阻丝印和普通的电阻的丝印识别方式不太一样,比如图1所示。 图1 这种电阻的丝印主要是由两部分组成,第一部分是两个数字,第二部分是一个字母,电阻的阻值的计算就是根据这这个丝印编码。例如图2中的丝…

css中鼠标悬停和点击触发样式变换(:hover和:active)

效果 代码 /*hover--光标(鼠标指针)悬停在元素上时触发*/ .el-card:hover{background: #f5f5f6; } /*active--按下按键和松开按键之间的时间触发*/ .el-card:active{background: #e0dfdf; }

Linux--管道文件:|

作用: 传输资源,你现在可以单纯的把资源看作是数据 》管道的作用是传导数据 构成:入口与出口 存储: 内存级的文件,没有在磁盘上!

Emacs之sr-speedbar替代neotree显示目录(一百一十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【Linux进程】进程优先级和其他概念 {查看进程优先级,PRI和NI,修改进程优先级;竞争性,独立性,并发和并行,进程上下文}

进程优先级和其他概念 一、进程优先级 1.1 基本概念 什么是优先级? 进程的优先权(priority)就是用来确定CPU资源分配的先后顺序的。进程的优先级是调度器调度进程到CPU执行的重要指标。 为什么要存在优先级? 由于CPU资源有限…

注册登录账号系统

目录 前言 一、项目介绍 二、项目分析 1.框架介绍 框架流程图:​ 板块分析: 前提: (1)注册板块 (2)登录板块 (3)main方法主板块 2.实操展示 (1&#x…

并发List:CopyOnWriteArrayList

CopyOnWriteArrayList 适合写多读少 介绍 JUC包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,使用了写时复制策略,对其进行的修改操作都是在底层的一个复制的数组上进行的。 CopyOnWriteList 实现的接口和 Ar…

async异步任务_同步任务选项

需要先看完上文:async创建异步任务_御坂美琴1的博客-CSDN博客 让类里面的一个成员函数当作线程的参数。 async里面有三个参数,一个是成员函数的地址,第二个是 类,第三个是传入的参数。 接下来介绍async的同步线程创建。 asy…

C++类Day2,作业思维

1.昨天的基础上完成运算符重载 #include <iostream> using namespace std;class Complex { private:int real;int vir; public://无参构造Complex(){cout << "无参构造" << endl;}//有参构造Complex(int a,int b):real(a),vir(b){cout << &q…

Ubuntu18.04本地部署Stable-Diffusion-webui绘画

记录Ubuntu下安装Stable-Diffusion-webui&#xff0c;比较简单,以供参考。 系统&#xff1a;Ubuntu 18.04.4 LTS 内存&#xff1a;40G 显卡&#xff1a;32G 硬盘&#xff1a;500G 一、安装cuda 支持安装的cuda版本可以用nvidia-smi命令查看&#xff1a; ----------------…