Displacement Filter with Perlin Noise

From Directorforum Collaboration Wiki

Jump to: navigation, search

Contents

Shockwave


Description

This demo built with Director 11 creates animated perlinNoise and applies it with displacement map filter to an image (2D) and a texture (3D).

Code

Attach the following script to an image sprite and enjoy animated perlin noise displacement.

property pNoiseMember
property pNoiseImage
property pSprite
property pSavedImage
property pDisplacedImage
property pDisplacementFilter
property pX
 
on beginSprite me
  pSprite = sprite(me.spriteNum)
  pSavedImage = pSprite.member.image.duplicate()
  pNoiseImage = image(256,256,24)
  pX = 0
 
  if voidP(member("perlinNoise")) then
    pNoiseMember = new(#bitmap)
    pNoiseMember.name = "perlinNoise"
  else
    pNoiseMember = member("perlinNoise")
  end if
 
  pDisplacementFilter = filter(#DisplacementMapFilter, [\
  #map:pNoiseMember, \
  #mode:2, #mapX:0, \
  #mapY:0, \
  #componentX:#green, \
  #componentY:#green, \
  #scaleX:20, \
  #scaleY:20])
end
 
on endSprite me
  pSprite.member.image = pSavedImage
end
 
on enterFrame me
  a = the milliseconds
  pSprite.member.image = updateDisplacedNoise()
  member("ms").text = string(the milliseconds - a && "ms")
end
 
on updateDisplacedNoise
  pX = pX + 1
  pointList = [point(pX,pX)]
  pNoiseImage.perlinNoise(64, 64, 2, 1, true, true, [\
  #channelOptions:2, \
  #grayscale:true, \
  #offsets:pointList])
  pNoiseMember.image = pNoiseImage
 
  pDisplacedImage = pSavedImage.duplicate()
  pDisplacedImage.applyFilter(pDisplacementFilter)
 
  return pDisplacedImage
end

Download

Download Director 11 project file - 2.15MB

Personal tools