Cómo integrar y visualizar modelos 3D en Ionic con Angular.

En este artículo, aprenderás a agregar objetos 3D a tu proyecto en Ionic para enriquecer y mejorar tus aplicaciones móviles. Descubre paso a paso cómo integrar elementos tridimensionales y ofrecer una experiencia más dinámica y atractiva a tus usuarios.

1.Ejecuta el siguiente comando para crear un nuevo proyecto en Ionic. Selecciona Angular y NgModules.

C:\Users\User>ionic start twebbs3D tabs --capacitor

2. Añade Three js a tu proyecto:

C:\Users\User>cd twebbs3D
C:\Users\User\twebbs3D>npm install three

3. Agrega tu modelo a tu proyecto. En este ejemplo hemos copiado y pegado el archivo cupmaterial.glb en nuestra carpeta assets. Asegúrate de usar la extensión correcta (.glb).

modelo-3d

4. Crea un componente para cargar tu modelo 3D. Para generar el componente, usa el siguiente comando, reemplazando “vista3d” con el nombre de tu componente:

C:\Users\User\twebbs3D>ionic generate component vista3d

5. Haz las importaciones de las dependencias necesarias a tu componente, como Three.js y otros módulos requeridos:

ElementRef: Es una herramienta proporcionada por Angular para interactuar con el DOM. Por lo tanto, es esencial para manipular elementos directamente en tus aplicaciones.

ViewChild: Generalmente, se usa para tener acceso directo a componentes secundarios o elementos del DOM. Además, facilita la comunicación y la manipulación de estos componentes desde el componente principal.

GLTFLoader: Nos permite cargar nuestro modelo 3D. Así, se convierte en una herramienta crucial para la visualización de modelos tridimensionales en aplicaciones web y móviles.

OrbitControls: Nos ayuda a manipular las escenas 3D, lo que hace posible que podamos ver un objeto desde diferentes ángulos. Por consiguiente, mejora la interactividad y la experiencia del usuario al explorar modelos 3D.

Nuestras importaciones quedarán así:

import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';

Si tienes un error con las importaciones puedes correr el siguiente comando:

C:\Users\User\twebbs3D>npm install --save-dev @types/three

Tambien es posible que debas incluir “typeRoots”: [“node_modules/@types”] en tu archivo tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "typeRoots": ["node_modules/@types"],
    "baseUrl": "./",

6. Carga tu modelo en tu componente.

export class Vista3dComponent  implements OnInit {
  @ViewChild('showContainer', { static: true }) rendererContainer!: ElementRef;
  constructor() { }

  ngOnInit(): void {
    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
    const renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setSize(window.innerWidth * 1, window.innerHeight * 0.8); // Ajusta el tamaño
    this.rendererContainer.nativeElement.appendChild(renderer.domElement);

    renderer.setClearColor(0x555555); // Establece el color de fondo

    // A continuación debes indicar la ruta de tu modelo
    const loader = new GLTFLoader();
    loader.load('assets/cupmaterial.glb', function (glb) { 
    
     // Tu objeto
     const object = glb.scene;
     console.log(object)
     
 
  object.scale.set(0.2, 0.2, 0.2); // Estable la escala que necesites.
    // Así añadimos el objeto en nuestra escena.
   if (object) {
      scene.add(object);
    }
  });
  
  const light = new THREE.PointLight(0xffffff, 1);
  light.position.set(2, 2, 5);
  scene.add(light);
  camera.position.z = 4;

  const light2 = new THREE.AmbientLight( 0xffffff, 1); // soft white light
scene.add( light2 );

    const controls = new OrbitControls(camera, renderer.domElement);
    controls.enableDamping = true; // optional smooth camera movement
    
    const animate = function () {
      requestAnimationFrame(animate);
      controls.update(); // update controls in animation loop
      renderer.render(scene, camera);
    };
    animate();
  }
}

7. Muestra tu modelo 3D en tu aplicación.

Importa tu componente en el archivo tab1.module.ts (o en el archivo del módulo donde deseas mostrarlo). No olvides agregar tu componente en la sección de declarations, como se muestra a continuación:

Incorpora el componente en el archivo del módulo específico para asegurar su correcta visualización en tu aplicación Ionic.

import { Vista3dComponent } from '../vista3d/vista3d.component';

@NgModule({
  imports: [
    IonicModule,
    CommonModule,
    FormsModule,
    ExploreContainerComponentModule,
    Tab1PageRoutingModule
  ],
  declarations: [Tab1Page, Vista3dComponent]
})
export class Tab1PageModule {}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Descubre más desde

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo