1

저는 세계 제 세대와 그 알고리즘에 익숙하지 않기 때문에 누군가가 나에게 유용한 설명이나 코드를 제공 할 수 있기를 바랍니다.OpenSimplexNoise higher detail level

OpenSimplexNoise를 사용하여 세부 수준을 높이려면 어떻게해야합니까?

PerlinNoise와 같은 알고리즘에서는 주파수가 이고 곱하기 옥타브를 함께 추가 할 수 있습니다. OpenSimplexNoise를 사용하면 어떻게 될까요?

private static final int WIDTH = 512; 
private static final int HEIGHT = 512; 
private static final double FEATURE_SIZE = 64; 

public static void main(String[] args) 
    throws IOException { 

    OpenSimplexNoise noise = new OpenSimplexNoise(1233313l); 
    BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_INDEXED); 
    for (int y = 0; y < HEIGHT; y++) 
    { 
     for (int x = 0; x < WIDTH; x++) 
     { 
      double value = noise.eval(x/FEATURE_SIZE, y/FEATURE_SIZE); 
      int rgb = 0x010101 * (int)((value + 1) * 127.5); 
      image.setRGB(x, y, rgb); 
     } 
    } 
    ImageIO.write(image, "png", new File("noise1.bmp")); 
} 

을 어떻게 나는 등 숲에 더 플랫 결과를 가지고 그것을 달성 할 수 있습니다 여기에

는 이미있어 무엇인가?

+0

구체적으로 '높은 세부 수준'및 '보다 평이한 결과'를 의미합니까? 현재 받고있는 것과 원하는 것을 숫자 및/또는 이미지로 제공하십시오. – Pikalek

+0

http://libnoise.sourceforge.net/tutorials/images/terrainf8p1.jpg 예제 이미지입니다. 당신이 볼 수 있듯이 산들이 있지만 많은 세부 사항이있는 멋진 평평한 지형입니다. PerlNoise에서 mulitply 옥타브를 주파수와 함께 추가하여이 작업을 수행 할 수 있음을 알고 있지만 OpenSimplexNoise에서이 작업을 수행하는 방법을 모르겠습니다. – ShadowDragon

답변

1

OpenSimplexNoise는 설명 된 기능을 직접 제공하지 않으므로 직접 제공해야합니다. 기본적으로 반복적으로 노이즈 층을 생성하여 & 최종 결과에 추가합니다. 더 구체적으로 :

  • 옥타브의 수는 반복하는 횟수에 의해 제어됩니다.
  • 레이어의 진폭은 주어진 레이어의 값에 일정량을 곱하여 제어됩니다. 진폭은 일반적으로 옥타브 번호에서 파생됩니다. 가장 일반적인 예는 1/(2^n)을 사용하는 것입니다. 여기서 n은 현재 옥텟의 번호입니다.
  • 샘플링 간격을 조정하여 주파수를 제어 할 수 있습니다. OpenSimplexNoise와 관련해서는 x y z 매개 변수에 일정량을 곱하여이를 수행 할 수 있습니다. 다시 말하지만, 이것은 일반적으로 옥타브 번호 &에서 파생됩니다. 가장 일반적인 예제는 2^n입니다.

튜닝 옥타브의 수, 크기 & 주파수 값은 &이 상황에 매우 의존하는 과학 이라기보다는 예술의 더 많은 것이다. 귀하의 프로젝트에 맞는 것을 찾기 위해 다른 사람들이 사용했던 약간의 실험 인 &을 실험 해보십시오. 위에서 설명한 표준 진폭 & 주파수로 6 옥타브를 사용하여 좋은 결과를 얻었습니다.