[1]    通过建模软件(如3D Max)对游戏场景中的静态对象和动态角色进行建模。

游戏的牌桌和右下角的工作室标志使用了3ds Max建模

牌桌:

标志:

[2]    基于Phong光照模型实现场景的实时光照。

游戏中使用了两个光源:

一个静止的无向光源,放置于与摄像机相同的位置;

一个运动的有向聚光灯,会追踪鼠标的运动,效果如下:

可以看出,截图中鼠标经过的部分(鼠标未在截图中显示)物体被照亮。

代码方面,使用osg::Light和osg::LightSource来指定光源,聚光灯的部分代码如下:

light2_obj = new osg::Light;
light2_obj->setLightNum( 1 );
light2_obj->setAmbient(osg::Vec4(0.5,0.5,0.5,1.0));
light2_obj->setDiffuse( osg::Vec4(1.0,1.0,1.0,1.0) );
light2_obj->setSpecular( osg::Vec4(1.0,1.0,1.0,1.0) );
light2_obj->setPosition( osg::Vec4(0.0f, 0.0f, 0.0f, 1.0f) );
light2_obj->setSpotExponent(1.0);
light2_obj->setSpotCutoff(45.0);
light2_obj->setDirection(osg::Vec3(0.0,10.0,0.0));osg::ref_ptr<osg::LightSource> lightSource2 = new osg::LightSource;
lightSource2->setLight( light2_obj );
light2 = new osg::PositionAttitudeTransform;
light2->setPosition(osg::Vec3(0.0,0.0,0.0));
light2->addChild( lightSource2.get() );

[3]    利用基本纹理映射技术增强游戏场景的真实感。

从上面的截图中可以看出,游戏中的物体基本上都是使用了纹理映射的。

另外,我还为每个物体指定了材质信息,以实现一些特殊的光照效果,比如下面的自发光效果:(图中发红色的卡牌)

[4]    基于骨骼动画或者关键帧动画技术实现角色动画。

采用了有限动画机实现的关键帧动画。

例如,在玩家出牌的过程中,动画机指定了移动路径上的三个关键点:

卡牌被选中前自身所在的点、被选中后放大的点(15.5,2.2,0.5)、选中后将牌打出时卡牌运动的路径上的两个关键点(视卡牌类型而不同)。

当玩家进行了对应的输入操作后,卡牌会自动沿着指定的路径运动至目的地

示例过程如下:

1.选中卡牌

2.再次点击选中的卡牌,进行出牌动作

3.牌被打出

[5]    碰撞检测。

卡牌在被打出时,由于它的目的地所在行(黄框所示)可能会有之前先到的牌(蓝圈所示)阻挡其运动路径,每张牌在被打出时需要检测其是否有撞上前面的牌,如果撞上了则停下,没撞上则继续移动直至撞上前一张牌。上图卡牌的运动结果如下:

[6]    凸凹纹理映射。

游戏中的牌桌使用了凹凸纹理技术,可以看出比较明显的效果。

有凹凸纹理的:

只有漫反射纹理的:

法线贴图:(使用Nvidia的Photoshop插件绘制)

使用osgFX::BumpMapping实现该效果。

转载于:https://www.cnblogs.com/yuki8819/p/5601274.html

