Texturas
Uma textura é uma imagem usada para colorir a superfície de um mesh. Ela pode ser usada para adicionar detalhes a um objeto 3D.
Uma textura é aplicada a um mesh usando um material. O material define como a textura é aplicada ao mesh e como ela interage com a luz.
useTexture
O hook useTexture
do Drei é usado para carregar uma textura de um arquivo. Ele retorna um objeto Texture
que pode ser usado em um material.
Vamos carregar o arquivo de textura do pacote de inicialização localizado em public/textures/
:
import { useTexture } from "@react-three/drei"; export const Experience = () => { const texture = useTexture("textures/PavingStones130_1K_Color.jpg"); return ( <> <mesh> <boxGeometry /> <meshStandardMaterial map={texture} /> </mesh> </> ); };
A textura é aplicada ao mesh usando a propriedade map
do material.
Nossa textura de pedra de pavimentação é aplicada ao cubo.
Como vimos com useGLTF
, useTexture
nos bastidores usa useLoader
com TextureLoader
para carregar a textura.
Se quisermos escalar a textura, podemos usar a propriedade repeat
da textura:
import { useTexture } from "@react-three/drei"; import * as THREE from "three"; export const Experience = () => { const texture = useTexture("textures/PavingStones130_1K_Color.jpg"); texture.repeat.set(3, 3); texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // ... };
As propriedades wrapS
e wrapT
definem como a textura é repetida no mesh. Por padrão, a textura é fixada na borda do mesh. Aqui usamos RepeatWrapping
para repetir a textura.
Nossa textura é repetida 3 vezes no cubo.
Se ao contrário gostaríamos de esticar a textura, podemos diminuir o valor de repeat
:
React Three Fiber: The Ultimate Guide to 3D Web Development
✨ You have reached the end of the preview ✨
Go to the next level with Three.js and React Three Fiber!
Get full access to this lesson and the complete course when you enroll:
- 🔓 Full lesson videos with no limits
- 💻 Access to the final source code
- 🎓 Course progress tracking & completion
- 💬 Invite to our private Discord community
One-time payment. Lifetime updates included.