在 Maya、ZBrush 和 Substance 3D 中创建女枪手(P2)

news2024/11/28 12:35:49

今天瑞云渲染小编给大家带来了Ivan Lim 的Female Gunslinger 项目的细目,讨论了他在 Think Tank 的教育过程,并解释了他为什么选择虚幻引擎来呈现这个角色。这篇接着上篇继续拓扑UV、灯光材质、渲染等方面的分享

头发

我开始用一个块来处理头发,看看它在高多边形头上的样子。然后我计划在 Photoshop 中为每张发卡画出我需要的发丝类型。然后,我将图像作为图像平面引入,以指导头发样条线如何跟随。

发卡

我使用曲线绘制出头发的形状,并将曲线转换为 XGen 中的头发样条线。创建头发时,始终要注意的一件好事是负空间。随着头发从不透明变为飞散,您应该尝试在头发之间添加越来越多的负空间。当您开始将发卡层叠在一起时,这会产生一种深度感。

发卡放置

在放置发卡时,我使用了 Johan Lithvall 使用的方法。他接受了 CGMA 关于为游戏制作头发的采访,我强烈建议听听他的工作流程。按照他的方法,我创建了头发块而不是使用发卡。头发块是由三张发卡组成的,从多个角度看头发块时会产生深度和体积感。

之后,我开始使用头发块并开始将它们分层放置:不透明度、分叉、稀疏、稀疏稀疏和飞散。每个大块层都有越来越少的头发。与 Johan 的方法一样,我在移动头发时使用弯曲变形器而不是使用软选择。它可以更好地控制头发,并且在使用弯曲变形器时,顶点在弯曲时会有适当的边缘流动。尽管它更耗时,但您从中获得的控制是值得花费时间的。发卡自动化可以工作,但最终可能比手动放置发卡花费更多时间进行调整。

重新拓扑

头部和身体

我从一个基础网格开始这个项目,所以头部已经有了可用的拓扑结构。但是,对于 UV,我重做了它们,因为我不小心合并了一些网格并沿途删除了一些面,这破坏了 UV。

资产

我从抽取的网格开始并将其用作活动表面,因此我可以在其上使用四边形绘制以使四边形绘制的网格符合活动表面。然后我在Maya中使用四边形绘制并开始使用几何体的大面来遮挡整个网格并慢慢添加边缘循环以符合实时网格的形状。对于需要更多几何图形的区域,例如折叠,我会使用切片边缘工具,并在需要的地方添加更多几何图形。

紫外线

我使用 Maya UV 工具展开和布置 UV。具有相同材质类型(例如皮革、金属等)的网格具有自己单独的纹理集,因此更容易在 Substance 中进行纹理化以及在着色器中添加平铺对象,因为它适用于相同类型的材质。我为每种材质类型提供了一个单独的 Maya Lambert 材质,以便 Substance 能够识别它们并将不同的 Lambert 材质拆分为不同的纹理集。

眼睛、Eyeblend、EyeAO、泪线网格

这些网格都是由虚幻引擎从数字人类中提取出来的,因为对它们进行了大量复杂的着色工作,虚幻引擎建议用户使用他们的网格。

纹理

头部和身体

对于这个项目,我使用了 TextureXYZ 多通道面部贴图。我将低多边形头带入 R3DS Wrap 进行多通道纹理投影。多通道面部贴图具有三种不同的贴图:Albedo、Displacement 和 Utility。投影后,我从置换贴图中提取了 R、G 和 B 通道,并将它们作为纹理导入到 ZbBush 中以进行清理和其他细节。我使用变形笔刷进行了一些清理,并变形了带有投影伪影的区域,例如鼻角、唇角和眼睑。

然后,我使用皮肤毛孔 alphas 在其各自层中的网格顶部添加。如果我需要调整某些区域,例如嘴唇和眼睛,使用多层可以让我更好地控制。面部的纹理阶段是通过使用在 R3DS Wrap 中投影的投影并添加可拼贴的,我在
Substance 3D Designer中通过直接从多通道反照率中提取一些方形纹理并在Substance 3D Designer中制作平铺。之后,它只是通过使用 Substance 中的烘焙贴图来添加皮肤细节,添加色调区域和皮肤损伤。我参考了一些面部的交叉偏振图像以获得面部的不同颜色变化。

资产

对于资产,我总是从处理基色开始,使用不同的遮罩来增加颜色的分解。我总是尽量使纹理尽可能程序化,使用不同的纹理作为遮罩。在程序纹理的最后,我将通过手绘添加更多具体细节。通过这种方式,我可以非常快速有效地完成大部分纹理,因为更改程序蒙版比更改手绘蒙版要快得多。我喜欢将图层分解为三个独立的细节频率:大频率分解掩码、中等频率和较小的细节频率。基色完成后,我将使用具有基色的相同图层来添加一些粗糙度分解。

