SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],perlinNoise 可用来模拟一些自然现象与风景,像木材纹理、云彩、山脉、水波等等简单的数字随机杂点函数通常生成具有粗糙的对比度点的图像。 这种粗糙的对比度在自然界中通常是找不到的。  Perlin  杂点算法混合了在不同的详细级别上进行操作的多个杂点函数。 此算法在相邻的像素值间产生较小的变化。
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
混合模式发生在两个图像之间,它是将 显示对象 的颜色信息与 背景 的颜色信息 进行混合生成混合后的 目的图像 , 显示对象 会与 背景 在相同位置进行像素级的混合计 算,以便为 目的图像 在相同位置生成处理后的像素信息 任何显示对象都具有 blendMode 属性,因此,任何显示对像之间都可以进行像素 级混合 每个像素都由三种原色(红、绿、蓝)组成,介于 0x00~0xFF 之间(换算成 10 进 制为 0~255 )
 
ColorTransform:  调整显示对象的颜色值。 可以将颜色调整或 颜色转换 应用于所有四种通道:红色、绿色、蓝色和  Alpha  透明度 计算公式: newRed=(_oldRed*redMultiplier)+redOffset newGreen=(_oldGreen*greenMultiplier)+greenOffset newBlue=(_oldBlued*blueMultiplier)+blueOffset newAlpha=(_oldAlpha*alphaMultiplier)+alphaOffset
 
