noise()
메서드 또는
perlinNoise()
메서드를 통해 비트맵에 노이즈 효과를 적용하여 비트맵 모양을 수정할 수 있습니다. 노이즈 효과는 튜닝되지 않은 텔레비전 화면에 나타나는 잡음에 비유할 수 있습니다.
비트맵에 노이즈 효과를 적용하려면
noise()
메서드를 사용하십시오. 이 메서드는 비트맵 이미지의 특정 영역에 있는 픽셀에 임의의 색상 값을 적용합니다.
이 메서드는 다음 5개의 매개 변수를 사용합니다.
-
randomSeed
(정수): 패턴을 결정하는 난수 초기값입니다. 이름과는 달리 이 숫자는 사실상 동일한 숫자가 전달될 경우 동일한 결과를 생성합니다. 따라서 의미 있는 임의의 결과를 얻으려면
Math.random()
메서드를 사용하여 이 매개 변수의 난수를 전달해야 합니다.
-
low
(단위): 각 픽셀(0 ~ 255)에 대해 생성되는 최저 값을 나타내는 매개 변수로서, 기본값은 0입니다. 이 값을 낮게 설정하면 노이즈 패턴이 어두워지고 높게 설정하면 노이즈 패턴이 밝아집니다.
-
high
(단위): 각 픽셀(0 ~ 255)에 대해 생성되는 최고 값을 나타내는 매개 변수로서, 기본값은 255입니다. 이 값을 낮게 설정하면 노이즈 패턴이 어두워지고 높게 설정하면 노이즈 패턴이 밝아집니다.
-
channelOptions
(단위): 노이즈 패턴이 적용될 Bitmap 객체의 색상 채널을 지정하는 매개 변수로서, 네 가지 색상 채널 ARGB 값을 임의로 결합한 숫자가 될 수 있습니다. 기본값은 7입니다.
-
grayScale
(부울):
true
로 설정된 경우
randomSeed
값을 비트맵 픽셀에 적용하여 이미지의 모든 색상을 효과적으로 지웁니다. 알파 채널은 이 매개 변수의 영향을 받지 않습니다. 기본값은
false
입니다.
다음 예제에서는 비트맵 이미지를 생성한 후 이 이미지에 파란색 노이즈 패턴을 적용합니다.
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
public class BitmapNoise1 extends Sprite
{
public function BitmapNoise1()
{
var myBitmap:BitmapData = new BitmapData(250, 250,false, 0xff000000);
myBitmap.noise(500, 0, 255, BitmapDataChannel.BLUE,false);
var image:Bitmap = new Bitmap(myBitmap);
addChild(image);
}
}
}
좀 더 유기적인 텍스처를 만들려면
perlinNoise()
메서드를 사용합니다.
perlinNoise()
메서드는 연기, 구름, 물, 불 또는 폭발 등의 효과를 표현하는 데 적합한 사실적이고 유기적인 텍스처를 생성합니다.
perlinNoise()
메서드는 알고리즘을 통해 텍스처를 생성하기 때문에 비트맵 기반 텍스처보다 사용되는 메모리가 적습니다. 그러나 프로세서 사용에는 영향을 주므로 내용이 느리게 표시될 수 있으며 그 결과 특히 오래된 컴퓨터에서는 화면이 프레임 속도보다 느린 속도로 다시 그려집니다. 이와 같은 문제는 주로 Perlin 노이즈 알고리즘을 처리하기 위해 부동 소수점 계산을 수행할 때 발생합니다.
이 메서드는 다음과 같은 9개의 매개 변수를 사용하며, 이 중 처음 6개는 필수 매개 변수입니다.
-
baseX
(숫자): 만들어진 패턴의 x(크기) 값을 결정합니다.
-
baseY
(숫자): 만들어진 패턴의 y(크기) 값을 결정합니다.
-
numOctaves
(단위): 이 노이즈를 생성하기 위해 결합할 옥타브, 즉 개별 노이즈 함수의 수입니다. 옥타브 수가 많을수록 보다 상세한 이미지가 만들어지지만 처리하는 데 시간이 오래 걸립니다.
-
randomSeed
(정수): 난수 초기값으로
noise()
함수에서 작동하는 것과 같은 방식으로 작동합니다. 따라서 의미 있는 임의의 결과를 얻으려면
Math.random()
메서드를 사용하여 이 매개 변수의 난수를 전달해야 합니다.
-
stitch
(부울):
true
로 설정된 경우 이 메서드는 비트맵 채우기 작업 시 연속 타일링 텍스처를 만들어내기 위해 이미지의 가장자리를 매끄럽게 하려고 시도합니다.
-
fractalNoise
(부울): 메서드에 의해 생성된 그래디언트의 가장자리와 관련된 매개 변수입니다.
true
로 설정된 경우 해당 효과의 가장자리를 매끄럽게 하는 프랙탈 노이즈를 생성합니다.
false
로 설정된 경우에는 난류가 생성됩니다. 난류가 포함된 이미지의 경우 경사면에서 불연속 선이 드러나기 때문에 불꽃과 파도 같은 시각적 효과를 만드는 데 적합합니다.
-
channelOptions
(단위):
channelOptions
매개 변수는
noise()
메서드에서 작동하는 것과 같은 방식으로 작동합니다. 또한 노이즈 패턴이 적용되는 비트맵의 색상 채널을 지정합니다. 네 가지 색상 채널 ARGB 값을 임의로 결합한 숫자가 될 수 있습니다. 기본값은 7입니다.
-
grayScale
(부울):
grayScale
매개 변수는
noise()
메서드에서 작동하는 것과 같은 방식으로 작동합니다.
true
로 설정된 경우
randomSeed
값을 비트맵 픽셀에 적용하여 이미지의 모든 색상을 효과적으로 지웁니다. 기본값은
false
입니다.
-
offsets
(배열): 각 옥타브의 x 및 y 오프셋에 해당하는 점 배열입니다. 오프셋 값을 조작하면 이미지 레이어를 부드럽게 스크롤할 수 있습니다. 오프셋 배열의 각 점은 특정 옥타브 노이즈 함수에 영향을 미칩니다. 기본값은
null
입니다.
다음 예제에서는
perlinNoise()
메서드를 호출하여 녹색 및 파란색 구름 효과를 생성하는 150 x 150픽셀의 BitmapData 객체를 만듭니다.
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
public class BitmapNoise2 extends Sprite
{
public function BitmapNoise2()
{
var myBitmapDataObject:BitmapData =
new BitmapData(150, 150, false, 0x00FF0000);
var seed:Number = Math.floor(Math.random() * 100);
var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE
myBitmapDataObject.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);
var myBitmap:Bitmap = new Bitmap(myBitmapDataObject);
addChild(myBitmap);
}
}
}