Sombras

Starter pack

En gr谩ficos 3D, las sombras se utilizan para simular el efecto de la luz golpeando un objeto y proyectando una sombra en otro objeto.

Proyectar y recibir sombras

React Three Fiber facilita la adici贸n de sombras a una escena.

Lo primero que necesitamos hacer es habilitar las sombras globalmente a帽adiendo el prop shadows en el componente <Canvas />:

<Canvas shadows />

Luego, debes habilitar las sombras en los objetos que proyectar谩n sombras:

<mesh castShadow />

Y en los objetos que recibir谩n sombras:

<mesh receiveShadow />

Por supuesto, puedes habilitar ambos en el mismo objeto:

<mesh castShadow receiveShadow />

Hag谩moslo en nuestro proyecto:

<Canvas shadows camera={{ position: [0, 3, 3] }}>
  {/* ... */}
  <mesh rotation-y={Math.PI / 4} castShadow>
    <boxGeometry />
    <meshStandardMaterial color="white" />
  </mesh>

  <mesh rotation-x={-Math.PI / 2} position-y={-0.5} receiveShadow>
    <planeGeometry args={[5, 5]} />
    <meshStandardMaterial color="white" />
  </mesh>
</Canvas>

Shadows not working

Hemos a帽adido shadows en el <Canvas />, castShadow en el cubo y receiveShadow en el plano, pero no ocurre nada.

Esto se debe a que tambi茅n necesitamos indicar qu茅 luz proyectar谩 sombras.

{
  /* ... */
}
<directionalLight position={[5, 5, 5]} intensity={0.5} castShadow />;
{
  /* ... */
}

Shadows one light

Ahora, podemos ver la sombra del cubo en el plano. Tambi茅n podemos establecer sombras desde m煤ltiples luces:

{/* ... */}
<directionalLight position={[5, 5, 5]} intensity={0.5} castShadow />
<directionalLight position={[-5, 5, 5]} intensity={0.5} color="red" castShadow />
{/* ... */}

Shadows multiple lights

Ve c贸mo el color de la sombra es afectado por el color de las luces.

Vamos a a帽adir una esfera a la escena:

End of lesson preview

To get access to the entire lesson, you need to purchase the course.