Tekstur

Starter pack

Tekstur adalah gambar yang digunakan untuk mewarnai permukaan sebuah mesh. Ini dapat digunakan untuk menambahkan detail ke objek 3D.

Sebuah tekstur diterapkan ke sebuah mesh menggunakan material. Material mendefinisikan bagaimana tekstur diterapkan ke mesh dan bagaimana berinteraksi dengan cahaya.

useTexture

useTexture hook dari Drei digunakan untuk memuat tekstur dari sebuah file. Ini mengembalikan objek Texture yang dapat digunakan dalam sebuah material.

Mari kita muat file tekstur dari starter pack yang terletak di 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>
    </>
  );
};

Tekstur diterapkan ke mesh menggunakan properti map dari material.

Tekstur pada kubus

Tekstur batu paving diterapkan pada kubus.

Seperti yang telah kita lihat dengan useGLTF, useTexture di balik layar menggunakan useLoader dengan TextureLoader untuk memuat tekstur.

Jika kita ingin mengubah skala tekstur, kita dapat menggunakan properti repeat dari tekstur:

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;
  // ...
};

Properti wrapS dan wrapT mendefinisikan bagaimana tekstur diulang pada mesh. Secara default, tekstur dibatasi pada tepi mesh. Di sini kita menggunakan RepeatWrapping untuk mengulang tekstur.

Tekstur pada kubus

Tekstur kita diulang 3 kali pada kubus.

Jika sebaliknya kita ingin meregangkan tekstur, kita dapat mengurangi nilai repeat:

Three.js logoReact logo

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
Unlock the Full Course – Just $85

One-time payment. Lifetime updates included.