昆特牌Online——客户端用到的一些技术相关推荐

  1. 昆特牌Online——客户端设计

    OpenSceneGraph介绍: OpenSceneGraph(以下简称OSG)是一个开源的三维引擎,被广泛的应用在可视化仿真.游戏.虚拟现实.科学计算.三维重建.地理信息.太空探索.石油矿产等领域 ...

  2. 3D图形和网络编程的一次实践——昆特牌Online

    这是个游戏,曾经打算用这个来做团队项目的题目,但是后来大家选择了别的题目,所以这个项目并没有成为我们组的团队项目.后来我还是自己把这个游戏做完了,虽然并不是完整版. 想法来自15年波兰CDPR公司发售 ...

  3. 上古卷轴3晨风职业_巫师3:上古卷轴5老玩家,入手巫师3,体验昆特牌版“实验室”...

    今天小编入手了,期待已久的<巫师3>,而作为一个<上古卷轴5>的"老油条",奇趣君下面说一下,一个老滚5的"老油条"玩<巫师3&g ...

  4. Linux系统使用steamplay完美运行巫师之昆特牌:王权的陨落(Thronebreaker:The Witcher Tales)

    问题描述 使用steamplay运行巫师之昆特牌:王权的陨落,打开游戏会出现黑屏,无法进行游戏的情况. 注意: 此问题不仅在linux上存在,部分Windows系统也会出现此问题,是由于游戏依赖了Me ...

  5. 巫师之昆特牌手游服务器中断连接,巫师之昆特牌10月11日网络维护 掉线处理办法...

    巫师之昆特牌10月11日网络维护 掉线处理办法 今早昆特牌网络很不稳定,6:00-9:00很多玩家掉线了,这是因为突然的网络维护,目前情况已好转,但如果你依旧掉线,请参照下面日志! 亲爱的玩家: 为了 ...

  6. ACM_题目这么难,来局愉快的昆特牌吧

    题目这么难,来局愉快的昆特牌吧 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小Z打比赛,然而比赛太难了,他坐在电脑面前被题淹没 ...

  7. 【JZOJ A组】昆特牌

    Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总部参观.但没想到你刚一到就遇到了麻烦.昆特牌的数据库发生了故障.原本昆特牌中有 k种卡牌和n 种阵营,为了平衡,每个阵营拥有 ...

  8. JZOJ5945. 【NOIP2018模拟11.02】昆特牌(gwent)

    Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总部参观.但没想到你刚一到就遇到了麻烦.昆特牌的数据库发生了故障.原本昆特牌中有 k种卡牌和n 种阵营,为了平衡,每个阵营拥有 ...

  9. JZOJ-senior-5945. 【NOIP2018模拟11.02】昆特牌(gwent)

    Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总 ...

最新文章

  1. 李飞飞、邓中翰当选美国国家工程院院士
  2. 解决Uncaught SyntaxError: Unexpected token var报错问题
  3. salt常用命令(一)
  4. python集合属性方法运算_Python基础__字典、集合、运算符
  5. 太阳能发电产业有望大发展
  6. 【文章】论文写作知识积累
  7. 赤峰市职称计算机,关注丨赤峰今年评职称最新政策全在这……
  8. 【常见Web应用安全问题】
  9. SCUT - 337 - 岩殿居蟹 - 线段树 - 树状数组
  10. 【JDK1.8】Java HashMap实现细节
  11. python中的文件处理_python学习——python中的文件处理
  12. 通过可视化来了解你的Spark应用程序
  13. 如何证明CPU的乱序执行(Out-of-order Execution)?
  14. linux时间和win10差8小时,[转载]Ubuntu16.04与Win10时间差8个小时问题解决方案
  15. CART 分类决策树
  16. python散点图获取边界_获取离散点的边界点
  17. 微信小程序——时间轴的实现
  18. gis连接表格到数据库失败_arcgis连接到数据库失败,常规功能故障
  19. Alpha版本冲刺(五)
  20. 互联网快讯:百度发布青春版“Wonder”App,;极米2021双十二圆满收官;华为笔记本新品将发布

热门文章

  1. python怎么保存为py文件_将python保存到运行的py文件目录中创建的文件夹中
  2. vue-element日期框点击不显示,不刷新
  3. 2018 “百度之星”程序设计大赛 - 初赛(A)P1002度度熊学队列(双端队列模拟,STL)
  4. java 语言转 c 命令_求助大神!!!JAVA转换成C语言
  5. java 数组 源码_Java数组转List的三种方式及对比
  6. python socket客户端_python 使用socket模拟tcp客户端和tcp服务器端
  7. ffmpeg前景_5G时代音视频开发前景怎么样?音视频开发需要掌握哪些技术?
  8. JavaScript的Math对象使用(1)
  9. PAT乙级题解目录——更新ing
  10. CodeForces - 722C Destroying Array (并查集/集合的插入和删除)