2016-10-16 3 views
0

나는 주어진 X 값과 Y 값에 따라 double을 반환하는 opensimplex 노이즈 알고리즘과 perlin 노이즈 알고리즘이 있습니다. 나는 소프트웨어를 설계 그리고 난 방법을 알고 싶습니다 : Perlin Noise Scaleable 만들기

  • 여전히 서로 다른 해상도에서 펄린 (즉, 1024, 2048) 건축 허용하지만 0-1 배 값으로 펄린 노이즈가 유지

    • 규모 규모는 있지만 추가 세부 사항을 추가하십시오.
    • 하는 것은 사용자가이의 규모를

    내 현재 코드에 영향을 미치는 세계의 크기를 변경할 수 있도록 허용 : 당신이 펄린 노이즈 이미지의 해상도를 변경하려면

    double scale = ((((Double) parameters.get(SCALE).getValue() * 10) + 0.25) * ProjectSettings.WORLD_SIZE)/((double) resolution/1000); 
    double x = 0; 
    double y = 0; 
    OpenSimplexNoise noise = new OpenSimplexNoise((Long) parameters.get(SEED).getValue()); 
    for(int n = 0; n < resolution; n++) { 
        x += scale; 
        for(int m = 0; m < resolution; m++) { 
         y += scale; 
         values[n][m] = noise.generateOpenSimplexNoise(x, y, (Double) parameters.get(PERSISTENCE).getValue(), (Integer) parameters.get(OCTAVES).getValue()); 
        } 
    } 
    
  • 답변

    -1

    , 높이를 변경 for 루프에 값이있는 값입니다. 크기를 조정하려면 Perlin 노이즈 방법의 첫 번째 및/또는 두 번째 인수에 확장해야 할 때 변경되는 변수를 곱해야합니다. 시간 값이 이에 적합 할 수 있습니다. 아래 코드 예제를 참조하십시오.

    https://www.youtube.com/playlist?list=PLA2Wxg-e7vbA1LC15uXM0s8p5Nhse_rNn :

    time += 0.01; 
    // Change height and width values to change resolution 
    for(int y = 0; y < height; y++){ 
        for(int x = 0; x < width; x++){ 
         double dx = (double) x/MainWindow.height; 
         double dy = (double) y/MainWindow.height; 
    
         // Perlin noise method call 
         // In order to scale, you have to multiply current values 
         // by time or other variable, which change would cause the zoom. 
         double noise = noise(dx * time, dy * time); 
        } 
    } 
    

    이 튜토리얼 시리즈는 당신이 당신의 목표를 달성하기 위해 도움이 될 수 있습니다.

    튜토리얼 3의 끝에서 애니메이션을 이동하고 움직일 수 있어야합니다. Perlin 노이즈의 메커니즘을 배우지 않으려면 두 번째 튜토리얼을 건너 뛸 수 있습니다. 나는 그것이 도움이되기를 바랍니다.

    관련 문제