warcraft是非常经典的游戏,而由warcraft衍生出来的各种玩法(dota、3C以及各种剧情版的war3游戏),同样是经久不衰。这些得益于warcraft的牛逼编辑器。

不管是策划还是玩家都梦想着有一套功能强大且使用方便的编辑器来实现自己想法,而WorldEditor(简称WE)就是这样的编辑器。WE应该是本人见过的最强大的地图编辑器(没有“之一”),这种强大不仅是建立在精妙的算法上,同时更为重要的是建立在一种开放、规范的机制和流程之上。其中规范化的模型制作流程是这种强大的重要组成部分。

PS:可能有人会问:“你丫一个服务器端程序员,为啥要研究模型呢?”;答曰:“不想当策划的程序不是一个好美术!”

一、背景介绍及所需工具

Warcraft3强大的WE不仅能刷出变化多样的地形,也能导入遵循一定规范的模型。这使得玩家能利用WE发挥自己的想象,创作出很多不同的场景和玩法。下面就来谈谈模型。

3D游戏开发中模型制作是美术同学的主要工作量(这里也没有“之一”),那么一套好用的工具往往能达到事倍功半的效果。什么工具才能称得上好用呢?美术同学制作3D模型,最熟悉的莫过于3dsmax和maya。但是由于各家的公司的引擎对模型的要求不一致,而且很多细节上实现方法也不尽相同(比如ribbon、Particle、Attachment Point等等)。因此3dsmax和maya导出的模型往往不能直接使用。现今比较流行的工作流程是:3dsmax制作模型并导出 -》对应引擎的模型编辑器修改模型及动作等等 –》 使用模型编辑器导出成引擎可用的模型格式。这种流程实际上就是对MAX这样的流行开发工具的导出模型做了一次转化,这样有一个比较严重的问题:非商业化的引擎(比如某些号称自主研发的山寨引擎)的模型编辑器往往不是很好用,而且编辑器框架定型后由于文档缺失以及代码不规范等原因,很少有公司愿意会大改这些架构。这就导致“新三年旧三年缝缝补补又三年”的局面。还有没有别的方法来解决通用建模软件到特殊3D引擎的格式转化呢?答案是有!可以在3dsmax上做二次开发,把模型编辑器的功能写成MAX的插件,这样就能在3dsmax里使用并导出成3D引擎可用的模型格式,这是一种比较友好的方案。Blizzard就为war3提供了这样一套工具——War3ArtTools。虽然Blizzard称不对这套工具提供任何技术支持,也不知道Blizzard内部是不是使用这种方案,但这套工具确实给其他游戏开发公司提供了一种思路。

War3ArtTools是Blizzard官方发布的制作war3 model的工具集,由于年代的原因以及Blizzard并没有对这个工具集提供直接的技术支持,因此War3ArtTools只能在3dsmax4、3dsmax5上使用。win7用户肯定郁闷了。

首先来看看War3ArtTools里都有哪些东西:

这是War3ArtTools的工具集列表,除此之外War3ArtTools包里还有一篇pdf文档、几个MAX model和几个samples。使用这套工具完全可以做出风格迥异的模型。

War3ModelExp.dle 模型导出工具

War3bmtls.dlt 材质编辑工具

War3Preview.dlu 模型预览工具

War3UserProp.dlu 自定义属性编辑工具

War3BlizardPart.dlo 粒子编辑工具

War3Ribbon.dlo 条带编辑工具

二、比例尺

使用Max为war3制作模型,第一步要确定的是比例尺问题。在文档中一开始就给出说明,War3中一个单位等于Max中一个inch(0.0254米),也就是说在3dsmax中:

一个农民70个单位高(1.778米)

war3中最高的建筑为300个单位(7.62米)

一个寻路路径块(Pathing Cell)宽度为32个单位(0.8128米)

一个地形块(Terrain Cell 或 Terrain tile)宽度为128个单位(3.2512米)

一级悬崖(Cliff)高度为128个单位(3.2512米)

WE编辑器和游戏中会始终以origin的位置来摆放对象,所以一般会把origin设在任务的脚底下,建筑物则设在地板上。

模型的初始朝向则是这么规定的:3dsmax中的前视图方向就是war3中人物面对的方向,因此一般会把前视图的方向调成面向制作者。

War3Arttools工具集中提供了预览工具,在制作过程中可以随时看到模型在游戏中的效果。这对美术来说无疑是相当方便的。不需要导出模型,然后启动游戏加载模型。模型预览工具效果如下:

三、模型的多边形数及模型优化

为了让游戏能流畅的运行,游戏引擎都会对模型的多边形面数做出相应的限制,使得制作出来的模型能最大程度上利用引擎同时不会导致引擎渲染不过来。War3ArtTools定义了一个表格对各种类型模型的多边形面数、贴图大小、骨骼数和带动画的Geoset数量做出了限定,用以指导模型制作者。

