¿Estás interesado en controlar animaciones para modelos 3D? Recientemente, hay un número creciente de herramientas de generación de modelos 3D que utilizan IA, y entre ellas Meshy AI está atrayendo la atención como una herramienta que le permite crear fácilmente modelos 3D de alta calidad.
Sin embargo, para utilizar los modelos 3D generados en aplicaciones reales, debe dominar bibliotecas y herramientas específicas. En este artículo, explicaremos cómo usar React y Three.js
📺 Verifique la malla : puede verificarlo en la página oficial desde este enlace

¡Continuaremos creando lecciones y trabajos desde TypeScript X React Three Fiber en el futuro!
Haremos un anuncio en YouTube, así que suscríbase a nuestro canal de YouTube y espere notificaciones.
📺 Mira YouTube : puedes verlo desde este enlace
Si desea saber qué puede hacer React Three Fiber, ¡consulte lo siguiente!
¡Tenemos obras fáciles de usar disponibles!
- Traté de hacer que Bears caminara con React x tres.js!
- Intenté hacer que un viejo baile en React x tres.js!
- ¡Traté de mostrar un modelo 3D con React x tres.js!
- Hice un botón 3D que explota en React x tres.js!
- Reaccione tres fibra x drei x Introducción al mecanografiado! ¡Fondo 3D de estilo Poke Poke hecho con objetos estándar!
Demostración de pantalla de modelo 3D
Puede ver la demostración del producto terminado en el video a continuación.
📺 Mire la demostración en YouTube : puede verlo desde este enlace

Además, el código fuente para este proyecto está disponible en GitHub.
¡Descargue el código y pruébelo!
💾 Repositorio de GitHub : ¡verifique el código fuente en este enlace
Si te estás preguntando: "Lo he visto, ¿cómo lo hago?", ¡No te preocupes!
En este artículo, explicaremos paso a paso cómo ver este modelo 3D.
Técnicas necesarias y biblioteca de claves
Este proyecto utiliza las siguientes tecnologías y bibliotecas: aquí hay una breve explicación de cada rol.
- Reaccionar
- Biblioteca para el desarrollo front-end
- Construcción eficiente de la interfaz de usuario con diseño basado en componentes
- Tres.js
- Una biblioteca para dibujar gráficos 3D en la web
- Hace que sea fácil manejar operaciones de webgl complejas
- Reaccionar tres fibra
- Biblioteca de envoltura para manejar tres.js en React
- Puede aprovechar las potentes características de tres.js en el estilo de desarrollo React
- Reaccionar thee drei
- Reaccionar tres biblioteca de extensión de fibra
- Reaccionar tres biblioteca de extensión de fibra
- De malla
- Un servicio que le permite generar fácilmente modelos 3D de alta calidad utilizando AI
Preparación ambiental
Esta sección proporciona la configuración inicial para su proyecto. Cree una aplicación React usando el comando NPX, instale las bibliotecas requeridas y organice la estructura de carpetas.
Creando una aplicación React
Primero, cree una aplicación React usando el comando NPX.
npx create react-app meshy-3d-model-animation -template typeScript
Meshy-3D-Model-Animathion
es el nombre del proyecto-template
use una plantilla habilitada para typeScript especificando
Instalación de las bibliotecas requeridas
Instale React Three Fiber y otras bibliotecas.
CD Meshy-3D-Model-Animathion NPM Instale tres @React-Three/Fiber @React-Three/Drei
- Tres : tres.js cuerpo principal
- @react-three/fibra : un envoltorio para usar tres.js con React
- @React-Three/Drei : ayudantes útiles como controles de cámara y dibujo de texto
Revisar la estructura de la carpeta y eliminar archivos innecesarios
Organice y agregue carpetas del estado inicial de la siguiente manera:
Básicamente, es el valor predeterminado, pero para los archivos que no sabe, consulte GitHub.
Meshy-3D-Model-Animation/ ├── node_modules/ ├── públicos/ ├── modelos/ // modelos 3D y archivos relacionados ├── Tío_glb/ // Carpeta de modelos 3D ├── Animation_gangnam_groove_withskin.glb // Glb Archivos con Animación de baile ├─ Animation_pod_baby_groove_withskin.glb. // archivos GLB con animación de baile ├── animation_superlove_pop_dance_withskin.glb // archivos glb con animación de baile ├iqute └── ThreedDancingUncle.tsx // páginas de animación 3D │ │ └── index.ts // archivo de índice para exportar páginas │ ├── aplup.tsx // puntos de entrada de aplicaciones │ ├ ├iqu. paquete.json // Configuración del proyecto ├── tsconfig.json // Configuración de mecanografiado └── Readme.md // Descripción general del proyecto
Los archivos a modificar esta vez son los siguientes:
App.tsx
: puntos de entrada de la aplicaciónpáginas> index.ts
: archivo de índice para exportar la página a.páginas/threeddancinguncle
: La carpeta que se creará esta vezThredDancingUncle.tsx
: componente de la página principal.
Generar modelos 3D con malla
Esta vez, el modelo 3D utilizará un servicio de generación automática de IA llamado Meshy.
El enlace está a continuación, así que consultelo.
200 créditos por mes están disponibles de forma gratuita.
📺 Verifique la malla : puede verificarlo en la página oficial desde este enlace