经常用于特效的颜色运算中,通常运算符有: >> ( 位向右移) 或者 <<( 位向左移) 或者 | 或者 & 例:十六进制红色: var _color:uint=0xff0000; 取红色的数值为: var _red:uint=_color>>16 0xff0000 二进制: 111111110000000000000000 去掉 11111111 1111 0001 & 按位 与 0001 1011 0001 | 按位  OR 1011
var _red:uint=200; var _green:uint=100; var _blue:uint=50; var _color:uint=_red<<16|_green<<8|_blue; trace(_color.toString(16));  // c86432 var _color:uint=0xffa78a; var _red:uint=_color>>16; var _green:uint=_color>>8&0xff; var _blue:uint=_color&0xff; trace(_red);//255 trace(_green);//167 trace(_blue);//138
append  矩阵相乘 appendRotation identity  单位或者标准化 transformVectors appendTranslation 透视  :在  2D  平面上将平行线表示成聚合于一个消失点,从而获得深度和距离的视觉效果  投影 :为多维对象生成  2D  图像;  3D  投影将  3D  点映射到  2D  平面  旋转 :通过按圆周运动的方向移动对象内的每个点来更改对象的方向(通常也会更改其位置)  转换 :通过平移、旋转、缩放、倾斜或这些操作的组合来更改  3D  点或点集  平移 :通过将对象内的每个点往同一方向移动相同的距离来更改对象的位置
旋转方向( appendRotation ): X 大于零 ( 向里) Y 大于零 ( 向里) 反之 反之 Z 大于零 ( 向里) 反之 注意: idensity 在每次变换之前需写
可用作管理 3 维空间点的数据结构 如果将某个显示对象的 Z 属性显示设置为数值 ,则该对象会 自动创建一个 3D 转换矩阵  。您可以通过更改此矩阵来 修改该对象的 3D 转换 设置  笛卡儿坐标系 ,[object Object],[object Object],[object Object],Z X Y X Y Z W
(0,0,-focalLength) 投影平面 stage.stageWidth/2( 舞台宽一半 ) focalLength( 焦距 ) fieldOfView( 视野 ) focus( 焦点 ) _pp. focalLength =( stage.stageWidth /2)/( Math.PI /180*_pp. fieldOfView *0.5); ,[object Object],[object Object],focalLength  属性表示视点原点  (0,0,0)  与显示点在  z  轴上的位置 之间的距离
卷积将输入图像的像素与相邻的像素合并 以生成图像, 可用于位图对象以及显示 对象应用广泛的变形,可实现的效果包括:模糊、边缘检测、锐化、浮雕、斜角等等 P N N N N N N N N 主要是在 P 周围取 N*N 区域做处理,通常 N 取 3 、 5 、 7 ,即为 3*3 、 5*5 、 7*7 , N 越小,效果越不明显,但会减轻 CPU 计算量 dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1.... src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias  ConvolutionFilter (matrixX: Number  = 0, matrixY: Number  = 0, matrix: Array  = null, divisor: Number  = 1.0, bias: Number  = 0.0, preserveAlpha: Boolean  = true, clamp: Boolean  = true, color: uint  = 0, alpha: Number  = 0.0) 例 : _convoFilter = new ConvolutionFilter(3, 3, [1, 1,1, 1, 1, 1, 1, 1, 1], 9);// 模糊:
常用滤镜参数: http://www.adobe.com/devnet/flash/articles/matrix_transformations_05.html 效  果:锐化 矩阵特点:中心上下左右值为负,且相等 , 且 divisor 为矩阵值和 效  果:模糊 矩阵特点:矩阵值相等,且 divisor 为矩阵值 和 效  果:浮雕 矩阵特点: 矩阵 对角线值取相反数,和为零 , 且 divisor 为 1
Sobel 算子 边缘检测 边缘就是像素值有阶跃变化的像素集合 , 边缘检测的算法很多,有著名的 Sobel 、 Roberts 、 Prewitt 、 Laplacian 算法 边缘检测实例: http://www.gskinner.com/blog/archives/2005/08/flash_8_webcam.html
redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4]  greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9]  blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14] alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]  该类主要更改图像的 RGB 与 Alpha 值 , 可对图像饱和度、色相、亮度、对比度 进行更改 .
更改饱和度算法 计算机图形颜色亮度常量 private static var _nRed : Number = 0.3086; private static var _nGreen : Number = 0.6094; private static var _nBlue : Number = 0.0820; var srcRa : Number = (1 - nLevel) * _nRed + nLevel; var srcGa : Number = (1 - nLevel) * _nGreen; var srcBa : Number = (1 - nLevel) * _nBlue; var srcRb : Number = (1 - nLevel) * _nRed; var srcGb : Number = (1 - nLevel) * _nGreen + nLevel; var srcBb : Number = (1 - nLevel) * _nBlue; var srcRc : Number = (1 - nLevel) * _nRed; var srcGc : Number = (1 - nLevel) * _nGreen; var srcBc : Number = (1 - nLevel) * _nBlue + nLevel; var Saturation_Matrix : Array = [srcRa, srcGa, srcBa, 0, 0, srcRb, srcGb, srcBb, 0, 0, srcRc, srcGc, srcBc, 0, 0, 0, 0, 0, 1, 0]; this.filters = [new ColorMatrixFilter (Saturation_Matrix)];
更改对比度算法 var Scale : Number = nLevel * 0.06+1; var Offset : Number = nLevel*-3.81; var Contrast_Matrix : Array = [Scale,  0,  0,  0,  Offset,  0,  Scale,  0,  0,  Offset,   0,  0,  Scale,  0,  Offset,    0,  0,  0,  1,  0];
此滤镜类经常用来开发水波、放大镜、哈哈镜效果,而且效果非常真实,主要因为通过计算可以对位图进行扭曲。 此滤镜使用了如下公式: dstPixel[x, y] = srcPixel[x + ((componentX(x, y) - 128) * scaleX) / 256, y + ((componentY(x, y) - 128) *scaleY) / 256)  DisplacementMapFilter( mapBitmap:BitmapData, mapPoint:Point, componentX:Number, componentY:Number, scaleX:Number, scaleY:Number , [mode:String], [color:Number], [alpha:Number]) _filter = new DisplacementMapFilter(_buffer1, new Point(), BitmapDataChannel.BLUE, BitmapDataChannel.BLUE, 10, 50, DisplacementMapFilterMode.WRAP); 例:
注: componentX 与 componentY 代表颜色通道值 , Red 、 Green 、 Blue 、 Alpha 分别代表 1 、 2 、 4 、 8 , 如果看到复数 13 为 1+4+8=13 即为 Red 、 Blue 、 Alpha 三个通道 scaleX 与 scaleY 即 代表像素偏移比率 ,假如在被参考的  BitmapData  中  scaleX == 10, componentX(10, 10) == 1 然后这  BitmapData  在  (10, 10)  的  Red   值是  256 则使用这個  DisplacementMapFilter 类 它的  (10, 10)  像素就会被往右移   ((256 - 128)/128)*10 == 10  像素
 
 
flintParticles Site:  http://www.flintParticles.org 特点: ,[object Object],[object Object],[object Object]
flintParticles  结构分析 此类库结构分为三个包 开发分析:见 word
purseParticles (脉冲粒子系统)  Site:  http://www.rogue-development.com/pulseParticles.html explorer:  http://rogue-development.com/pulse/explorer /# 图 ,[object Object],[object Object],[object Object]
http://wonderfl.net/c/bcD4/ 原理: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],每个  octave  函数的频率都是其前面一个  octave  函数频率的两倍。  Perlin  杂点被描述为“杂点的碎片总和”,因为它将多组杂点数据与不同级别的细节组合在一起
http://wonderfl.net/c/hb3M/ http://wonderfl.net/c/5ayj/
 
