3D动作绑定_次世代3D游戏角色的制作流程_weixin_39644750的博客-程序员秘密

技术标签: 3D动作绑定  

deda53b0fb94d79425a111644b18dbc2.png
文 |游鲨游戏 / 图| 网络/原创

通常一个3D游戏角色的制作流程分为概念设定、模型搭建、贴图烘焙、骨骼蒙皮、动画制作和引擎测试六个步骤,涉及到的岗位有原画师、模型师、动画师等。整个制作周期30到45天。

对于策划来说,了解美术工作流程对规范美术需求文档,有效减少和美术的沟通成本十分必要。

本文就来简单讲述下游戏角色的制作过程,希望能让大家对游戏制作有更深的了解。

18242c360468e0fe34114c92e90e13ac.gif

一、概念设定(原画)

概念设定的主要工作是做游戏世界观的视觉化表现工作,概念设定师根据策划的文案,设计出整个游戏的美术方案,包括角色设定、场景设计、怪物、道具、载具等等,为后期的游戏美术(模型、特效等)制作提供标准和依据。

dae3f463ab1a73b0d737ba043d23bf56.png

通常每款游戏都会有相应的美术风格及美术标准,这将决定整款游戏的美术方面——风格、美术效果、细节要求以及特征呈现等。

59a43d6606ee7e921231719c1149d10c.png

游戏概念设定也被称为原画及设定,一般分为场景原画、设定原画、CG原画

b346dd1d13f58d05b90f02ac02b4a48c.png
阴阳师概念设定

39c9d7e8fe30ce999eb445ad5138317c.png

8d241e8b08271a04d0d30ec476b28c22.png
刺客信条·枭雄原画设定

a4c129c87094374436914740857031b6.png
刺客信条·枭雄原画设定

1ef91b892ed5646bd352033ab9a097c2.png

f6848bcc2027f628b0755e3730afa327.png

二、模型设计制作及拆分UV

当游戏角色原画及设定确定后,会进行角色模型制作。次世代角色模型制作流程一般是:3Dmax建中模-ZB雕刻高模-maya拓扑低模-mayaUV拆分-toolbag或SP烘焙贴图-SP绘制材质

4f20dda9ec1f5eb72e53a6462ab8f7f0.png
低模

cfb44b86efdcf56113cbc1a977e65993.png
贴图

b4d1a2a8a557b065f0d38f683727b233.png
贴图之后的成品模型

b52263d267ec392e5a1e6315dc725593.png
骨骼绑定

中模能尽快的将原画中的角色的体型、轮廓描述出来。

4827d9fb3b2b2fbd10421cd8eecaa667.png

一般在次世代游戏制作中,中模完成后会进行高模制作,高模是指高细节,高精度的3D模型,看上去十分逼真细节非常丰富模型的面数也相当的高。

4eef530d61f846edfceefde4e76cf5db.png
闪耀暖暖角色高模

高模会将角色模型做得非常精细,包括很多人物细节,角色材质等,以表现角色的细节特征。高模也经常用来制作游戏过场动画。

在高模制作完成后会制作低模。由于在手机游戏运行中需要考虑性能的问题,而高模细节多,面数高,游戏引擎拖不动,从而产生拓补低模的概念。

410168b6e0410cabca55e48bfc48d9a6.png
ZBrush里面雕刻的高模

7d943313b86aa54da2ccb1ac10a37f17.png
高模拓扑出来的低模

低模会根据高模减少面数,尽量保证角色轮廓匹配的情况下进行优化。在精简面数同时要合理布线以方便后续角色动画的制作。

模型制作完成后,还需要拆分模型UV,也叫UV展平

拆分模型UV就好比一个骰子六个面,要画贴图(下一章节)就先要把UV拆成一个平面,因为我们绘出的贴图是平面的(横X纵Y轴),所以UV也要拆成平面,并且UV坐标要和贴图坐标对应(U对应贴图的横坐标,V对应贴图纵坐标,也即映射)

37d285ca60ad5bfec47fdeb78c10afdf.png

学术点说就是当我们将3D的模型拆开,变成2D平面时,每个平面对应3D模型的具体位置都是通过UV进行计算的,UV能够使贴图在精准的对应到模型表面。

8ce46df6378d3e12ae0b18021b31493d.gif
哪吒UV展平

三、贴图绘制(烘焙)

在模型制作完成后,需要进行贴图绘制。贴图可以理解为对照原画给角色模型添加“皮”和“衣服”。