Genere modelos 3D con modelos de generación de texto
Esta vez, generaremos un modelo con texto.
Seleccione "nuevo modelo".

Quería que mi hombre bailara, así que decidí "todo el cuerpo de un detective de mediana edad real con los brazos extendidos".
Después de esto, deberá configurar sus articulaciones y otras cosas, por lo que es mejor mantener los brazos lo más lejos posible de su cuerpo.

Esta vez intentaré usar la parte superior izquierda.
Seleccione y seleccione Verificar Textura y Remesh.

Esto generará un modelo similar al modelo que seleccionó.

A continuación, seleccione Animate> Rigging para agregar animación.

Esta vez, dado que somos humanos, debemos elegir humanoides.

No creo que haya ninguna necesidad de cambiar la siguiente pantalla, pero me metí un poco con mi altura.

Si establece esto bien, la animación será hermosa.
Una vez que haya configurado las juntas, verifíquela.

Esto generará un modelo 3D animado.
Por defecto, hay una animación para caminar.

Agregar animaciones
Esta vez, agregaremos múltiples animaciones de baile.

Agregue múltiples bailes de su elección con el botón Agregar.

Por defecto, se incluye ejecutar, pero puede ver que hay otros tres bailes además de eso.

Descargar en formato GLB
Una vez que haya creado un modelo 3D y haya agregado animaciones, descárguelo usando GLB.
En este momento, consulte todas las animaciones.

Esto generará un archivo GLB para cada animación como se muestra a continuación.
El archivo GLB viene con un conjunto de modelos y animaciones 3D, por lo que el archivo del modelo no existe.