粒子系统就像一段能够产生粒子生命的程序。这段程序能够影响粒子的运动,粒子的属性,测试粒子与场景中其它对象的相互作用,并且可以定义每个时间点上粒子的状态和行为。粒子生命周期用来描述粒子从产生到消亡之间产生的变化,期间粒子所受的外力和各种触发器可以决定粒子在下一个时刻的状态,通过观察粒子的生命周期更有利于我们理解粒子的工作方式
( 1 )粒子基于特殊的设置来创建,但是它不得不由某些事件来引导和指挥。    ( 2 )动作被添加到粒子的某个位置,使粒子加速,向目标方向运动。这一系列动作是由力来控制的。    ( 3 )粒子将一直保持某一状态,直到一个事件产生。    ( 4 )事件测试能改变粒子的当前状态,它们像是一个触发器。当一个事件产生时,一个决定就不得不作出,粒子就可以进入一个新的状态。    ( 5 )一个新的状态可以改变粒子的某些属性,比如:速度、形状、尺寸、旋转,或者使旧粒子产生新的粒子。    ( 6 )这种力可以是各种力,比如风力、重力。    ( 7 )一个粒子可以被测试与其他对象撞击,或者被约束在某个对象上运动。    ( 8 )粒子的生命周期是另一种属性,它可以被测试,也可以被用来改变粒子状态,或者在若干帧后使粒子消失。    ( 9 )粒子还可以被指定任何一种材质。
 
Foundation ActionScript 3.0 Image Effects  http://www.riabook.cn/en_book/Foundation-ActionScript-3-Image-Effects.htm ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],部分目录赏析 download
Papervision3D Essentials 特效部分目录赏析 ,[object Object],[object Object],http://www.riabook.cn/en_book/papervision3d-essentials.htm download
 
 

Mais conteúdo relacionado

Mais procurados

05.第五章用Matlab计算积分
05.第五章用Matlab计算积分05.第五章用Matlab计算积分
05.第五章用Matlab计算积分Xin Zheng
 
02.第二章用Matlab求导
02.第二章用Matlab求导02.第二章用Matlab求导
02.第二章用Matlab求导Xin Zheng
 
10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线Xin Zheng
 
01.第一章用Matlab求极限
01.第一章用Matlab求极限01.第一章用Matlab求极限
01.第一章用Matlab求极限Xin Zheng
 
12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分Xin Zheng
 
07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程Xin Zheng
 
文本序列标注模型:从Crf到rnn
文本序列标注模型:从Crf到rnn文本序列标注模型:从Crf到rnn
文本序列标注模型:从Crf到rnnYunchao He
 
Num py basic(2) - v01
Num py   basic(2) - v01Num py   basic(2) - v01
Num py basic(2) - v01ssuser5e7722
 
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分Xin Zheng
 
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分Xin Zheng
 
第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件p26chan
 

Mais procurados (14)

Python9-3
Python9-3Python9-3
Python9-3
 
05.第五章用Matlab计算积分
05.第五章用Matlab计算积分05.第五章用Matlab计算积分
05.第五章用Matlab计算积分
 
Hadoop
  Hadoop  Hadoop
Hadoop
 
02.第二章用Matlab求导
02.第二章用Matlab求导02.第二章用Matlab求导
02.第二章用Matlab求导
 
10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线
 
01.第一章用Matlab求极限
01.第一章用Matlab求极限01.第一章用Matlab求极限
01.第一章用Matlab求极限
 
12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分
 
07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程
 
文本序列标注模型:从Crf到rnn
文本序列标注模型:从Crf到rnn文本序列标注模型:从Crf到rnn
文本序列标注模型:从Crf到rnn
 
Ch11 教學
Ch11 教學Ch11 教學
Ch11 教學
 
Num py basic(2) - v01
Num py   basic(2) - v01Num py   basic(2) - v01
Num py basic(2) - v01
 
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
 
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分
 
第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件
 

Destaque

Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬FLASH开发者交流会
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)FLASH开发者交流会
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉FLASH开发者交流会
 

Destaque (6)

Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)
 
