_Blender

颜色混合器,功能包括混色、高亮、加色和灰化等。 全部展开

属性展开

  • + playMode : uint

    颜色值。

    • 示例

       bl.playMode = _Blender.PlayLoop

静态常量展开

  • + MaskAlpha : uint

    用在paint方法,当alphaMask为 _Blender.MaskAlpha 时,贴图的alpha通道不为0的像素,被blend作用。

  • + MaskInvAlpha : uint

    用在paint方法,当alphaMask为 _Blender.MaskInvAlpha 时,贴图的alpha通道为0的像素,被blend作用。

  • + PlayLoop : uint

    循环播放。

  • + PlayOnce : uint

    播放一次。

  • + PlayOnlyOnce : uint

    只播放一次,播放完重置效果。

  • + PlayPingPong : uint

    乒乓循环模式。

构造方法展开

  • + function _Blender() : _Blender

    构造颜色混合器。

  • + function _Blender(bl : _Blender) : _Blender

    构造颜色混合器,并用参数的值进行赋值。

    • 参数

      bl : 演示混合器

    • 示例

       b2 = _Blender.new(b1)

公共方法展开

  • + function additive(color : uint)

    加色。

    • 参数
    • color : 加色的颜色值。

    • 示例

       _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd.camera.eye = _Vector3.new(5, 5, 5)

      b1 = _Blender.new()
      b1:additive(_Color.Blue)
      _rd.bgColor=_Color.Red

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function additive(color1 : uint, color2 : uint, duration : uint)

    加色。

    • 参数
    • color1 : 起始颜色值。
    • color2 : 最终颜色值。
    • duration : 持续时间,加色值将在duration时间内由color1渐变为color2。

    • 示例

       _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd.camera.eye = _Vector3.new(5, 5, 5)
      a = _AmbientLight.new()
      a.color = _Color.Green
      _rd:useLight(a)
      b1 = _Blender.new()
      b1:additive(_Color.Blue, _Color.Yellow, 3000)
      _rd.bgColor=_Color.Red

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function blend(color : uint)

    混色。

    • 参数
    • color : 混色的颜色值。
      • 示例
    •  _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd.camera.eye = _Vector3.new(5, 5, 5)
      _rd:useLight(_AmbientLight.new())
      b1 = _Blender.new()
      b1:blend(_Color.Blue)

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function blend(color1 : uint, color2 : uint, duration : uint)

    混色。

    • 参数
    • color1 : 起始颜色值。
    • color2 : 最终颜色值。
    • duration : 持续时间,混色值将在duration时间内由color1渐变为color2。
      • 示例
    •  _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd.camera.eye = _Vector3.new(5, 5, 5)
      _rd:useLight(_AmbientLight.new())
      b1 = _Blender.new()
      b1:blend(_Color.Blue, _Color.Green, 3000)

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function blur(factor : float)

    模糊效果。

    • 参数
    • factor : 系数。
    • 示例

       _rd.screenBlender = _Blender.new()
      _rd.screenBlender:blur(0.5)
  • + function brightness(b1 : float, b2: float, duration : uint)

    多层贴图使用加色方式渲染,并改变亮度。

    • 参数
    • b1 : 起始亮度值。
    • b2 : 最终亮度值。
    • duration : 持续时间,亮度值将在duration时间内由b1 渐变为b2。
  • + function clear()

    用于清空一个 _Blender 的状态。

    • 示例

       b1:clear()
  • + function clone() : _Blender

    复制克隆当前_Blender到一个新的_Blender并返回。

  • + function const(color : uint)

    用于把后面的渲染颜色强制设置为一个颜色。

    • 示例

       b1:const(_Color.Green)
  • + function copy()

    复制颜色。

  • + function correction(texture : _Image, f1 : number, f2 : number, time : uint)

    屏幕颜色校准。

    • 参数
    • texture : 一张1 * 256的贴图,每个像素存放颜色的rgb值。
    • f1 : 影响因子
    • f2 : 影响因子, 默认值为0
    • time : 变化时间,默认值为0

    • 示例

       _rd.screenBlender:correction(db, screenPower)
  • + function dissolve(d1 : float, d2: float, duration : uint, edge : float, color1 : unit, color2 : uint, img)

    设置溶解效果。

    • 参数
    • d1 : 起始值( 0.0 ~ 1.0 )。
    • d2 : 最终值( 0.0 ~ 1.0 )。
    • duration : 持续时间。
    • edge : 溶解边的大小( 0.0 ~ 1.0 )。
    • color1 : 内边颜色。
    • color2 : 外边颜色。
    • img : 可以为资源名或者_Image对象
  • + function environment( x1 : float, y1 : float, b1 : float, x2 : float, y2 : float, b2 : float, paint : bool, lockCamera : bool, time : uint )

    环境贴图偏移。

    • 参数
    • x1: 0到1,横向开始偏移。

    • y1: 0到1,纵向开始偏移。

    • b1:开始亮度。

    • x2: 0到1,横向结束偏移。

    • y2: 0到1,纵向结束偏移。

    • b2:结束亮度。

    • paint:是否使用高光贴图。

    • lockCamera:是否锁定摄像机方向。

    • time:持续时间。

    • 示例

       mesh.blender:environment(0, 0, 0.5, 1, 0, 1.5, false, false, 3000)
      mesh.blender.playMode = _Blender.PlayPingPong
  • + function fade(color : uint, factor1 : float, factor2 : float, duration : uint)

    淡化。

    • 参数
    • color : 颜色值。
    • factor1 : 起始系数。
    • factor2 : 最终系数。
    • duration : 持续时间,颜色系数将在duration时间内由factor1渐变为factor2。

    • 示例

       b1 = _Blender.new()
      b1:fade(_Color.Blue, 0.3, 0.8, 3000)
  • + function gray(from : float, to : float, duration : uint)

    灰化。from 和 to 为灰度化权重,范围为 0 到 1,duration 为插值所需时间。

    • 参数
    • from : 起始灰度化权重。
    • to : 最终灰度化权重。
    • duration : 持续时间,灰度化权重将在duration时间内由from渐变为to。

    • 示例

       _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd:useLight(_AmbientLight.new())
      _rd.camera.eye = _Vector3.new(5, 5, 5)

      b1 = _Blender.new()
      b1:gray(0.5, 1, 3000)

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function highlight(color : uint)

    高亮。

    • 参数
    • color : 高亮的颜色值。

    • 示例

       _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd:useLight(_AmbientLight.new())
      _rd.camera.eye = _Vector3.new(5, 5, 5)

      b1 = _Blender.new()
      b1:highlight(_Color.Purple)

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function highlight(color1 : uint, color2 : uint, duration : uint)

    高亮。

    • 参数
    • color1 : 起始颜色值。
    • color2 : 最终颜色值。
    • duration : 持续时间,高亮值将在duration时间内由color1渐变为color2。
    • 示例

       _dofile('cameracontrol.lua')
      teapot = _mf:createTeapot()
      _rd:useLight(_AmbientLight.new())
      _rd.camera.eye = _Vector3.new(5, 5, 5)

      b1 = _Blender.new()
      b1:highlight(_Color.Purple, _Color.Yellow, 3000)

      _app:onIdle(function(e)
      _rd:useBlender(b1)
      teapot:drawMesh()
      _rd:popBlender()
      end)
  • + function paint(color : uint, alphaMask : uint)

    更改贴图颜色。

    • 参数
    • color : 用于指定要更改的颜色。
    • alphaMask : 用于控制blender作用的区域。当alphaMask为0时,整个贴图都被blender作用。当alphaMask为_Blender.MaskAlpha时,贴图的alpha通道不为0的像素,被blend作用。当alphaMask为_Blender.MaskInvAlpha时,贴图的alpha通道为0的像素,被blend作用。
    • 示例

       ui = _SWFManager.new('blender-paint-ui.swf')
      ui._x, ui._y = 300, -100
      ui.dp.dataProvider:push(0, _Blender.MaskAlpha, _Blender.MaskInvAlpha)
      ui.dp.selectedIndex = 0

      image = _Image.new('ch_boot013.bmp')

      b1 = _Blender.new()
      b1:copy()

      b2 = _Blender.new()
      pcolor = _Color.Dark

      function ui.PC.colorSwatch.click()
      local color = _sys:selectColor(ui.PC:getColor())
      ui.PC:setColor(color)
      pcolor = color + 0xff000000
      b2:paint(pcolor, ui.dp.selectedItem)
      end

      ui.dp.change = function()
      b2:paint(pcolor, ui.dp.selectedItem)
      end

      ui.bt.click = function()
      b2:clear()
      end

      _app:onIdle(function(e)
      ui._x, ui._y = _rd.w / 2200, 200_rd.h / 2
      _rd:useBlender(b1)
      _rd:useBlender(b2)
      image:drawImage(400, 150, 700, 450)
      _rd:popBlender()
      _rd:popBlender()
      end)
  • + function radialblur(x : uint, y: uint, radius : float, offset : float, inside : bool, duration : uint)

    屏幕径向模糊。

    • 参数
    • x, y: 模糊中心。
    • radius : 清晰中心半径,像素数。
    • offset : 模糊程度,像素偏移。
    • inside : 中心模糊。
    • duration : 持续时间。
    _rd.screenBlender:radialblur(x, y, 50, 4, false, 500)
    _rd.screenBlender.playMode = _Blender.PlayOnlyOnce
  • + function texblend( f1 : number, f2 : number, time : uint)

    贴图透明度变化。

    • 参数
    • f1 : 起始alpha值
    • f2 : 目标alpha值
    • time : 变化时间

    • 示例

       b1 = _Blender.new()
      b1:texblend(0, 1, 2000)
问题反馈(登录才可以发表哦!)