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

相关文章
|
20天前
|
算法 计算机视觉
图像处理之积分图应用四(基于局部均值的图像二值化算法)
图像处理之积分图应用四(基于局部均值的图像二值化算法)
89 0
|
3天前
|
算法 计算机视觉
基于Chan-Vese算法的图像边缘提取matlab仿真
**算法预览展示了4幅图像,从边缘检测到最终分割,体现了在matlab2022a中应用的Chan-Vese水平集迭代过程。核心代码段用于更新水平集并显示迭代效果,最后生成分割结果及误差曲线。Chan-Vese模型(2001)是图像分割的经典方法,通过最小化能量函数自动检测平滑区域和清晰边界的图像分割,适用于复杂环境,广泛应用于医学影像和机器视觉。**
|
10天前
|
机器学习/深度学习 人工智能 算法
【CVPR2024】面向StableDiffusion的编辑算法FreePromptEditing,提升图像编辑效果
近日,阿里云人工智能平台PAI与华南理工大学贾奎教授团队合作在深度学习顶级会议 CVPR2024 上发表 FPE(Free-Prompt-Editing) 算法,这是一种面向StableDiffusion的图像编辑算法。在这篇论文中,StableDiffusion可用于实现图像编辑的本质被挖掘,解释证明了基于StableDiffusion编辑的算法本质,并基于此设计了新的图像编辑算法,大幅度提升了图像编辑的效率。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
【CVPR2024】阿里云人工智能平台PAI图像编辑算法论文入选CVPR2024
近期,阿里云人工智能平台PAI发表的图像编辑算法论文在CVPR-2024上正式亮相发表。论文成果是阿里云与华南理工大学贾奎教授领衔的团队共同研发。此次入选标志着阿里云人工智能平台PAI自主研发的图像编辑算法达到了先进水平,赢得了国际学术界的认可。在阿里云人工智能平台PAI算法团队和华南理工大学的老师学生们一同的坚持和热情下,将阿里云在图像生成与编辑领域的先进理念得以通过学术论文和会议的形式,向业界传递和展现。
|
17天前
|
存储 编解码 算法
C#.NET逃逸时间算法生成分形图像的毕业设计完成!晒晒功能
该文介绍了一个使用C#.NET Visual Studio 2008开发的程序,包含错误修复的Julia、Mandelbrot和优化过的Newton三种算法,生成色彩丰富的分形图像。作者改进了原始算法的效率,将内层循环的画点操作移至外部,提升性能。程序提供五种图形模式,支持放大缩小及颜色更新,并允许用户自定义画布大小以调整精度。还具备保存为高质JPG的功能。附有四张示例图片展示生成的分形效果。
|
18天前
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
18天前
|
机器学习/深度学习 算法 TensorFlow
算法金 | 只需十四步:从零开始掌握Python机器学习(附资源)
```markdown ## 摘要 全网同名「算法金」的作者分享了一篇针对Python机器学习入门的教程。教程旨在帮助零基础学习者掌握Python和机器学习,利用免费资源成为实践者。内容分为基础篇和进阶篇,覆盖Python基础、机器学习概念、数据预处理、科学计算库(如NumPy、Pandas和Matplotlib)以及深度学习(TensorFlow、Keras)。此外,还包括进阶算法如SVM、随机森林和神经网络。教程还强调了实践和理解最新趋势的重要性。
22 0
算法金 | 只需十四步:从零开始掌握Python机器学习(附资源)
|
7天前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——MeanShift算法和图像矢量量化
机器学习之聚类——MeanShift算法和图像矢量量化
8 0
|
14天前
|
编解码 算法 PyTorch
超好用!图像去雾算法C2PNet介绍与使用指南
超好用!图像去雾算法C2PNet介绍与使用指南
|
20天前
|
算法 计算机视觉
图像处理之基于泛红算法的二值图像内部区域填充
图像处理之基于泛红算法的二值图像内部区域填充
22 0

热门文章

最新文章