Andeo
AndeoAndeo
Andeo
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
Web base 吴志华
Web base 吴志华Web base 吴志华
Web base 吴志华
 
松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉
 

Semelhante a 浅析Flash特效开发 陈勇

Multi Camera Prmandoc
Multi Camera PrmandocMulti Camera Prmandoc
Multi Camera Prmandocguestb02e87
 
一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法Lixun Peng
 
第1章 Matlab操作基础
第1章  Matlab操作基础第1章  Matlab操作基础
第1章 Matlab操作基础eterou
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptxNCU MCL
 
建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架ZhenChen57
 
人机对弈编程概述
人机对弈编程概述人机对弈编程概述
人机对弈编程概述勇浩 赖
 
Javascript share
Javascript shareJavascript share
Javascript shareXu Mac
 
R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探Sean Yu
 
Js is js(程劭非) (1)
Js is js(程劭非) (1)Js is js(程劭非) (1)
Js is js(程劭非) (1)looneyren
 
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)LearnWeb Taiwan
 
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Wei-Yu Chen
 
程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號鍾誠 陳鍾誠
 
分布式计算与Hadoop - 刘鹏
分布式计算与Hadoop - 刘鹏分布式计算与Hadoop - 刘鹏
分布式计算与Hadoop - 刘鹏Shaoning Pan
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点thinkinlamp
 
机器学习V10baochang svm
机器学习V10baochang svm机器学习V10baochang svm
机器学习V10baochang svmShocky1
 

Semelhante a 浅析Flash特效开发 陈勇 (20)

Multi Camera Prmandoc
Multi Camera PrmandocMulti Camera Prmandoc
Multi Camera Prmandoc
 
一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法
 
第1章 Matlab操作基础
第1章  Matlab操作基础第1章  Matlab操作基础
第1章 Matlab操作基础
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
 
Hi Haskell
Hi HaskellHi Haskell
Hi Haskell
 
建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
人机对弈编程概述
人机对弈编程概述人机对弈编程概述
人机对弈编程概述
 
Javascript share
Javascript shareJavascript share
Javascript share
 
Dev307
Dev307Dev307
Dev307
 
R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探R 語言教學: 探索性資料分析與文字探勘初探
R 語言教學: 探索性資料分析與文字探勘初探
 
Js is js(程劭非) (1)
Js is js(程劭非) (1)Js is js(程劭非) (1)
Js is js(程劭非) (1)
 
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
D3.js 與 Vue 框架的結合,讓圖表更具表現力(LearnWeb Taiwan Meetup #14)
 
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計
 
程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號
 
分布式计算与Hadoop - 刘鹏
分布式计算与Hadoop - 刘鹏分布式计算与Hadoop - 刘鹏
分布式计算与Hadoop - 刘鹏
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
机器学习V10baochang svm
机器学习V10baochang svm机器学习V10baochang svm
机器学习V10baochang svm
 

Mais de FLASH开发者交流会

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林FLASH开发者交流会
 
Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤FLASH开发者交流会
 
Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明FLASH开发者交流会
 
程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅FLASH开发者交流会
 
9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁FLASH开发者交流会
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光FLASH开发者交流会
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦FLASH开发者交流会
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁FLASH开发者交流会
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)FLASH开发者交流会
 
Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)FLASH开发者交流会
 

Mais de FLASH开发者交流会 (20)

Bambook sdk 与action script
Bambook  sdk  与action scriptBambook  sdk  与action script
Bambook sdk 与action script
 
Bambook开放之路
Bambook开放之路Bambook开放之路
Bambook开放之路
 
Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林
 
Misato engine hugh_tsai-蔡浩宇
Misato engine hugh_tsai-蔡浩宇Misato engine hugh_tsai-蔡浩宇
Misato engine hugh_tsai-蔡浩宇
 
Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤
 
Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明
 
程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅
 
Flash游戏大会 商文烨
Flash游戏大会 商文烨Flash游戏大会 商文烨
Flash游戏大会 商文烨
 
Flash ria usability 刘轩飞
Flash ria usability 刘轩飞Flash ria usability 刘轩飞
Flash ria usability 刘轩飞
 
9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁
 
简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁
 
Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Flash 原型开发(刘磊)
Flash 原型开发(刘磊)Flash 原型开发(刘磊)
Flash 原型开发(刘磊)
 
Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)
 
Flex开发实践经验谈(谢敏)
Flex开发实践经验谈(谢敏)Flex开发实践经验谈(谢敏)
Flex开发实践经验谈(谢敏)
 
Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)
 

