Silverlight C# 游戏开发:资源的处理,图像算法(一)

简介:

这是一篇暴力的内容,所讲之主题虽然可以为Silverlight游戏开发解决一些问题,但是同样也会带来新的其他问题,于是,有意思的事情出现了,到底该怎么选择呢?还是依据你的项目进行选取吧,本文纯粹使用代码方式编程,请准备好Visual Studio,不需要Expression。

  游戏开发在开始的时候一般不会注意一个重要的细节,就是“特效”,角色也好,场景也罢,可能都不会是最占用磁盘空间的资源,特效资源,包含了技能释放的、场景中的,甚至升级也得显示光环的,更何况有那种收费的全屏“求交往”特效,如此之多如此之大的资源包绝对够咱们头疼的了,那么,今天提供一个算法来为咱们的Silverlight特效资源大瘦身,今次我们只讨论有透明的那种特效,没有透明的特效直接使用关键色镂空即可。

  首先表明特效一定是图片动画序列,以目前的技术来说使用XAML做特效不太实际,一方面特效太过复杂,使用矢量来做成本很不划算,另一方面所产出特效的绘制工作效率不及直接用特效工具来做的快又好看(想象一下每个特效20多帧的恐怖状况吧),最后一个方面,这方面的人才几乎完全没有。

  那么,我们一起看看一个特效大概会有多大:

 

  这个规格是一个简单的爆破特效,由于使用了半透明,所以只能使用PNG的方式来做,不能用关键色镂空,一共20张512*512图片787KB,接近1MB,那么好,打个包还有752KB,很显然,无论是动态载入还是跟随发布包一起,都是一个及其占用磁盘空间的做法,另外一个角度上就是带宽和内存的占用,如果说可以将这个特效减少到只有100多KB,那就非常爽了。

  使用JPG来代替PNG就能直接达到这个瘦身效果,同等的特效只有163KB。

 

  可是问题来了,jpg毕竟是jpg,没有png的半透明效果,我们分析一下要想达到类似的效果如何进行处理,参看下图:

 

 

 

  分析一下,可以得到一个简单的结论,就是颜色越黑,越是我们不需要的,而颜色越亮就越有保存的价值,那么以此可以推导,是否可以通过颜色的色值来看这个颜色的保存价值?答案是可以的,在图像存储中(尤其是最近几年)颜色以32位方式处理为主,所表示的颜色是8个F,FF FF FF FF,分别代表了ARGB——Alpha、Red、Green、Blue,A是透明度,RGB组成了16777215种颜色,而色值越大颜色就越接近白色,色值越小就越接近黑色,那么,我们是否可以一个平均方法来取得色彩到底是接近于黑还是白?算法如下:RGB三色相加平均数就是A的数值,这样,黑色将被完全去掉,但不会影响那些接近于黑色的颜色,这样的颜色因为接近于黑,所以透明度也是很高,而我们的特效部分则是以亮光为主,透明度自然就很低了。

  按照我们的想法实现的效果如下:

 

 

 

  
 

  请直接参看Silverlight中的效果,如果运行源代码请在载入完成后10秒后点击“开始处理”,这是非常暴力的处理过程,所以请做好心里准备^0^

 

源代码在这里下载,在这个程序里,可以研究如何载入一个JPG图片的列表,然后将其处理成为程序内可用的特效,这个应用对于特效来说至关重要,它能很好节省图片空间,但是问题也很明显,处理过程是相当的慢,我使用了一个行为队列,才不至于直接“卡”在程序运行过程当中,如果你觉得更加暴力一些,可以一次处理完,但将是一个非常消耗系统的过程,如果在游戏开发中应用,还需要改进算法,以及处理流程,比如预先加载和处理,或者分散计算,但无论如何都是一个非常不爽的过程,最好对于算法可以修正的更加优美,下面的选取部分就是关键代码,算法上还需要从这上面入手了:)

 

这一次,我们只是仅仅探讨了一种可以在游戏当中对于特效处理的应用方法,高手应该看到处理的效率,我这是纯粹的暴力解决方案,可能还有更加巧妙的方式来达到我们期望的效果,但是以我的水平还未寻得好路子,要是有什么好的方法或者算法,大家互相交流一下,下一次我们一起研究一些图片处理上的其他算法,仍然很!暴!力!



本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712471

相关文章
|
2月前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
27天前
|
存储 缓存 算法
优化轮询算法以提高资源分配的效率
【10月更文挑战第13天】通过以上这些优化措施,可以在一定程度上提高轮询算法的资源分配效率,使其更好地适应不同的应用场景和需求。但需要注意的是,优化策略的选择和实施需要根据具体情况进行详细的分析和评估,以确保优化效果的最大化。
|
11天前
|
算法 C#
C#常见的四种经典查找算法
C#常见的四种经典查找算法
|
11天前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
1月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
1月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
1月前
|
机器学习/深度学习 人工智能 算法
【MM2024】面向 StableDiffusion 的多目标图像编辑算法 VICTORIA
阿里云人工智能平台 PAI 团队与华南理工大学合作在国际多媒体顶级会议 ACM MM2024 上发表 VICTORIA 算法,这是一种面向 StableDiffusion 的多目标图像编辑算法。VICTORIA 通过文本依存关系来修正图像编辑过程中的交叉注意力图,从而确保关系对象的一致性,支持用户通过修改描述性提示一次性编辑多个目标。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
使用C# 实现期望最大化算法
使用C# 实现期望最大化算法
47 0
|
1月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
下一篇
无影云桌面