这篇文章不会给出具体实现和代码(因为我也还没有搞定),但是会对我所理解的换装系统进行一些分析,并给出方向。

一、什么是换装系统

RPG游戏中,更换不同的武器、装备,人物模型也会有相应的改变,这就是换装系统。实现换装系统,可以增加表现力,比如暗黑中换不同盔甲,人物看起来也会不一样,有的极品装备还会有光效环绕,这样刷装备才会更加有趣。

二、实现换装系统的方式

1、武器和外挂式组件(比如护肩,披风)的换装。

这个最简单也最基础,在手部或者肩部创建一个绑点,然后将物体挂接上去就行。这类物体大多数是刚体且没有动画,对应的绑点骨骼会驱动物体正确的运动。在Unity中绑点、骨骼都和Transform组件结合在了一起,所以操作起来非常直观。

2、替换模型

早期网游处理都非常简单,装备会影响到外观的就武器、头盔和盔甲。所以只需要对每一个盔甲准备一个模型,提换盔甲时更换对应的模型就可以了。这个也很简单,跟武器处理类似,不过就是基础模型和挂接模型的区别。

3、替换材质

美术在出资源时,会对同一模型设计不同的贴图。比如同一怪物可以是绿皮的,也可以是黄皮的,如果花纹再复杂些就可以是精英怪物。 对盔甲也是,同一模型替换不同贴图就可以达到不同装备的效果。

4、替换部件

这个是最麻烦的,它涉及到共享骨骼数据。骨骼动画简单说就是,骨骼驱动顶点(受权重值影响),顶点影响蒙皮。一般来说,3D模型和动画有三个核心数据,一个是模型数据,决定了显示的外观;一个是骨骼数据,这个是动画的基础,描述了骨骼之间的权重和关系;最后一个就是动画数据,描述了骨骼是如何运动的。不同模型是可以共享同一套骨骼以及同一套动画的。这个可以很大程度上节约资源,一个模型可能只有一两百K,但是一个动画动辄就几兆。

部件替换的先决条件是,被替换的物体跟原物体使用的是一套骨骼,并且具备相同的权重。制作时也要注意,比如盔甲和头部在动画运动时不能出现接缝。

火炬之光的部件很多都是放在一个虚拟模型上的,即看起来是一个人形,但是除了手套、盔甲、靴子、头盔,其他部位是没用的。游戏会根据一个配置文件决定某穿上一个装备时删除哪几个部件,添加哪几个部件。这么做的好处可能是制作和查阅时更加方便,可以更好的处理装备和身体的动画。

换装的实现很简单,无非就是删除原物体,添加新物体。但是为什么能换装,这个是我们首先需要理解的。 cocos2d-x能不能换装,则是我们需要研究的。

至少现在看来,cocos2d-x v3.2版本是无法实现部件替换的。因为它还不支持submesh,一个模型就是一个整体。 不过我看了看github上面最新的代码里面是支持submesh和绑点的。理论上是可以实现模型换装的。具体代码要研究下才能完成。

好吧,刚刚看了看最新的cocos2d-x,里面的3D模型功能已经比较完善了,而且有换装的demo,我说的几种方式都可以实现。不需要自己研究了。 如果动画骨骼复用也OK的话,那真是节约了时间了(不用考虑cocos2d-x是不是错了),可以多花些时间研究粒子系统了。也可以花时间看看能不能让cocos2d-x兼容OGRE的mesh格式。

原文地址:http://blog.csdn.net/langresser_king/article/details/39436417

cocos2d-x实现3D模型的换装系统的研究的更多相关文章

  1. Canvas实现贝赛尔曲线轨迹动画的示例代码

    这篇文章主要介绍了Canvas实现贝赛尔曲线轨迹动画的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. HTML5 直播疯狂点赞动画实现代码 附源码

    为了烘托直播间的氛围,直播相对于普通视频或者文本内容,点赞动作通常无限次,引导用户疯狂点赞,今天小编给大家分享HTML5 直播疯狂点赞动画实现代码 附源码,感兴趣的朋友一起看看吧

  3. CSS中实现动画效果-附案例

    这篇文章主要介绍了 CSS中实现动画效果并附上案例代码及实现效果,就是CSS动画样式处理,动画声明需要使用@keyframes name,后面的name是人为定义的动画名称,下面我们来看看文章的具体实现内容吧,需要的小伙伴可以参考一下

  4. 基于canvas的骨骼动画的示例代码

    这篇文章主要介绍了基于canvas的骨骼动画的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. html5如何在Canvas中实现自定义路径动画示例

    本篇文章主要介绍了html5如何在Canvas中实现自定义路径动画示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  6. 基于HTML5+Webkit实现树叶飘落动画

    本文给大家分享一段实例代码给大家介绍基于HTML5+Webkit实现树叶飘落动画效果,需要的朋友参考下吧

  7. 【HTML5】3D模型--百行代码实现旋转立体魔方实例

    本篇文章主要介绍【HTML5】3D模型--百行代码实现旋转立体魔方实例,具有一定的参考价值,有需要的可以了解一下。

  8. Html5页面内使用JSON动画的实现

    这篇文章主要介绍了Html5页面内使用JSON动画的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. html5实现图片转圈的动画效果——让页面动起来

    这篇文章主要介绍了html5实现图片转圈的动画效果——让页面动起来的相关资料,需要的朋友可以参考下

  10. 基于 HTML5 WebGL 实现的医疗物流系统

    物联网( IoT ),简单的理解就是物体之间通过互联网进行链接。这篇文章给大家介绍基于 HTML5 WebGL 实现的医疗物流系统,感兴趣的朋友跟随小编一起看看吧

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部