Asegúrese de almacenar archivos GLB en público.
Esta vez, se almacena a continuación.
Meshy-3D-Model-Animation/ ├── node_modules/ └── públicos/ └── modelos/ // modelos 3D y archivos relacionados └── Tío_glb/ // Carpeta de modelos 3D ├── Animation_gangnam_groove_withskin.glb // Glb Archivos con Animación de baile ├─ Animation_pod_baby_groove_withskin.glb. // archivos GLB con animación de baile └── animation_superlove_pop_dance_withskin.glb // archivos glb con animación de baile
Explicación detallada del código fuente para cada paso
En las siguientes secciones, explicaremos en detalle las cinco partes a continuación en orden.
- Importe módulos básicos para React y tres.js.
- Importe
GLTFLOCKER
yExrLoader
- Use
OrbitControls
- constantes relacionados con modelos y animaciones .
- Defina lo siguiente:
- Lista de archivos de animación : mantiene los nombres y rutas de múltiples archivos de animación en un formato de lista.
- Predeterminado de la cámara : define la posición de la cámara para que pueda ver todo el modelo.
- Configuración de luz : establezca la intensidad y la posición de la luz ambiental, la luz direccional y la luz de punto.
- Ruta de fondo HDRI : especifique el archivo de imagen HDRI para el fondo.
- Cargar imágenes HDRI usando
ExrLoader
- Aplique el HDRI cargado de la siguiente manera:
escena.background
: establezca una imagen HDRI en el fondo de toda la escena.escena.ambient
: HDRI se usa para la reflexión y la iluminación del modelo.
Gltfloader
Cargue el modelo usando- Cargue la animación inicial (
default_animation_file
- Escalar, rotar y colocar el modelo importado y colocarlo en la escena
- Cargue la animación inicial (
Animationmixer
Uso para administrar animaciones- Aplicar animación a los modelos importados
- La animación de reproducción actualmente React's State (
USESTate
) y conmutable utilizando operaciones de usuario.
- Use
Useframe
- Configuración de toda la aplicación con React
- Dibuja los siguientes elementos en lienzo
Componente
de fondo- Modelos y animaciones (
del modelo
) - Luces (luz ambiental, luz direccional, luz de punto)
- Coloque el botón de alternación de animación
- Al presionar el botón, cambiará al archivo de animación especificado.
Verifique toda la fuente
A continuación se muestra el código fuente completo que controla el modelo 3D en formato GLB generado usando Meshy AI, que se crea en este artículo, utilizando React y Three.js Todo el código está juntos, por lo que es fácil tener una idea de cómo funciona.
Si desea ver otras fuentes, consulte GitHub.
💾 Repositorio de GitHub : ¡verifique el código fuente en este enlace
import './app.css'; import {ThredDancingUncle} de './pages'; función app () {return (<div className="App"><ThreeDDancingUncle /></div> ); } Exportar aplicación predeterminada;
Importar ThreeddancingUncle de "./threeddancingunceNcle/threeddancingUncle"; Exportar {ThredDancingUncle}
// ==== // Parte 1: Importe los módulos requeridos // ==== Import React, {useState, UseeFectect} de "React"; import {Canvas, UseFrame, Usethree} de "@react-three/fiber"; import {OrbitControls} de "@react-three/drei"; import {gltfloader} de "tres/ejemplos/jsm/loaders/gltfloader"; import {exrLoader} de "tres/ejemplos/jsm/loaders/exrLoader"; importar * como tres de "tres"; // ==== // PART 2: Defining constants // ==== // List of animation files // Store the name and path of each animation const ANIMATION_FILES = [ { name: "Pod Baby Groove", path: "/models/uncle_glb/Animation_Pod_Baby_Groove_withSkin.glb" }, { name: "Gangnam Groove", path: "/Models/Uncle_Glb/animation_gangnam_groove_withskin.glb"}, {nombre: "Pop dance", ruta: "/models/undle_glb/animation_superlove_pop_dance_withskin.glb"},]; // ruta para modelar archivo const default_animation_file = animation_files [0] .path; // ruta a la imagen HDRI (para fondo) const hdri_file = "/hdri/cobblestone_street_night_4k.exr"; // Posición inicial de la cámara (x, y, z) const inicial_camera_position = new tres.vector3 (10, 4, 10); // Aumento de la escala del modelo const model_scale = 4; // ángulo de rotación del modelo inicial (sobre el eje y, en radianos) const model_rotation_y = -1; // Posición inicial del modelo (x, y, z) const model_position = new tres.vector3 (0, -2, 0); // Configuración de luz // Definir la posición ambiental, direccional y de la luz de punto y la intensidad consts const_settings = {ambient: {intensidad: 0.5}, // intensidad de luz ambiental direccional: {posición: new thre.Vector3 (10, 20, 10), intensidad: 1.5}, // // la posición e intensidad del punto de luz direccional: {posición: {New New Tres. 1.5}, // La posición e intensidad de la luz puntual}; // ===== // Parte 3: Configuración de fondo // ===== // Establecer el fondo de la escena con el fondo de la imagen HDRI constante: react.fc = () => {const {gl, escena} = usetre (); useEffect (() => {const hdrLoader = new ExrLoGer (); const PMremGenerator = new Three.pmremGenerator (GL); PMremGenerator.compileequirectangularShader (); HDLoader.Load (HDRI_FILE, (textura) => {textura.mapping = tres.equirectangularLeCtectionMapping; ConstMapeps; pmremGenerator.fromequirectangular (texture) .Texture; regresar nulo; // sin objetivo de representación}; // ==== // Parte 4: modelos y animaciones // ==== // Cargando el modelo principal y administrar el modelo de constante de animación: react.fc <{currentanimation: string}> = ({currentanimation}) => {const {cámara} = usethree (); const [modelo, setmodel] = useState<THREE.Group | null> (nulo); const [mezclador, setmixer] = useState<THREE.AnimationMixer | null> (nulo); // Load model useEffect(() => { const loader = new GLTFLoader(); loader.load(DEFAULT_ANIMATION_FILE, (gltf) => { const { scene: loadedScene } = gltf; loadedScene.scale.set(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE); // Set the model size loadedScene.rotateY(MODEL_ROTATION_Y); // Establezca la rotación inicial de la rotación. 0); / Ver el centro del modelo}); // Toggle Animation UseEffect (() => {if (! Model || Action.Reset (). Fadein (0.5) .Play (); // Actualizar la animación UseFrame ((_, delta) => {if (mezcler) mezcler.update (delta);}); ¿Modelo de regreso?<primitive object={model} /> : nulo; // Show Model}; // ==== // Parte 5: Componentes principales // ===== // Configuración de toda la aplicación const ThreedDancingUncle: react.fc = () => {const [currentAnimation, setCurrentanimation] = useState (animation_files [0] .path); devolver (<div style={{ width: "100vw", height: "100vh", position: "relative" }}> {/ * Botón de selección de animación */} <div style={{ position: "absolute", top: "10px", left: "10px", zIndex: 10, // ボタンをCanvasの上に表示 }} > {ANIMATION_FILES.map((anim, index) => ( <button key={index} onClick={() =>setCurrentAnimation(anim.path)} // Toggle animation style={{ margin: "5px", padding: "10px", fontSize: "14px", background: "rgba(255, 255, 255, 0.8)", border: "1px solid #ccc", borderRadius: "5px", cursor: "puntero",}}> {anim.name}</button> ))}</div><Canvas> {/ * Componente de fondo */}<Background /> {/ * Modelos y animaciones */}<Model currentAnimation={currentAnimation} /> {/ * Configuración de luz */} <ambientLight intensity={LIGHT_SETTINGS.ambient.intensity} /><directionalLight position={LIGHT_SETTINGS.directional.position} intensity={LIGHT_SETTINGS.directional.intensity} /><pointLight position={LIGHT_SETTINGS.point.position} intensity={LIGHT_SETTINGS.point.intensity} /> {/ * Operación de la cámara */}<OrbitControls /></Canvas></div> ); }; Exportar predeterminado threeddancinguncle;
Parte 1: Importar módulos requeridos
Esto preparará los módulos necesarios para construir una escena 3D usando React y Three.js.
// ==== // Parte 1: Importe los módulos requeridos // ==== Import React, {useState, UseeFectect} de "React"; import {Canvas, UseFrame, Usethree} de "@react-three/fiber"; import {OrbitControls} de "@react-three/drei"; import {gltfloader} de "tres/ejemplos/jsm/loaders/gltfloader"; import {exrLoader} de "tres/ejemplos/jsm/loaders/exrLoader"; importar * como tres de "tres";
- Reaccionar
USESTATE
: Cambiar animaciones y administrar el estado.UseeFectect
: se ejecuta al inicializar un modelo o fondo.
- Reaccionar tres fibra
Lienzo
: un contenedor para dibujar escenas 3D.UseFrame
: realiza el procesamiento de actualización de animación para cada cuadro.USETHREE
: Acceda a cámaras, escenas y renderizadores en tres.js.
- @React-Three/Drei
OrbitControls
: un componente conveniente que permite al usuario controlar libremente (rotar, Zoom, mover) la cámara.
- Tres.js
GLTFLOCKER
: Cargador para cargar modelos 3D en formato GLB.ExrLoader
: Carga las imágenes HDRI y las usa como fondo y luz ambiental.Tres.vector3
: operación vectorial (por ejemplo, cámara o posición de luz).Tres.PmremGenerator
: Convierte HDRI como un mapa de entorno para lograr una iluminación realista.
Parte 2: Definición constante
El siguiente es la definición constante.
La definición de constantes gestiona centralmente los valores utilizados dentro de su aplicación, mejorando la reutilización y la legibilidad. Dado que los valores de configuración para modelos y escenas 3D se usan en todas partes en el código, lo que hace que las constantes sean más fáciles de mantener.
// ==== // PART 2: Defining constants // ==== // List of animation files // Store the name and path of each animation const ANIMATION_FILES = [ { name: "Pod Baby Groove", path: "/models/uncle_glb/Animation_Pod_Baby_Groove_withSkin.glb" }, { name: "Gangnam Groove", path: "/Models/Uncle_Glb/animation_gangnam_groove_withskin.glb"}, {nombre: "Pop dance", ruta: "/models/undle_glb/animation_superlove_pop_dance_withskin.glb"},]; // ruta al archivo modelo const default_animation_file = animation_files [0] .path; // ruta a la imagen HDRI (para fondo) const hdri_file = "/hdri/cobblestone_street_night_4k.exr"; // Posición inicial de la cámara (x, y, z) const inicial_camera_position = new tres.vector3 (10, 4, 10); // Aumento de la escala del modelo const model_scale = 4; // ángulo de rotación inicial del modelo (sobre el eje y, en radianos) const model_rotation_y = -1; // Modelo de posición inicial (x, y, z) const model_position = new tres.vector3 (0, -2, 0); // Light settings // Define the position and intensity of ambient, directional, and point light const LIGHT_SETTINGS = { ambient: { intensity: 0.5 }, // Ambient light intensity directional: { position: new THREE.Vector3(10, 20, 10), intensity: 1.5 }, // / The position and intensity of the directional light point: { position: new THREE.Vector3(0, 10, 0), intensity: 1.5}, // La posición e intensidad de la luz puntual};
Dependiendo del modelo 3D que genere, pueden ser necesarios ajustes finos, así que utilice lo siguiente como referencia para jugar con los números.
- Lista de archivos de animación
- Definir nombres y rutas de animación en pares para administrar múltiples animaciones.
- Ruta de imagen HDRI para el fondo
- Especifique la ruta a la imagen HDRI que se utilizará como fondo de la escena o el mapa del entorno.
- Configuración inicial de la cámara
- Defina la posición inicial y la orientación de la cámara y ajuste todo el modelo para que parezca apropiado.
- Configuración del modelo
- Define la escala (magnitud), el ángulo de rotación y la posición inicial del modelo.
- Configuración de luz
- Defina la posición e intensidad de las luces ambientales, direccionales y de apunte para iluminar adecuadamente toda la escena.
Parte 3: Configuración de fondo
Use imágenes HDRI para aplicar fondos realistas y naturales y luz ambiental a su escena.
Las imágenes HDRI se pueden descargar de forma gratuita de Poly Haven Debes elegir tu fondo favorito.
// ==== // Parte 3: configurar el fondo // ==== // Establezca el fondo de la escena con el fondo de la imagen HDRI constante: react.fc = () => {const {gl, escena} = usethree (); useEffect (() => {const hdrLoader = new ExrLoGer (); const PMremGenerator = new Three.pmremGenerator (GL); PMremGenerator.compileequirectangularShader (); HDLoader.Load (HDRI_FILE, (textura) => {textura.mapping = tres.equirectangularLeCtectionMapping; ConstMapeps; pmremGenerator.fromequirectangular (texture) .Texture; regresar nulo; // sin objetivo de representación};
- Cargando imágenes HDRI
- Cargue imágenes HDRI usando
ExrLoader
- Convierta HDRI en mapas de medio ambiente utilizando
PMRemGenerator
- Cargue imágenes HDRI usando
- Aplicando fondos
- la imagen HDRI cargada como el fondo de la escena (
escena.background
). - un mapa de entorno (
escena.ambient
) y se usa para reflejar e iluminar modelos.
- la imagen HDRI cargada como el fondo de la escena (
- Gestión de la memoria
- Después de aplicar imágenes HDRI a la escena, libere adecuadamente los recursos innecesarios (texturas y generadores).
Parte 4: configuración de tierra
Carga modelos 3D en la escena, lo que le permite controlar y alternar múltiples animaciones.
La animación se actualiza sin problemas para cada cuadro, lo que permite movimientos en tiempo real.
// ==== // Parte 4: Modelos y animación // ==== // Cargando el modelo principal y administrar el modelo de constante de animación: react.fc <{currentanimation: string}> = ({currentAnimation}) => {const {cámara} = usethree (); const [modelo, setmodel] = useState<THREE.Group | null> (nulo); const [mezclador, setmixer] = useState<THREE.AnimationMixer | null> (nulo); // Load model useEffect(() => { const loader = new GLTFLoader(); loader.load(DEFAULT_ANIMATION_FILE, (gltf) => { const { scene: loadedScene } = gltf; loadedScene.scale.set(MODEL_SCALE, MODEL_SCALE, MODEL_SCALE); // Set the model size loadedScene.rotateY(MODEL_ROTATION_Y); // Establezca la rotación inicial de la rotación. 0); / Ver el centro del modelo}); // Toggle Animation UseEffect (() => {if (! Model || Action.Reset (). Fadein (0.5) .Play (); // Actualizar la animación UseFrame ((_, delta) => {if (mezcler) mezcler.update (delta);}); ¿Modelo de regreso?<primitive object={model} /> : nulo; // Ver modelo};
- Cargando el modelo
- Cargue un modelo 3D en formato GLB usando
GLTFLOCKER
- Establezca la escala, la posición y la rotación del modelo adecuadamente y agréguela a la escena.
- Cargue un modelo 3D en formato GLB usando
- Gestión de animaciones
- La animación se aplica al modelo usando
AnimationMixer
- Se ha implementado una función de conmutación de animación de acuerdo con las operaciones del usuario.
- La animación se aplica al modelo usando
- Actualizaciones de cuadro por cuadro
- Use
UseFrame
- Progreso suavemente a través de la animación basada en el tiempo transcurrido (delta).
- Use
- Gestión de estado
- Use
el USESTATE
de React - Refleja animaciones seleccionadas por el usuario en tiempo real.
- Use
Parte 5: Componente principal
Use React para configurar toda la aplicación e integrar cada característica (fondo, modelo, animación, configuración de luz).
También enumeraremos UIS operables por el usuario (como botones de conmutación de animación) aquí.
// ==== // Parte 5: Componente principal // ===== // Configuración de toda la aplicación const ThreedDancingUncle: react.fc = () => {const [currentAnimation, setCurrentanimation] = useState (animation_files [0] .path); devolver (<div style={{ width: "100vw", height: "100vh", position: "relative" }}> {/ * Botón de selección de animación */} <div style={{ position: "absolute", top: "10px", left: "10px", zIndex: 10, // ボタンをCanvasの上に表示 }} > {ANIMATION_FILES.map((anim, index) => ( <button key={index} onClick={() =>setCurrentAnimation(anim.path)} // Toggle animation style={{ margin: "5px", padding: "10px", fontSize: "14px", background: "rgba(255, 255, 255, 0.8)", border: "1px solid #ccc", borderRadius: "5px", cursor: "puntero",}}> {anim.name}</button> ))}</div><Canvas> {/ * Componente de fondo */}<Background /> {/ * Modelos y animaciones */}<Model currentAnimation={currentAnimation} /> {/ * Configuración de luz */} <ambientLight intensity={LIGHT_SETTINGS.ambient.intensity} /><directionalLight position={LIGHT_SETTINGS.directional.position} intensity={LIGHT_SETTINGS.directional.intensity} /><pointLight position={LIGHT_SETTINGS.point.position} intensity={LIGHT_SETTINGS.point.intensity} /> {/ * Operación de la cámara */}<OrbitControls /></Canvas></div> ); }; Exportar predeterminado threeddancinguncle;
- Instalación de lienzo
- Cree un marco para dibujar una escena 3D usando
el componente de lona
- Cree un marco para dibujar una escena 3D usando
- Integrando cada característica
- Agregue un fondo (
el componente de fondo
- Dibujar modelos y animaciones (
del modelo
- La configuración de luz (luz ambiental, luz direccional, luz de punto) se colocan en la escena.
- Agregue un fondo (
- Colocación de la interfaz de usuario
- Implementa un botón que alterna animaciones seleccionadas por el usuario utilizando la administración de estado de React (
useState
- La interfaz de usuario se
lienzo
, lo que lo convierte en un diseño que es fácil de operar.
- Implementa un botón que alterna animaciones seleccionadas por el usuario utilizando la administración de estado de React (
- Acción del usuario
- Puede cambiar de animaciones usando los botones y reproducir la animación seleccionada en tiempo real.
por último
Se han completado todos los pasos de "controlar modelos 3D en formato GLB generados con IA malta usando React y Three.js". ¡Ahora puede experimentar la diversión de ejecutar modelos 3D generados usando la herramienta AI (Meshy) usando React y Three.js!
¡Use Meshy para ver varios modelos 3D!
📺 Mire la demostración en YouTube : puede verlo desde este enlace
Si le resulta útil este tutorial, suscríbase a nuestro canal de YouTube y dale una calificación alta.

Además, el código fuente para este proyecto está disponible en GitHub.
¡Descargue el código y pruébelo!
💾 Repositorio de GitHub : ¡verifique el código fuente en este enlace
Si lo encontró útil, ¡suscríbase a nuestro canal!
¡Continuaremos creando lecciones y trabajos desde TypeScript X React Three Fiber en el futuro!
Haremos un anuncio en YouTube, así que suscríbase a nuestro canal de YouTube y espere notificaciones.
📺 Mira YouTube : puedes verlo desde este enlace
Si desea saber qué puede hacer React Three Fiber, ¡consulte lo siguiente!
¡Tenemos obras fáciles de usar disponibles!
- Traté de hacer que Bears caminara con React x tres.js!
- Intenté hacer que un viejo baile en React x tres.js!
- ¡Traté de mostrar un modelo 3D con React x tres.js!
- Hice un botón 3D que explota en React x tres.js!
- Reaccione tres fibra x drei x Introducción al mecanografiado! ¡Fondo 3D de estilo Poke Poke hecho con objetos estándar!