浅析Flash特效开发 陈勇

  • 1.  
  • 2.
  • 3.  
  • 4.
  • 5.
  • 6. 混合模式发生在两个图像之间,它是将 显示对象 的颜色信息与 背景 的颜色信息 进行混合生成混合后的 目的图像 , 显示对象 会与 背景 在相同位置进行像素级的混合计 算,以便为 目的图像 在相同位置生成处理后的像素信息 任何显示对象都具有 blendMode 属性,因此,任何显示对像之间都可以进行像素 级混合 每个像素都由三种原色(红、绿、蓝)组成,介于 0x00~0xFF 之间(换算成 10 进 制为 0~255 )
  • 7.  
  • 8. ColorTransform: 调整显示对象的颜色值。 可以将颜色调整或 颜色转换 应用于所有四种通道:红色、绿色、蓝色和 Alpha 透明度 计算公式: newRed=(_oldRed*redMultiplier)+redOffset newGreen=(_oldGreen*greenMultiplier)+greenOffset newBlue=(_oldBlued*blueMultiplier)+blueOffset newAlpha=(_oldAlpha*alphaMultiplier)+alphaOffset
  • 9.  
  • 10. 经常用于特效的颜色运算中,通常运算符有: >> ( 位向右移) 或者 <<( 位向左移) 或者 | 或者 & 例:十六进制红色: var _color:uint=0xff0000; 取红色的数值为: var _red:uint=_color>>16 0xff0000 二进制: 111111110000000000000000 去掉 11111111 1111 0001 & 按位 与 0001 1011 0001 | 按位 OR 1011
  • 11. var _red:uint=200; var _green:uint=100; var _blue:uint=50; var _color:uint=_red<<16|_green<<8|_blue; trace(_color.toString(16)); // c86432 var _color:uint=0xffa78a; var _red:uint=_color>>16; var _green:uint=_color>>8&0xff; var _blue:uint=_color&0xff; trace(_red);//255 trace(_green);//167 trace(_blue);//138
  • 12. append 矩阵相乘 appendRotation identity 单位或者标准化 transformVectors appendTranslation 透视 :在 2D 平面上将平行线表示成聚合于一个消失点,从而获得深度和距离的视觉效果 投影 :为多维对象生成 2D 图像; 3D 投影将 3D 点映射到 2D 平面 旋转 :通过按圆周运动的方向移动对象内的每个点来更改对象的方向(通常也会更改其位置) 转换 :通过平移、旋转、缩放、倾斜或这些操作的组合来更改 3D 点或点集 平移 :通过将对象内的每个点往同一方向移动相同的距离来更改对象的位置
  • 13. 旋转方向( appendRotation ): X 大于零 ( 向里) Y 大于零 ( 向里) 反之 反之 Z 大于零 ( 向里) 反之 注意: idensity 在每次变换之前需写
  • 14.
  • 15.
  • 16. 卷积将输入图像的像素与相邻的像素合并 以生成图像, 可用于位图对象以及显示 对象应用广泛的变形,可实现的效果包括:模糊、边缘检测、锐化、浮雕、斜角等等 P N N N N N N N N 主要是在 P 周围取 N*N 区域做处理,通常 N 取 3 、 5 、 7 ,即为 3*3 、 5*5 、 7*7 , N 越小,效果越不明显,但会减轻 CPU 计算量 dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1.... src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias ConvolutionFilter (matrixX: Number = 0, matrixY: Number = 0, matrix: Array = null, divisor: Number = 1.0, bias: Number = 0.0, preserveAlpha: Boolean = true, clamp: Boolean = true, color: uint = 0, alpha: Number = 0.0) 例 : _convoFilter = new ConvolutionFilter(3, 3, [1, 1,1, 1, 1, 1, 1, 1, 1], 9);// 模糊:
  • 17. 常用滤镜参数: http://www.adobe.com/devnet/flash/articles/matrix_transformations_05.html 效 果:锐化 矩阵特点:中心上下左右值为负,且相等 , 且 divisor 为矩阵值和 效 果:模糊 矩阵特点:矩阵值相等,且 divisor 为矩阵值 和 效 果:浮雕 矩阵特点: 矩阵 对角线值取相反数,和为零 , 且 divisor 为 1
  • 18. Sobel 算子 边缘检测 边缘就是像素值有阶跃变化的像素集合 , 边缘检测的算法很多,有著名的 Sobel 、 Roberts 、 Prewitt 、 Laplacian 算法 边缘检测实例: http://www.gskinner.com/blog/archives/2005/08/flash_8_webcam.html
  • 19. redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4] greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9] blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14] alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19] 该类主要更改图像的 RGB 与 Alpha 值 , 可对图像饱和度、色相、亮度、对比度 进行更改 .
  • 20. 更改饱和度算法 计算机图形颜色亮度常量 private static var _nRed : Number = 0.3086; private static var _nGreen : Number = 0.6094; private static var _nBlue : Number = 0.0820; var srcRa : Number = (1 - nLevel) * _nRed + nLevel; var srcGa : Number = (1 - nLevel) * _nGreen; var srcBa : Number = (1 - nLevel) * _nBlue; var srcRb : Number = (1 - nLevel) * _nRed; var srcGb : Number = (1 - nLevel) * _nGreen + nLevel; var srcBb : Number = (1 - nLevel) * _nBlue; var srcRc : Number = (1 - nLevel) * _nRed; var srcGc : Number = (1 - nLevel) * _nGreen; var srcBc : Number = (1 - nLevel) * _nBlue + nLevel; var Saturation_Matrix : Array = [srcRa, srcGa, srcBa, 0, 0, srcRb, srcGb, srcBb, 0, 0, srcRc, srcGc, srcBc, 0, 0, 0, 0, 0, 1, 0]; this.filters = [new ColorMatrixFilter (Saturation_Matrix)];
  • 21. 更改对比度算法 var Scale : Number = nLevel * 0.06+1; var Offset : Number = nLevel*-3.81; var Contrast_Matrix : Array = [Scale, 0, 0, 0, Offset, 0, Scale, 0, 0, Offset, 0, 0, Scale, 0, Offset, 0, 0, 0, 1, 0];
  • 22. 此滤镜类经常用来开发水波、放大镜、哈哈镜效果,而且效果非常真实,主要因为通过计算可以对位图进行扭曲。 此滤镜使用了如下公式: dstPixel[x, y] = srcPixel[x + ((componentX(x, y) - 128) * scaleX) / 256, y + ((componentY(x, y) - 128) *scaleY) / 256) DisplacementMapFilter( mapBitmap:BitmapData, mapPoint:Point, componentX:Number, componentY:Number, scaleX:Number, scaleY:Number , [mode:String], [color:Number], [alpha:Number]) _filter = new DisplacementMapFilter(_buffer1, new Point(), BitmapDataChannel.BLUE, BitmapDataChannel.BLUE, 10, 50, DisplacementMapFilterMode.WRAP); 例:
  • 23. 注: componentX 与 componentY 代表颜色通道值 , Red 、 Green 、 Blue 、 Alpha 分别代表 1 、 2 、 4 、 8 , 如果看到复数 13 为 1+4+8=13 即为 Red 、 Blue 、 Alpha 三个通道 scaleX 与 scaleY 即 代表像素偏移比率 ,假如在被参考的 BitmapData 中 scaleX == 10, componentX(10, 10) == 1 然后这 BitmapData 在 (10, 10) 的 Red 值是 256 则使用这個 DisplacementMapFilter 类 它的 (10, 10) 像素就会被往右移 ((256 - 128)/128)*10 == 10 像素
  • 24.  
  • 25.  
  • 26.
  • 27. flintParticles 结构分析 此类库结构分为三个包 开发分析:见 word
  • 28.
  • 29.
  • 31.  
  • 33. ( 1 )粒子基于特殊的设置来创建,但是它不得不由某些事件来引导和指挥。   ( 2 )动作被添加到粒子的某个位置,使粒子加速,向目标方向运动。这一系列动作是由力来控制的。   ( 3 )粒子将一直保持某一状态,直到一个事件产生。   ( 4 )事件测试能改变粒子的当前状态,它们像是一个触发器。当一个事件产生时,一个决定就不得不作出,粒子就可以进入一个新的状态。   ( 5 )一个新的状态可以改变粒子的某些属性,比如:速度、形状、尺寸、旋转,或者使旧粒子产生新的粒子。   ( 6 )这种力可以是各种力,比如风力、重力。   ( 7 )一个粒子可以被测试与其他对象撞击,或者被约束在某个对象上运动。   ( 8 )粒子的生命周期是另一种属性,它可以被测试,也可以被用来改变粒子状态,或者在若干帧后使粒子消失。   ( 9 )粒子还可以被指定任何一种材质。
  • 34.  
  • 35.
  • 36.
  • 37.  
  • 38.