四、材质和贴图

(1)贴图要求:贴图必须是使用diffuse color map channel,并且只能使用24bit或者32bit的tga文件。文件大小必须是2的整数次幂,最大支持512*512的贴图,长宽比最大不能超过8:1(宽长比同样不能超过8:1)。

(2)Mip levels:当处理一张纹理的mip map时,War3ArtTools统一使用简单的双线性过滤(simple bi-linear filter)。每一级mip levels是上一级的长宽的一半。导出后命名规则是在名字后加后缀及数字:“_mip1.tga”、“_mip2.tga ”

(3)材质要求:只支持自定义的Warcraft III类型和混合材质类型。一个Geometry只支持一张材质,但可以使用组合材质来实现多层效果。(这个地方我也不太理解)

(4)在贴图的alpha通道上可以绘制团队颜色(Team Color),或者为模型创建透明区域。白色(1)为完全不透明,黑色(0)为完全透明。

五、动画片断划分

war3使用的是MAX -》 Track View中的“Note track” Key来定义每一个动画的开始和结束,同时定义时间、长度、是否循环播放等属性,最终连在一个时间轴上。比如阿尔萨斯模型上的一个Note key是这样的:

Walk
250.0
0
0.0
//KEY:
//Sequence Name
//Move Speed (0:static)
//Loop (0:loop; 1:no loop)
//Rarity (0:no rarity)

“Walk”是动画名字,War3ArtTools中对动画序列做出了一些规则限制(包括制作、命名)。

1. 每个动画的开始位置和结束位置都必须分别用相同名字的key来标识,而且这两个key之间不能用其他的“note key”。

2. 动画名由一个或者多个由空格分隔的单词构成,如果是多个,则必须用引号将动画名括起来。完整的动画名字包括primary name 和 secondary name,比如“Stand Ready”

war3引擎内部有一套名字匹配的规则(best-match method),用来选择最佳的动画进行播放。比如一个对象进行攻击行为,这是需要播放攻击动画,在两次攻击动画中间会有一个间隙,这时引擎会尝试播放一个“Stand Ready”的动画,如果这个动画不存在,则会回退到“Stand”动画序列。引擎内的可能有多种动画组合用于播放。

“Note track”的参数中有一项Move Speed,定义了unit的移动速度。对象的移动速度一般在250 ~ 400个单位之间(6.35 ~ 10.16米),也就是人的正常跑步速度。这个参数在War3ArtTools的预览工具中使用,游戏里不直接使用这个值。

引用参考文献[2]:移动速度的调整关系到unit移动时是否会出现“滑步”,这个速度与动画播放速度之间要协调好。比如一个unit,根据其模型的大小基本上可以确定这个模型每跨出一步所移动的距离,也就是步长,假设为x,这样在给定的移动速度s之下,便可以计算出一秒内需要跨出s/x步,这个步数包括了左右两只脚的步数。然后再根据动画播放帧速率,在Max中默认为30帧每秒,便可以计算出一个跨步动作需要在几帧之内播完,也就是动画的播放速度应该有多快。在游戏过程中如果想要加快或减慢unit的移动速度,不仅是加减其位移的变化速度,还要让动画播放速度也做相应比例的改变,也就是让这个unit的动画在一秒内不是播放30帧,这样来避免出现滑步现象。

动画note key还有一个叫Rarity的参数。war3的动画选择系统允许一个模型具有多个同名的动画片断,这个动画将被随机选择。Rarity就是用来调节概率的,war3规定该值的取值范围是1~9,数字越高动画被选中的概率越低。

如上所说war3中有一套动画的选择替换规则,War3ArtTools文档中给出了详细的规则说明,有些动画是必须有的,有些动画是可选的。下面给出文档中的部分定义:

六、骨骼

War3ArtTools支持MAX骨骼、几何体(Animating Geometry)和helpers作为动画的骨骼。一般使用几何体来充当骨骼。具体的制作过程不再本文的讨论范围,这里不进行展开。在制作完成后找到自定义属性面板-》Object Type -》Bone选中即可。

需要注意的是:war3的骨骼是预先定义好的,因此制作骨骼时,骨骼的命名必须遵循一定的规定。

七、挂载点

挂载点其实就是绑定在骨骼上的一些特殊定义的box。这些box不需要材质,引擎也不会对它进行渲染。制作时需要在自定义属性编辑面板上点选“Attachment Point”。

挂载点也是事先定义好的:

八、其他

War3ArtTools中还定义了其他一些模型细节,比如TeamColor,TeamGlow,Trees,Portrait。这些在参考文献[2]中都给出详细的说明,本文就不再做解释。

