找回密码
 点一下
查看: 3333|回复: 12

于是发布很详细的模型拼接教程V1.2(页面版)希望大家喜欢

[复制链接]
发表于 2013-2-13 21:13:57 | 显示全部楼层 |阅读模式
本帖最后由 huipp 于 2013-2-13 21:15 编辑

终于发布了,希望大家会喜欢我的教程。本教程的定位就是让你一次不带任何疑问地学习一个知识点。建议大家把图片放大来观看。

模型拼接教程
By:huipp
序言
本教程是关于SC2中的“模型拼接”技术的。
有不少地图制作者希望自己的地图能够独具特色,为了让地图有一些吸引人的特色,利用“模型拼接”来制作有趣的单位是一个不错的选择,但是这种技术并不是那么容易掌握,因此,下面就来介绍“模型拼接”以及它的使用方法:
一般来说,“模型拼接”在地图中有两种用法:
1.      创造一个十分特别的的单位。
                    比如说这个:http://bbs.islga.org/read-htm-tid-492913.html
2.      为技能或单位添加特效。
                    比如说:在战网服务器上的《四方争霸2》中的神族武装狂热者的“灵能刀刃”天赋升级后,狂热者的刀上出现的光。
                    按照需要使用不同的用法,下面就来介绍如何使用“模型拼接”(侧重于用法1:创造一个十分特别的的单位)。
序章
我们本次的目的是:把恶火和自动炮塔拼接起来,并且添加武器,使恶火的武器能够正常地开火。如下链接:
首先我们来粗略了解一下整个制作步骤:
1.      建立拼接的模型(就是你要附加上去的模型)与部位运算(等一下会讲到)的联系。
2.      建立拼接的模型与主体(被附加的模型)的联系。
3.      建立炮塔(因为自动炮塔有炮塔)、武器、发射位置与拼接的模型的联系。
在开始之前我们先来简要介绍一下我们将要用到的Actor(动作者)类型:
                             1.“模型”类,也就是CActorModel类,用于创建我们拼接的模型。
                             2.“部位运算(局部偏移)”类,也就是CActorSiteOpLocalOffset类,用于把拼接的模型移动到我们想要的位置。
                             3.“部位”类,也就是CActorSite类,用于为拼接的模型创建武器发射点。
                             4.“炮塔”类,也就是CActorTurret,用于为拼接的模型创建炮塔。
                             5.“光束”类,也就是CActorBeamSimple类,用于创建修正光束(这个非常特殊,请先暂时记住这个概念,后面会讲到。)
既然了解完了,那么正式开始我们的使用方法详解:
章节1——创建一个附着模型
我们都知道,如果我们想创建一个拼接模型,肯定要创建一个新的模型来进行拼接(承接拼接模型的主体假设是现成的)。
我们首先要创建一个模型类,用来创建我们拼接的模型,我们把它命名为0模型,具体设置如下:
(注意:为了我们的编写方便,所有的名称前都加一个“0”,这样这个演算体在拖选框就会出现在最上面,省去了很多的时间。)
                               模型设置.png
注意动作者的“基于”这一项很重要,他直接决定整个教程的结果。
这个就不多说了,都是字面意思,唯一要提起的是“装饰物类别”一定要填“非装饰物”(如果你要选装饰物,系统就会自动赋予它至装饰物中,并且使其不可操纵)。
接着,我们来看一下这个对象里面到底有什么:
模型设置2.png