皮革

更旧、更破旧的皮革在色调、饱和度和亮度方面的颜色变化更大。这就是为什么拥有多层不同频率的面具对于显示皮革是旧皮革还是新皮革很重要。在这个角色的皮革中,因为她是一名枪手并且经历过一些战斗,所以我希望皮革更容易撕裂和磨损,尤其是在它更暴露的区域。

在贴图阶段的早期,在 Substance 中设置了一些基本的第一遍贴图之后,我想确保我在 Unreal 中设置了一个场景,这样我就可以在贴图时做一些 LookDev 工作。在纹理和 LookDev 之间来回切换对于确保您的纹理在正确的路径上至关重要,因为只需单击导出按钮即可了解它在渲染引擎中的外观非常有用。您可以做的最糟糕的事情是花费大量时间调整小细节并尝试使视口渲染看起来不错,只是将其导出到渲染引擎并意识到某些东西已关闭。

虚幻引擎中的光照

将它带入虚幻引擎的原因是我之前没有使用过它,而虚幻引擎数字人类文档中有太多的信息和研究,我想学习如何将我的角色带入实际的游戏引擎。与其他引擎相比,Unreal 具有很多可定制性,您可以在其中使用大量节点来帮助使角色看起来很棒。这并不是说其他​​渲染引擎不好,只是虚幻引擎中的渲染一直是我想深入了解的东西。如果需要做到更好的一个效果,瑞云农场小编也十分推荐大家使用
云渲染(Renderbus瑞云渲染平台,注册即可获取40元,效果图用户注册即可获取20元)农场来完成工作!

灯光

照明是一个简单的三点照明设置,带有额外的补光灯以照亮一些阴影太暗的区域,以及将观众的眼睛吸引到某些部分的灯光,例如枪支。

后期处理

我使用了 Bloom、色差、晕影、景深和颜色 LUT (LookUpTable)。

  • 光晕:这会产生光晕,为明亮的物体(例如灯光)创造发光效果,给人一种通过真实相机镜头观看的感觉。
  • 色差:这模拟了真实世界相机镜头中的颜色偏移。
  • 晕影:此效果会导致图像的亮度随着与视口中心的距离增加而降低。这会将用户的视线引导至图像的中心,即角色。
  • 景深:我为每个电影摄影机镜头创建了自定义景深。
  • Color LUTs: LUTs的过程可以在虚幻引擎的LUTs Documentation中找到。

总的来说,该项目需要 10 周的时间才能完成。我要感谢我的主管 Babak Bina 先生每周都会提供宝贵的反馈,还要感谢推动我前进的同事。我面临的挑战包括需要进行大量研究以使虚幻中的角色看起来不错。还有很多东西要学,这让我很兴奋。这个概念是基于Meltifire 在 ArtStation 上制作的作品。

本文《在 Maya、ZBrush 和 Substance 3D 中创建女枪手(P2)》内容由Renderbus瑞云渲染-云渲染平台整理发布,如需转载,请注明出处及链接:https://www.renderbus.com/share/post-id-1492/

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

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

相关文章

看看人家那高并发秒杀系统,那叫一个优雅

618,大家剁手了么? 说起618,就不得不提其中较为复杂的秒杀环节了。虽说秒杀只是一个促销活动,但对技术要求不低。 秒杀作为618、双十一等电商活动不可缺少的一环,是一个非常典型的活动场景。秒杀场景的业务特点是限时…

并发知识学习

aqs中有2个队列,一个是同步队列,另外一个是条件队列简单记住:独占没有朋友,所以是null。共享就有朋友,所以是固定的node对象。nextWaiter就是表示节点的模式,在条件队列中指向下一个节点。 一个想要去获取锁…

车载测试范例,如何进行ADAS执行器性能测测试?