九、粒子系统

粒子系统由于内容过多,将会写在另外一篇blog里,尽请期待!

References

[1] Warcraft III Art Tools Documentation

[2] http://www.cppblog.com/helloqinglan/default.html?page=3

转载于:https://www.cnblogs.com/ychellboy/archive/2012/07/19/2594020.html

魔兽争霸war3:模型相关细节介绍相关推荐

  1. LGD模型开发细节|全网首发

    量化风控中始终有个贯穿始终的公式即:ECLPDECL,这三者分别称为: ECL-风险敞口 PD-逾期损失 LGD-违约损失率 上面这三个内容,在番茄风控历史的文章中也稍有提及,特别是ECL与PD写到的 ...

  2. css中 盒模型的属性包括(),css的盒子模型属性有哪些?css盒子模型相关属性的介绍...

    本篇文章给大家带来的内容是关于css的盒子模型属性有哪些?css盒子模型相关属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.盒子模型图 2.一个简单的盒子模型 box. ...

  3. 清华大学王晨阳:轻量级Top-K推荐框架及相关论文介绍

    本文内容整理自 PaperWeekly 和 biendata 在 B 站组织的直播回顾,点击文末阅读原文即可跳转至 B 站收看本次分享完整视频录像,如需嘉宾课件,请在 PaperWeekly 公众号回 ...

  4. 直播 | 清华大学王晨阳:轻量级Top-K推荐框架及相关论文介绍

    「PW Live」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义, ...

  5. 微信看一看实时相关推荐介绍

    作者:谢若冰,腾讯微信研究员 在推荐系统中,用户在一个时间段经常会关注同一个主题.当用户读完一篇文章时,他往往会想要继续阅读和这篇文章相关的拓展文章.然而,传统的推荐系统feed流难以提供这种深度的拓 ...

  6. 设计模式相关内容介绍

    1.设计模式相关内容介绍 1.1. 设计模式概述 创建型模式--------买建筑材料 用于描述------怎样创建对象,它的主要特点是----------将对象的创建与使用分离,这样可以降低系统的耦 ...

  7. CSDN开发者周刊:互联网公司接连上演反腐风暴,GitHub 公布了托管平台与美国贸易管制的相关细节!

    CSDN开发者周刊:只为传递"有趣/有用"的开发者内容,点击Star(Github)! 本周热门项目 1.程序员的面试大学堂,学完可以直接去Google面试! 不少程序员在找工作之 ...

  8. LOD技术——定义详解及相关知识介绍

    LOD技术--定义详解及相关知识介绍 LOD技术(Level Of Detail)指用若干不同复杂度的模型来表示同一对象的技术.此技术主要根据视点距离对象位置的变化调用不同复杂度的模型,即在较远时调用 ...

  9. Meta最新模型LLaMA细节与代码详解

    Meta最新模型LLaMA细节与代码详解 0. 简介 1. 项目环境依赖 2. 模型细节 2.1 RMS Pre-Norm 2.2 SwiGLU激活函数 2.3 RoPE旋转位置编码 3. 代码解读 ...

最新文章

  1. 官宣!这些北京高校,正式进军雄安!
  2. 【c语言】蓝桥杯算法训练 乘法表
  3. c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
  4. WinDBG 要点学习
  5. python-IO多路复用,select模块
  6. python多项分式求和计算_python实现利用留数定理分解分式多项式
  7. 『设计模式』简单工厂模式
  8. JAVA-idea中maven配置
  9. http、https、tcp三次握手,四次挥手学习笔记
  10. Windows运行及cmd常用命令
  11. vscode任务栏图标突然不显示
  12. 头条小程序服务器设置,今日头条小程序如何注册申请
  13. Java学习---day07_继承及final、Object的介绍
  14. unity将遮挡人物的模型透明化_笔记
  15. db2iupgrade失败:DBI1205E One or more local databases cannot be upgraded
  16. Opencv Mat记录
  17. 章鱼体验思杰第二天:
  18. 新三板的合作门槛是多少?
  19. char、char*和char**区别与联系(入门级)
  20. CentOS7 安装rar压缩软件

热门文章

  1. STM32在Kiel4中注意的问题
  2. 《深度工作》思维导图
  3. DPI/PPI与屏幕尺寸
  4. 找到了!Sketch导出PSD的方法!
  5. macbookpro和macbookair哪个好些?
  6. 从Le-Net到DenseNet到CliqueNet
  7. 赛效:WPS文档所选内容被锁定无法更改怎么解决
  8. 文本数据类型强调说明
  9. 【小彬学vue系列专栏】 002 | 一颗树的惆怅
  10. RNN和BPTT、LSTM