1.
“动作者托管:主体+”(即1所指的项):我们先把这个项展开。
主体设置.png
它的作用是设置当前动作者的主体(即被附着的模型),注意,这里指定的主体必须是“动作者(Actor)”而不是“模型(Model)”。
在本教程中,恶火+自动炮塔组合体的主体应该是恶火,因此,我们把左边对话框中的“主体”的类型改为“动作者”,内容(就是下拉框中的东西)改为“恶火”。
也许你还想知道该对话框里的其他选项的意思?先来看看“动作者”,它的作用是控制如何调用本动作者,是“创建”一个(“创建”选项)?还是“查找”一个现成的(“动作者查找”选项)?还是“见机行事”(“不明确”选项)?
其他的选项都是字面意思了,至于“作用域”,这也是一个挺复杂的概念,跳过它对学习编辑器没有太大的影响,大家可以参考头目曾经发过的一个回复(我忘了在哪里)。
也许你还会注意到有一个“动作者托管:主体部位运算+”的项,这也是挺重要的项,它控制着本模型相对于主体模型的相对位置。简单地说,就是控制附着模型平移到相对于主体的哪个位置,注意,这里只是平移,不负责旋转。我们打开看看里面有什么项:
模型设置3.png
在“表达式”里面,我们可以指定控制偏移的Actor(这些偏移是某些特定的Actor所控制的,也就是开头说过的“部位运算(局部偏移)”类),里面有很多ActorSE开发人员为了我们可以更快地调整附着模型的位置,已经为我们做了很多现成的“部位运算”Actor,所以我们只要简单地设置就行了,不必再创建一个新的“部位运算”Actor(相比起利用现成的“部位运算”Actor而言,新建一个“部位运算”Actor的准确性更强,新建一个“部位运算”Actor的内容将在附加章节中讲解)。经过调试,附着在“炮塔Z”上的效果最好,因此我们在表达式中填入“位置操作附着炮塔”。这个的意思是,把本模型平移到主体的炮塔附着点上,其他类似的“部位运算”Actor的含义也一样,只不过平移到了不同的附着点。(注意,一般来说,一个模型通常只有一个炮塔附着点(一般叫“炮塔Z”),如果所指定的附着点有多个,将会在符合要求的附着点上分别创建若干个模型)
2.“美术:模型”、“美术:比例”:
顾名思义,把模型设置为自动炮塔,再把比例(1就行)设置好即可。
3.“事件”
这个可没有2.那么简单,这个就是动作者中最核心的“事件”系统。在研究之前,请确定你对Acror的事件有一定的了解(一点点就行,没有也没关系),如果不太熟悉,就先看看这个:http://bbs.islga.org/read-htm-tid-42186.html
首先是“事件:宏+”,如果你没接触过编程,你是很难明白什么是“宏”的。
所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。
                                                                ——微软
在SE中,“宏”就相当于去引用一个“没有参数却有返回值的动作者”。就把它想象成一个助手,只要你给他发出“1”个指令,就能自动完成许多特定的工作。在编辑器中,宏的使用是靠“创建指定的动作者”来完成的,我们先来看看。
宏.png
在这里,只要你指定了一些动作者,当本动作者运行时,他们就会被创建,为你的模型做大量的工作(其工作步骤是:把他们(指定的动作者)中的的“事件:开启”中的内容复制到本动作者中去)。我们要在这里指定以下动作者:全局循环宏、死亡动画宏(都是系统自带的)。
设置完宏以后,打开在下面的“事件:开启+”(在“事件:宏+”下面),这个是非常重要的项,可以把它理解成“运行在动作者里的程序”,负责控制动作者。由于这是一个类似于“程序”的东西,所以我们要通过编写来设置、做出我们想要的结果。我们先打开这个项。
事件.png
我们看到了一些系统为我们生成的事件,但是对我们没有什么用处,因此先把它们删去。
然后,我们创建一些事件:(注意,这个是自动炮塔的事件,控制的是自动炮塔而不是恶火)
1.  信息类型:单位诞生,原名称:恶火,子名称:任意。
     动作:创建(如图所示)。
事件2.png
注意,如果 “创建”这个动作后面不填写任何内容,默认创建其自身。
解释:当地堡诞生时,创建本动作者(显示出攻城坦克的模型)
2.  信息类型:单位死亡,原名称:恶火,子名称:任意。
     动作:摧毁