概述 执行器性能分为横向性能和纵向性能,横向性能主要指方向盘转向的响应性能,纵向主要包括油门加速性能及刹车减速性能。其中横向性能在ADAS中涉及的功能包括LKA、LDW,跟纵向加/减速性能相关的功能主要是ACC(自适应巡航&#xf…

C++数据结构【树状数组】

​ 树状数组 什么是树状数组?树状数组和线段树的区别 树状数组的结构什么是lowbitlowbit如何计算代码实现:补充知识——&,|,^运算&|^注意: 树状数组的基本操作单点修改while循环版代码for循环版代码 单点查询区…

pytest生成 junit-xml 测试报告

pytest 生成junit-xml 测试报告,那么生成的xml报告有什么用呢?可以集合一些持续集成工具(如jenkins…等)方便查看报告。 junit-xml 测试报告 命令行参数有2个跟 junit-xml 报告相关的参数 --junit-xmlpath create junit-xm…

2023年软件测试——精选金融银行面试真题

1、P2P你们也测试后台管理吗?个人芝麻信用积分是调取哪里的资料? 测试后台管理: 后台也测,但是我主要测试前台,我的关注点是前台,后台只是拿来用,能配合前台正常走完流程就行。 后台主要对前…

Linux线程同步(下)

文章目录 1. POSIX信号量2. 基于环形队列的生产消费模型2.1 代码实现2.1.1 构造函数和析构函数2.1.2 生产和消费2.1.3 测试 3. 线程池3.1 成员变量3.2 构造和析构3.3 push和pop3.4 启动线程池3.5 测试 4. 将线程池改成单例模式5. STL、智能指针和线程安全6. 其他常见的各种锁6.…

聊聊测试驱动开发

这是鼎叔的第六十四篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 本文观点参考自Lasse Koskela,他是《测试驱动开发的艺术》的作者。…

软件测试之【单元测试、系统测试、集成测试】

一、单元测试的概念 单元测试(Unit Testing)是对软件基本组成单元进行的测试,如函数(function或procedure)或一个类的方法(method)。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…

揭秘跨部门沟通的秘密武器:让不归你管的人主动配合你的绝妙方法!

跨部门沟通,Edge对此有点胆怯:“我们自己内部进度,怎么着都好管。都是自己人,目标一致。可涉及跨部门合作,管起来就困难。人家又不归我们管,不可控因素太多了。如果在合作的过程中,出现啥问题&a…

docker 镜像结构原理

目录 参考文档:第八篇:Docker镜像结构原理_Linux运维开发的技术博客_51CTO博客 1、基础镜像 base base 镜像有两层含义: 为什么我们的镜像文件比一般的软件小一些呢? 二、镜像的分层结构 问什么 Docker 镜像要采用这种分层结…

org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

一、yml解析异常问题 今天启动某开源项目时,碰到一个问题org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping 。 二、解决 2.1 修改项目目录下缩进格式 在项目下的nacos目录中application-common.yml 文件中修改缩进格式,每…

15个最好的性能测试工具(软件测试工程师必备)

在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表。 这些负载测试工具将确保您的应用程序在高峰流量和极端压力条件下的性能。 该列表包括开源…

Spring Security OAuth2.0(五)-----OAuth2实现自定义统一认证登录页/自定义授权页/基于mysql存储数据

本次实例涉及三个项目 核心项目工程unify_authorization_server(认证授权登录) 资源服务器项目unify_resource_server 测试项目是前面几篇写的项目 这里没有改动直接用来测试实例项目 (一)unify_authorization_server pom相关依赖 我采用的是spring-bo…

Ngnix网站服务

Ngnix网站服务 Ngnix网站服务 一、Ngnix服务基础:1.Ngnix的基本概述:2.简述Nginx和Apache的差异:3.Nginx和Apache的优点:4.应用场景:5.扩展: 二、编译安装Ngnix服务:1.编译安装:2.常…

基于matlab使用自校准来适应阵列不确定性(附源码)

一、前言 此示例显示了基于约束优化过程的自校准过程。利用机会来源同时估计阵列形状的不确定性和来源方向。此示例需要优化工具箱。 理论上,可以设计一个完美的均匀线性阵列(ULA)来执行各种处理,例如波束成形或到达方向估计。通常…

玩转ChatGPT:回答审稿人问题

一、写在前面 前段时间一篇时间序列预测的文章返修,还挺幸运的,给了个小修。 不过问题也问得有点刁钻,应该是个行家。 想到手头有小Chat,打算使用TA来辅助我回答审稿人问题。 以下展示仅仅提供一个工作流和思路,具体…

好程序员:逼自己看完并学会,你的Java会很牛!

打算学java的伙伴们,如果你们很迷茫焦虑的话,不妨看看好程序员的建议。好程序员作为行内人告诉大家,零基础也是可以学java的,而且不仅可以学会,还可以学的很好,并且能找到工作。 Java学习路线规划&#xff…

Day22 实战篇 ——Jmeter性能测试实战——JMeter执行原理、Jmeter性能测试实战、下载使用PerfMon插件、 Grafana可视化展示

Day22 实战篇 ——Jmeter性能测试实战——JMeter执行原理、Jmeter性能测试实战、下载使用PerfMon插件、 Grafana可视化展示 文章目录 Day22 实战篇 ——Jmeter性能测试实战——JMeter执行原理、Jmeter性能测试实战、下载使用PerfMon插件、 Grafana可视化展示一、Jmeter执行原理…

高性能通信库——nanomsg(含交叉编译)

一、nanomsg介绍 NanoMsg是一个Socket的通讯库,使用C语言编写实现的,这样就可以适用于多种操作系统,而且几乎不需要什么依赖,可扩展并且能易于使用。Nanomsg提供了几种常见的通信模式 ( 也称为“可扩展性协议” &#…