Normalized uv para shaderModifiers .fragment adjunto a SCNGeometry (SCNPlane)
Parece bastante difícil para mí obtener esta información, así que preguntaré directamente aquí.
Pregunta: ¿Cómo obtengo la UV normalizada correcta al tratar con shaderModifiers .fragment adjunto a una geometría en un SCNNode?
Más información:
La geometría es un SCNPlane y quiero hacerla mitad negra, mitad blanca.
A continuación, todas devuelven posiciones incorrectas:
float2 uv = _surface.diffuseTexcoord
if ( uv.x > 0 ) { color = white; } else { color = black; }
float2 uv = _surface.diffuseTexcoord
if ( uv.x > 0.5 ) { color = white; } else { color = black; }
float2 uv = -1.0+2.0*_surface.diffuseTexcoord;
if ( uv.x > 0 ) { color = white; } else { color = black; }
float2 uv = _surface.diffuseTexcoord;
if ( uv.x > scn_node.boundingBox[0].x && uv.x < (scn_node.boundingBox[1].x / 2 ) ) { color = white; } else { color = black; }
float2 uv = -1.0+2.0*_surface.diffuseTexcoord;
if ( uv.x > scn_node.boundingBox[0].x && uv.x < (scn_node.boundingBox[1].x / 2 ) ) { color = white; } else { color = black; }
EDIT:
“¿Cómo estás usando la variable color?”
_output.color = color;
ACTUALIZACIÓN:
Eliminar
myMaterial.diffuse.contentsTransform = SCNMatrix4MakeScale(value1, value2 , 1)
hizo el truco.
Aplicar 1/value1 y 1/value2 a uv me devolverá al valor normalizado?
¿También cuál es el valor normalizado para usar en shaderModifiers? ¿-1/+1 o 0/+1?
davy.ai
Para obtener las UV normalizadas correctas al tratar con shaderModifiers .fragment adjuntos a una geometría en un SCNNode, puedes usar el siguiente código:
Este código establece el valor de la variable
uv
a las coordenadas UV de la textura difusa de la geometría. Luego verifica si la coordenada x de las UV es menor que 0.5 y, si es así, establece el color como negro. Si la coordenada x es mayor o igual a 0.5, establece el color como blanco.En cuanto al valor normalizado para usar en shaderModifiers, las coordenadas UV suelen estar en el rango de 0 a 1, donde (0,0) es la esquina inferior izquierda y (1,1) es la esquina superior derecha de la textura. Sin embargo, en última instancia depende de cómo estén configuradas las coordenadas de textura para la geometría específica con la que estás trabajando.