2017-11-07 15 views
1

그래서 3D 펄린 노이즈로 구성된 2D 애니메이션을 만들었습니다. 여기서 X & Y 축은 매트릭스/스크린의 픽셀 위치이고 Z 축은 시간이 지남에 따라 카운트 업됩니다. 그런 다음 임계 값을 적용하여 일반 노이즈의 구름 유형 패턴과 달리 단색 모양 만 표시합니다. 사실 그것은 움직이는 유체 애니메이션을 영원히 만듭니다. https://i.imgur.com/J9AqY5s.gifv어떻게 perlin 노이즈를 사용하여 생성 된 별도의 파형을 추적 할 수 있습니까?

나는 서로 다른 색상을 가질 수 있도록 다양한 모양을 추적하고 인덱싱 할 수있는 방법을 생각하려고 노력해 왔습니다. 나는 이미지 위에 루핑을 시도하고 각 셰이핑을 채우지 만, 한 프레임에 대해서만 작동합니다. 어떤 셰이프인지, 그리고 어떻게 커지거나 축소되는지를 추적하지 못합니다.

필자가 컬러 연필과 각 프레임을 종이에 붙이면 각 블롭을 색칠하고 추적하고 두 개의 블랍이 결합 할 때 색상을 결합 할 수 있기 때문에 이런 식으로해야한다고 생각합니다. 프로그래밍 방식으로이 작업을 수행하는 방법을 알아낼 수 없습니다. Perlin 노이즈가 작동하는 본성과 모양이 정의 된 객체가 아니기 때문에 색인을 생성하는 방법에 대해 머리를 감싸는 것이 어렵다는 것을 알게되었습니다.

제 설명이 충분했기 때문에 어떤 제안이나 도움을 주시면 대단히 감사하겠습니다.

+0

스택 오버플로는 일반적으로 "어떻게해야합니까?"형식 질문을 위해 설계되지 않았습니다. 구체적으로 "나는 X를 시도했는데 예상 Y이지만 Z를 대신 입력"했습니다. 내가 말할 수있는 가장 좋은 방법은 [문제를 작은 단계로 나누기] (http://happycoding.io/tutorials/how-to/program) 한 번에 하나씩 단계를 수행하는 것입니다. 그런 다음 붙어 있으면 특정 기술적 인 문제와 함께 [mcve]를 게시 할 수 있습니다. 행운을 빕니다. –

답변

1

현재 알고리즘은 프레임의 모든 픽셀을 얼룩이나 배경의 일부로 효과적으로 표시합니다. 모든 픽셀 위치에 대해 색상을 유지할 수있는 두 번째 프레임 버퍼가 있다고 가정 해 보겠습니다. 언급했듯이 blob/background 버퍼에 flood fill을 사용하여 blob에 속한 모든 픽셀을 찾을 수 있습니다.

첫 번째 프레임의 경우 발견 한 각 BLOB에 색상을 지정하고 색상 버퍼에 저장하십시오.

두 번째 및 이후 프레임의 경우 BLOB/배경 버퍼에서 다시 채우기를 사용하여 이산 BLOB에 속한 모든 픽셀을 확인할 수 있습니다. 색상 버퍼 (마지막 프레임의 색상을 나타냄)에서 해당 픽셀 각각에 해당하는 색상을 찾고 찾은 모든 색상의 막대 그래프를 작성하십시오.

히스토그램에는 배경색의 일부 픽셀이 포함됩니다 (blob이 배경 인 영역으로 이동하거나 커질 수 있기 때문에).

하지만 얼룩이 부드럽게 움직이기 때문에이 프레임의 일부인 픽셀의 대부분은 마지막 프레임의 동일한 얼룩의 일부가됩니다. 따라서 히스토그램에 배경색이 아닌 색상이 하나만 있으면 그 색상이 사용됩니다.

히스토그램에 배경색 만 있으면 새로운 색조이며 새로운 색을 지정할 수 있습니다.

히스토그램에 두 개 이상의 블롭 색상이 포함 된 경우 두 개 이상의 블롭이 병합되고 색상을 혼합 할 수 있습니다 (아마도 해당 영역의 히스토그램 카운트에 비례하여 혼합 될 수 있습니다).

이 트릭은이 모든 것을 효율적으로 수행하는 것입니다. 여기서 설명한 알고리즘이 아이디어를 제공합니다. 실제 구현에서는 문자 그대로 히스토그램을 작성하지 않을 수 있으며 모든 프레임에서 각 픽셀 색상 틀 스크래치를 다시 계산할 수 있습니다.