c9d229b361d5806a8d4d29bbd2269ecc.png

次世代游戏贴图分为描绘物体表面细节的凸凹变化的法线贴图(normalmap)、表现物体的颜色和纹理的反射率贴图(albedomap)、表现物体在光线照射条件下体现出质感的金属度贴图(metallicmap)和粗糙度贴图(roughness)。

cfb44b86efdcf56113cbc1a977e65993.png

最新的次世代技术是PBR技术,指使用基于物理原理和微平面理论建模的着色/光照模型,以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染理念。

b7b55112a656f00810d0db2a9b6942c0.png

在通过各种微调、细节优化后,便开始了贴图的绘制,这也是游戏美术风格、角色美术细节体现的部分,除了要用到大量的高清素材,还需要设计者手绘进行原创制作,次世代游戏则会结合以上的贴图,以达到更好的角色质感和表现效果。

03ad7c15a67832d6482560b93eb9c33a.png

d2b1731aeb5177f7a5150c0ef25da86d.png

四、搭建骨骼及蒙皮

模型、贴图制作完成后,需要进行游戏角色骨骼搭建及绑定,这里会根据角色的特性进行不同的设计,合理的根据角色肌肉、关节搭建骨骼,以方便后续的动画制作。

08860a4a92138968d937404702b762a4.png

除了角色本身以外,角色武器也要通过搭建骨骼及绑定,如下图战神主角武器链刃的绑定。

472d9a0a0f46071cb033a26e15ff6bfb.png

b3da9e2b93a6c88464b821886a27bcf8.png

而在角色骨骼搭建完毕之后则可以开始蒙皮。蒙皮就是将创建好的骨骼与模型绑定在一起,保证模型能顺利且正确的动起来。

负责角色建模的美术同学,往往会把模型建成双手向两侧抬起的姿势,这个姿势叫作T-pose(也叫绑定姿势,如下图)。这样做是为了方便动作美术进行蒙皮,蒙皮后模型上每个顶点都会保存在绑定姿势下相对于部分骨骼的相对位置。

d18ce0af7961580239f9e21d77fb7cca.png

五、动画制作及优化

在人物蒙皮完毕后,会根据游戏中的需求进行动画制作,比如人物行走,以到活灵活现的效果。

在动画制作及优化环节会比较严谨,除了要反复检查参与活动的皮肤与骨骼,还需要删除不必要(多余)的骨骼,要严格按照动画流程来制作。

6e9c50c8bf0b243adea1e271a37d7d14.gif

六、引擎测试

在完成了上述工作后,动画制作人员会将做好的角色交还给模型制作人,此时会将角色模型导入引擎中进行测试,包括任何动画和变形,以及检查纹理和照明适用于正确的表现方式。

通过测试后,一个角色模型本身的制作过程就算完成了。

eaa432d43ebefcbb0356d47514548c83.gif

更多模型赏析,请关注微信公众号:游鲨游戏圈

往期文章:

游鲨游戏圈:是颠覆行业的技术,还是如VR噱头一样昙花一现——深入了解云游戏​zhuanlan.zhihu.com
364755b92bbf6562302ec94abc17df99.png
游鲨游戏圈:日本移动游戏市场分析​zhuanlan.zhihu.com
df4835e5cc95d25a53c6b35fadfc714a.png
游鲨游戏圈:全面了解游戏策划​zhuanlan.zhihu.com
69aa2eb66e863e24b070f1a681ab34da.png
游鲨游戏圈:老大哥正看着你:游戏版《1984》——围城秀 Ministry of Broadcast介绍​zhuanlan.zhihu.com
73c5e43683cbebec7bf685e4acf9d91f.png

23d93642e118b5d19b83303171c1d4a6.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39644750/article/details/110149918

智能推荐

gitlab external_url采坑记_hrbbeeant的博客-程序员秘密

环境docker背景由于gitlab默认是没有上下文的,但是对于只有一个DNS服务器+nginx或haproxy做代理的情况下,没有上下文配置是不科学的。为此,我们必须给gitlab一个上下文(比如:/gitlab)操作假设docker 端口映射关系docker run -p 80:80修改 gitlab.rb...external_url 'http://example.or...

【幻化万千戏红尘】qianfengDay21-java基础学习:进程、线程、Timer_幻化万千戏红尘的博客-程序员秘密

