2012年12月20日 星期四

Blend Mode-Corona混合特效

在製作APP 遊戲時,常會想要使用一些特效

在這裡介紹一種Corona中的混合特效給大家-Blending

Blending 主要用來混合多層不同的Pixel,

利用Object的RGB三個元素來混出新的顏色

Blend Mode 有提供額外三種模式(預設為Normal)

"add"
"multiply"
"screen"


使用方法
obj.blendMode = "add" --使用add blendmode
obj.blendMode = "multiply" --使用multiply blendmode
obj.blendMode = "screen" --使用screen blendmode

blending mode:add

add模式對於想要使用火焰,雷射或是閃電特效時很有用

add模式混合算式很單純的就是RGB各元素相加(Max為255)

background = display.newRect(0,0,display.contentWidth,display.contentHeight)
background:setFillColor(34, 34, 44)
local myCircle = display.newCircle(  display.contentWidth*.5, display.contentHeight*.2, 40 )
myCircle:setFillColor(255,51,51)
myCircle.blendMode = "add"
local myCircle2 = display.newCircle(  display.contentWidth*.5+myCircle.contentWidth*.7, display.contentHeight*.2, 40 )
myCircle2:setFillColor(0,153,51)
myCircle2.blendMode = "add"
local myRect = display.newRect(  myCircle.x,myCircle.y-myCircle.contentWidth*.25,60,40)
myRect:setFillColor(102, 153, 204)
myRect.blendMode = "add"
local myText = display.newText( "add", myRect.x, myRect.y+myRect.contentHeight, native.sysemFont,20)

background:(34,34,44)
red circle:(255,51,51)
green circle:(0,153,51)
blue rectangle:(102,153,204)

左區混色:(255+102+34,51+153+34,51+204+44)=(255,238,255)
中間混色:(255+0+102+34,51+153+153+34,51+40+204+44)=(255,255,255)
右邊混色:(0+102+34,153+153+34,40+204+44)=(136,255,255)
(記得要加背景色上去)

blending mode:multiply

multiply模式製造出來的效果會使得物件變暗對於製造shadow較有用

multiply模式混合公式為

RGB resulting color = (top color * bottom color) /255

(程式碼請參考之前,將模式更改為multiply

background:(34,34,44)
red circle:(255,51,51)
green circle:(0,153,51)
blue rectangle:(102,153,204)


左區混色:((255*102*34)/255^2,(51*153*34)/255^2,(51*204*44)/255^2)=(13.6,4.08,7.04)
中間混色:((255*0*102*34)/255^3,(51*153*153*34)/255^3,(51*40*204*44)/255^3)=(0,0.24,0.01)
右邊混色:((0*102*34)/255^2,(153*153*34)/255^2,(40*204*44)/255^2)=(0,12.24,5.52)
(記得要加背景色上去)

blending mode:screen

screen模式製造出來的效果會使得物件淡(亮),但重疊的部份又不會太亮

screen模式混合公式為

RGB resulting color = 255 - ( ( ( 255 - top color ) * ( 255 - bottom color ) ) / 255 )

(程式碼請參考之前,將模式更改為screen)



算式略為複雜就不列出,有興趣的朋友自己驗算:)

以上就是三種混合模式,適當使用便能製造很棒的特效

來自小島

沒有留言:

張貼留言