注意,如果 “摧毁”这个动作后面不填写任何内容,默认摧毁其自身。
解释:当地堡死亡时,摧毁本动作者(消除自动炮塔的模型)
3.   信息类型:动作者创建(千万别写成“创建”),原名称:任意,子名称:任意。
     动作:动画分段开始:名称:Birth(需要自定义),开场:诞生,内容:站立,关闭中:死亡(其余没提到的一律按照默认)
     作用:让本动作者播放动画。
下面加几个复杂的事件。
4.  信息类型:武器开始,原名称:任意,子名称:附着开始(这什么翻译)。
     动作:动画分段开始:名称:Attack,开场:站立,内容:攻击,关闭中:无
     作用:让本动作者在攻击时播放攻击动画。
要记住这种语法。
5.  信息类型:武器停止,原名称:任意,子名称:附着停止。
     动作:动画分段停止播放:名称:Attack。
作用:让本动作者在停止攻击时停止播放攻击动画。
那么写成XML形式如下:
<On index="0" Terms="UnitBirth.Hellion" Send="Create"/>
        <On index="1" Terms="UnitDeath.Hellion" Send="Destroy"/>
        <On index="2" Terms="WeaponStart.*.AttackStart" Send="AnimBracketStart attck Stand Attack"/>
        <On Terms="WeaponStop.*.AttackStop" Send="AnimBracketStop attck"/>
        <On Terms="ActorCreation" Send="AnimBracketStartbirth Birth Stand Death"/>
4.“属性:继承”:
     关于继承的概念应该都明白(字面意思,而且都有讲解),但要讲讲“接受资源转移”和“已接受的资源”。
     “接受资源转移”是否接受某些“对象”(就是资源)进入到Actor中,“已接受的资源”就是控制哪些“对象”可以被修改 “接受资源转移”的内容。
     简单的来说,“继承选项”、“接受资源转移”和“已接受的资源”三者的概述为:
“继承选项”负责把指定的对象传向Actor。(在这里,“继承选项”仅仅是个搬运工,只负责搬运,不负责接受)
“接受资源转移”负责为Actor接受指定的对象
“已接受的资源”控制“接受资源转移”所指定的对象。
可综述为:“已接受的资源”控制“接受资源转移”去接受“继承选项”传来的对象。
     那么自动机炮的模型就成功的放置在了恶火的炮台位置了。现在,就可以到游戏里面去体验一下这个组合而成的单位了。
章节2——创建一个模型部位
如果你对章节1的成果进行了测试,你就会发现,攻击时的火焰仍是从恶火本身的炮塔射出的。为了让火焰可以正确地从自动炮塔的炮口中射出而不是恶火的炮口,我们必须创建一个模型部位,我们把它命名为“0部位”,具体设置如下图:
部位设置.png
     然后把里面的“托管:主体:主体”设为0模型(章节1的产物)。
     目的是让火焰的发射部位变成自动炮塔的炮口,要注意这里并没有指定任何一个“明确”的发射点,因此它“装载”的是一个附着点的“集合”
章节3——创建一个炮塔Actor
     注:在这里要分清“炮塔”和“炮塔Actor”的区别,“炮塔”属于“炮塔类”,“炮塔Actor”属于“Actor”类。
     前面已经提到,为了让附加模型能转起来,必须添加一个“炮塔”Actor,否则炮塔就不会转动,导致无法正常攻击。
     我们把新建的炮塔命名为“0炮塔”,具体设置如下:
炮塔设置.png
我们来看看里面的对象项:
炮塔设置2.png
1.“附着物”
     “附着物:横摇查询+”和“附着物:纵摇查询+”,这两个项是相对的,我们着重讲解“附着物:横摇查询+”(因为知道这个,另一个你就明白了)。
     “附着物:横摇查询+”是控制炮塔本体绕着哪一个附着点进行横向旋转的。注意,模型并不是炮塔本体,炮塔是模型的一部分,像攻城坦克上面那个会转的才是炮塔,我们打开看看这个项里面有什么。
