es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mi script de ruido de Perlin no interpola correctamente.

Estoy tratando de hacer una función de ruido Perlin, pero la interpolación no funciona correctamente.
Esperaba que cambiar los diferentes productos escalares en la interpolación funcionara, pero no lo hace.
También probé si mi función de interpolación funciona y parece que sí lo hace.

Mi script está en: https://codepen.io/Koen124/pen/WNZyMdj?editors=0010

    var x10 = x - Math.floor(x); // x10 está entre 0 y 1
    var y10 = y - Math.floor(y); // y10 está entre 0 y 1

// topleft && topright
var upInterpolate = (vec_dot[0]*cosInterp(x10))+(vec_dot[1]*(1-cosInterp(x10)));

// bottomleft && bottomright
var downInterpolate = (vec_dot[2]*cosInterp(x10))+(vec_dot[3]*(1-cosInterp(x10)));

var final = (upInterpolate*cosInterp(y10))+(downInterpolate*(1-cosInterp(y10)));

Primero probé mi script de ruido Perlin con solo 4 vectores que puedes ver aquí: https://codepen.io/Koen124/pen/GRMGrEM?editors=0010

La prueba de interpolación está en: https://codepen.io/Koen124/pen/ExwRMgB?editors=0010

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con la interpolación que no funciona correctamente en la función de ruido de Perlin puede no ser con la función de interpolación en sí, sino más bien con la forma en que se están utilizando los productos punto en la interpolación. El fragmento de código proporcionado muestra que se utilizan dos productos punto para interpolar los valores en la dirección x, pero no está claro cómo se están utilizando los otros dos productos punto para la interpolación en la dirección y.

    Además, puede ser útil verificar que la función de ruido de Perlin esté generando valores en el rango deseado de valores (es decir, entre 0 y 1). La depuración imprimiendo los valores durante el proceso de generación también puede ayudar a identificar dónde pueden estar ocurriendo errores.

Comments are closed.