내가 만들고있는 게임에 대한 데이터를 생성 할 때 펄린 노이즈 함수를 사용하지만 다른 이유로 입력에 대해 동일한 결과를 계속 반환합니다. 필자는 FBM 기능에서 디버깅을 시도하는 데 4 시간을 소비 했으므로 알아낼 수 없었기 때문에 Ken Perlin의 향상된 노이즈 기능을 시도해 보았습니다. 동일한 문제가 발생합니다.Perlin 다른 입력에 대해 동일한 결과를 반환하는 노이즈 함수
이유가 누구인지 아시겠습니까? 그것을 고치는 좋은 방법은 무엇입니까? 내가 할 수 있었던 유일한 것은 x와 y 좌표에 .6473과 같은 10 진수 값을 추가하는 것이었지만, 배열 내부에서 반복되는 값과 같은 다른 문제가 발생했습니다.
다음은 테스트 코드입니다. 노이즈 값으로 채워진 두 개의 다른 2D 배열을 만들려고합니다. x와 y 입력은 내 게임의 좌표입니다. 그 다음에 '* *'이 나오면 그 값을 늘리지 않으면 두 배열 모두 모두 0으로 채워집니다. 이 예에서 좌표 (0.0, -768.0) 및 (-1024.0, -768.0)은 정확히 동일한 노이즈 값을 반환합니다. 내 게임에서 9 개의 좌표가 동일한 값을 반환합니다.
I이 시험에 사용하고있는 Perlin 노이즈 함수 here
public class TestPerlinMain
{
public static void main(String[] args)
{
int seed = 532434;
//create first noise array
double x = 0.0; //x-coordinate
double y = -768.0; //y-coordinate
float z = 10.0f;
double[][] test = new double[15][15];
System.out.println("Noise Array 1: ");
for(int i = 0; i < test.length; i++)
{
for(int j = 0; j < test[i].length; j++)
{
test[i][j] = ImprovedNoise.noise(x + (j * 64.0), y + (i * 64.0), 10.0);
x += .314f;//************
System.out.print(test[i][j] + " ");
}
y += .314f;//***********
}
System.out.println();
//create 2nd noise array
double x2 = -1024.0; //x coordinate
double y2 = -768.0; //y coordinate
float z2 = 10.0f;
System.out.println();
double[][] test2 = new double[15][15];
System.out.println("Noise Array 2: ");
for(int i = 0; i < test2.length; i++)
{
for(int j = 0; j < test2[i].length; j++)
{
test2[i][j] = ImprovedNoise.noise(x2 + (j * 64.0), y2 + (i * 64.0), 10.0);
x2 += .314f;//*************
System.out.print(test2[i][j] + " ");
}
y2 += .314f;//************
}
System.out.println();
}
내가 모든 것을 당신이 시도 나는 z를 비 int 값으로 만들었고 같은 결과를 얻었습니다. 노이즈 (j/4, i/4, z)를 제안하면서도 같은 결과를 얻었으므로 노이즈를 스케일링 해 보았습니다. 다른 모든 제안 또한 크기가 256x256 인 타일 또는 256 타일을 보유하고있는 배열을 의미합니까? – theDazzler
마지막 단락에서 만들려고했던 점은 노이즈 함수가 모든 256 (x, y 및 z에서) 반복된다는 것입니다. (1, 3)의 값은 (257, 259) 또는 (1,769) 또는 일반적으로 (x + 256n, y + 256m)와 동일합니다. 1024 및 768은 물론 두 번째 배열은 첫 번째 배열과 일치합니다. –
집에 도착하면 확인해 보겠습니다. 어쨌든 FBM 함수입니다. 테스트 용으로이 함수를 사용했습니다. 나는 어제 밤 몇 가지 변화를 일으켜서 일하게 만들었지 만 이상적이라고는 생각하지 않는다. – theDazzler