炮塔设置3.png
“方法”是首选的附着点,可以通过直接指定附着点或是用附着方式进行设定。(附着方式相关http://bbs.islga.org/read-htm-tid-731522.html)我们的自动炮塔的炮塔使用 “炮塔Z”附着点作为炮塔旋转点,因此我们把“筛选类型”改为直接,并填上“炮塔Z”
“备用”是当“方法”找不到目标附着点或者是找到多个符合条件附着点时使用的备用附着点,一般填“被忽略”,注意,当你的“方法”中使用的是“附着方式”,最好设定好“备用”,因为有出错的可能性。
2.“事件”:
     注意,要想炮塔转起来,就必须在炮塔“可用”时,创建这个炮塔Actor,只有创建后,炮塔才转的起来。
     我们只要简短的一条事件就够了:
1.信息类型:炮塔可用,原名称:0炮塔(注意,这个炮塔我们将在后面创建,现在可以先不填,等到创建完那个炮塔后在填写),子名称:任意。
     动作:创建。
     注意,这里没有“摧毁”本动作者的必要,这个炮塔Actor会随着主体的消失自动销毁
     这样,“炮塔Actor”就设置好了。
章节4——创建一个数据炮塔
大家都知道,整个数据编辑器可以分为数据逻辑层和视觉表现层,上一章我们创建了视觉表现上的炮塔,这一章我们就来创建一个逻辑层面的炮塔与之对应。
我们切换到炮塔这一选项卡,来创建一个炮塔,我们把它命名为0炮塔:
炮塔设置1.png
注意,因为我们附加的是自动炮塔,因此我们就把“父级”这一项设置为自动炮塔,即继承自动炮塔的炮塔数据。
炮塔设置02.png
这里的各个项不在具体释义了。最后我们进入恶火这个单位的页面:
炮塔设置4.png
在恶火的武器设定中加入我们刚刚创建的炮塔,这一章的内容就基本结束了。
章节5——修改攻击动作Actor
    为了达到我们想要的视觉效果,我们必须修改控制恶火攻击效果的总控Actor的相关数据。
    控制恶火攻击效果的总控Actor名叫“恶火战车 攻击”,搜索并打开它,我们来看看里面的项:
攻击效果设置1.png
攻击效果设置2.png

1.“美术:光束”:
    顾名思义,这里控制的就是恶火攻击时的光束,直接填上所需的模型就行(注意,不是动作者),在本教程中,我们不必对此项进行修改。
    注意,如果这个项为空,有可能会导致一些不可预知的结果,哪怕是没有用到这个项,所以当出错时,你可以考虑一下问题是否在这里。如果你需要解决这个问题而不影响视觉效果,你可以尝试填上编辑器自带的“空白”模型文件(就是先前提到的“修正光束”)。
2.“战斗:发射部位”:
    顾名思义,这里控制的就是发射部位,直接填上我们所需的,即“0部位”
    如果此项为空,则默认为模型原点。
3.“战斗:发射附加装置查询”:
    还记得之前我提到的0部位里面装载的是什么吗?就是点的集合,那么,一大堆点我们要选哪个呢?这个项就起到了筛选的作用,里面填的就是筛选方式,详细的可以参考http://bbs.islga.org/read-htm-tid-731522.html
以上就是我们需要更改的关键项,关于其他的项,请查阅有关与此的资料,那么攻击效果的修改也基本完成了。
至此,你可以试试你创建的新单位了!
(教程完)
附加章节——创建一个部位运算
如果你并不想把炮塔放在“炮塔Z”的位置,也许你想高些或者是低些,那么怎么办呢?本章就指引你创建一个部位运算(局部偏移)
首先,我们来创建一个部位运算(局部偏移)动作者,具体设置如下图:
部位运算(局部偏移)设置1.png
我们来看看里面的项:
部位运算(局部偏移)设置2.png
1.“演算体:局部偏移”
    这是唯一需要讲解的,局部偏移就相当于平移,其坐标系的原点就是主体的原点,修改三轴平移的幅度,直到适合位置。在本教程中,建议用图中所示的数值。

那么,只要把“0模型”中的“动作者托管:主体部位运算+”里填入本动作者,就大功告成了。
(附加章节完)

评分

参与人数 1威望 +5 收起 理由
oneonestar + 5 原创内容

查看全部评分

发表于 2013-2-13 21:15:22 | 显示全部楼层
呵呵,终于出来了,小彬沙发支持。
回复

使用道具 举报

发表于 2013-2-13 22:04:54 | 显示全部楼层
非常细致的教程,支持!
回复

使用道具 举报

发表于 2013-2-13 22:09:21 | 显示全部楼层
非常细致~~
回复

使用道具 举报

发表于 2013-2-13 22:19:41 | 显示全部楼层
造福广大没有office的朋友啊~
虽然有在线word
回复

使用道具 举报

发表于 2013-2-13 22:51:49 | 显示全部楼层
好深奥,不是很懂,回头再详细研究。
回复

使用道具 举报

 楼主| 发表于 2013-2-14 10:11:56 | 显示全部楼层
本人的教程第一次被加亮啊!好兴奋!
话说这个教程是我从Word直接拷贝来的,不知道为什么排版忽然变了。
回复

使用道具 举报

发表于 2013-2-14 15:15:12 来自手机 | 显示全部楼层
写的很详细啊。增加上攻击动画那段是后补充的那个吗?

点评

只是增加了数据炮塔这一章  详情 回复 发表于 2013-2-14 21:31
回复

使用道具 举报

 楼主| 发表于 2013-2-14 21:31:37 | 显示全部楼层
空人 发表于 2013-2-14 15:15
写的很详细啊。增加上攻击动画那段是后补充的那个吗?

只是增加了数据炮塔这一章
回复

使用道具 举报

发表于 2013-2-16 12:41:32 来自手机 | 显示全部楼层
忽然想起一个以前的问题:之前看小彬的模型拼接笔记好像提到一件事
[fold=引用原文]删除死亡模型,貌似这个模型被创建后就会永久保留在地图上。另建一个actor来引用这个死亡模型,单位死亡时创建,播放完死亡动画后删除,即可避免模型无法消失的问题。怀疑这是个bug,期待高手的解释。[/fold]
这个问题的出现是因为没有引用那两个宏(全局循环宏、死亡动画宏)吗?

点评

那个运兵车是有死亡动画宏的,否则就不会播放死亡动画了。到目前不清楚为什么会出现死亡动画无法删除。不过这个问题头目的谋篇文章已经说过解决方法了,就是在单位死亡演算体中指定自毁时间,如果不希望影响其他的单  详情 回复 发表于 2013-2-19 00:25
嗯嗯,应该是了!  详情 回复 发表于 2013-2-16 17:13
回复

使用道具 举报

 楼主| 发表于 2013-2-16 17:13:28 | 显示全部楼层
空人 发表于 2013-2-16 12:41
忽然想起一个以前的问题:之前看小彬的模型拼接笔记好像提到一件事
[fold=引用原文]删除死亡模型,貌似这个 ...

嗯嗯,应该是了!

点评

运兵车默认就有死亡动画宏哦。  发表于 2013-2-19 00:26
回复

使用道具 举报

发表于 2013-2-16 22:05:31 | 显示全部楼层
mark
回复

使用道具 举报

发表于 2013-2-19 00:25:46 | 显示全部楼层
空人 发表于 2013-2-16 12:41
忽然想起一个以前的问题:之前看小彬的模型拼接笔记好像提到一件事
[fold=引用原文]删除死亡模型,貌似这个 ...

那个运兵车是有死亡动画宏的,否则就不会播放死亡动画了。到目前不清楚为什么会出现死亡动画无法删除。不过这个问题头目的谋篇文章已经说过解决方法了,就是在单位死亡演算体中指定自毁时间,如果不希望影响其他的单位可以单独使用一个死亡演算体,或者干脆像小彬一样自定义一个演算体也行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 22:31 , Processed in 0.470789 second(s), 34 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表