课程回顾:面向对象数组异常常用类集合IO流今日内容:进程:应用程序运行时,产生的独立的应用程序,拥有独立的代码和存储空间多进程:操作系统可以并发的执行多个进程线程:进程内部的一条执行路径多线程:java语言支持程序内部进行多线程开发进程内部可以有多个线程线程的作用:可以分担压力,提高性能主要用来完成耗时

结构体变量和结构体指针变量作为函数参数_接口参数 结构体变量还是指针_同名公众号 - 人生代码的博客-程序员秘密

#include<stdio.h>#include<string.h>struct AGE{ int year; int month; int day;};struct STU{ char name[20]; int num; struct AGE birthday; float score;};void InputStu(struct ST...

微信小程序中如何使用WebSocket实现长连接(含完整源码)_IT 哈的博客-程序员秘密

1、前言微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一番之后,发现微信支持 WebSocket 还是很值得玩味的。这个特性意味着我们可以做一些实时同步或者协作的小程序。这篇文章分享了一个基于WebSocket长连接的微信小程序——简单的剪刀石头布小游戏的制作过程,希望能对想要在微信小程序中使用 WebS...

网络虚拟化—概念_网络虚拟化概念_DiamondTan的博客-程序员秘密

如果要实现软件定义数据中心的愿景,网络虚拟化将会是旅程中的最后一公里。IDC估计网络虚拟化市场会从2013年360 million美金增长到2016年的3.7 billion。众多巨头接连大手笔,而很多新创公司也纷纷瞄准了这个方向。我们从下面几个方面来谈谈这意味着什么。一巨头间的博弈由于云计算逐渐进入成熟阶段,解决传统网络架构面临的挑战显得越来越迫切。中小企业可能还好,最着急的...

微博粉丝精灵_乘风破浪的姐姐,喂了粉丝一波文案!!!_weixin_39632524的博客-程序员秘密

昨天夜里,小学时候喜欢的歌手终于出新歌了。今天白天,小时候喜欢的女明星来参加选秀了。芒果台重磅节目《乘风破浪的姐姐》,宁静、张含韵、郁可唯、万茜、钟丽缇等等,这些大牌姐姐们放下身段参加选秀,被评价、打分、争夺成团席位,消息一宣布就登上了热搜。而首播的今日,更是几乎占据了我微博的首页,虽然热搜关了,但“热搜榜”却关不掉:网友自制热搜榜大家都关注的是这些出道多年的姐姐们再次在舞台竞技绽放,争...

随便推点

HttpClient使用具体解释_weixin_34216036的博客-程序员秘密

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,添加了易用性和灵活性(详细差别,日后我们再讨论),它不仅是client发送Http请求变得easy,并且也方便了开发者測试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是非常重要的必修内容,掌握HttpClient后,相信对于H...

Elasticsearch 集群 单服务器 超级详细教程_no known master node, scheduling a retry_一只野生程序猿啊的博客-程序员秘密

前言之前了解了Elasticsearch的基本概念。将spring boot + ElasticSearch + head插件 搞通之后。紧接着对es进行下一步的探索:集群。查阅资料的过程中,找到了一篇超鸡详细的博客~~转载以方便日后查阅。亲自实践能更快理解哦。二话不说,先贴上转载地址,QAQ: 博客出处(博主):Thinkgamer博客 博客原文地址:Elasticsearch5....

如何进行一次大批量部署服务器安装?_新服务器的批量部署与维护_Dribblelife的博客-程序员秘密

大批量部署服务器安装前言准备知识批量装机软件介绍什么是PXE?PXE的工作流程PXE必要条件什么是TFTP?什么是syslinux?批量部署服务器安装步骤:自动应答脚本制作工具kickstart配置DHCP服务器配置HTTPD配置TFTP服务器TFTP目录文件准备测试实验前言楼主所在实验室的机房近期进来大批量的新服务器,装机成了最大烦恼,因为总是遇到一些机械式的重复工作。如何进行一次大批量部...

python django模型内部类meta详解_python 内部meta_iloveyin的博客-程序员秘密

Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。以下对此作一总结:abstract     这个属性是定义当前的模型类是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段。比如下面的代码中Human是一个抽象类,Employee是一个继承了Human的子类,那么在运行syn

c++中获取小数点后面小数的方法_太晚说再见的博客-程序员秘密

double getPoint(double n){double nTemp=n-(int)n;return nTemp;}

推荐文章

热门文章

相关标签