Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

96
Vistas
Objeto en órbita webgl con cámara

Estoy jugando en webgl y he creado un cargador gltf simple, que permite mover el objeto principal. Puedo orbitar el objeto, pero solo permite ver la parte frontal. Puedo orbitar el objeto, pero solo permite ver el frente.

Ahora arreglé eso usando rotación y multiplicación, pero quiero usar la función lookAt, para hacerlo más simple, y también para tener una órbita de inclinación (arriba-abajo). Actualmente, puedo rotar la cámara (orbitar) el objeto principal, pero solo en guiñada.

Mi clase de cámara tiene la matriz de transformación y la matriz de proyección. Luego hago una matriz de vista y la multiplico con la matriz de proyección, luego la guardo en la matriz de transformación. Pero esto solo permite la rotación de guiñada. Si agrego inclinación, la cámara se mueve hacia arriba y hacia abajo, pero no gira para mantener el objeto en el centro.

Estoy pensando que esto podría hacerse con la función lookAt, pero ¿cómo obtendría la posición de origen de la cámara, ya que requiere un vector, pero solo tengo la matriz de transformación principal? Tengo vectores de transformación, rotación y escala, pero como estoy multiplicando matrices, el resto es 0.

 // saves camera options into c constaint const c = this; let camX = Math.sin(c.yaw) * c.distance; //let camY = Math.cos(c.pitch) * c.distance; let camZ = Math.cos(c.yaw) * c.distance; var viewMatrix = mat4.create(); // c.matrix is the camera transform matrix mat4.invert(viewMatrix, c.matrix); mat4.multiply(c.matrix, c.projection, viewMatrix); mat4.fromTranslation(c.matrix, vec3.fromValues(camX, 0, camZ)); const vec = vec3.create(); // model is the object to orbit around vec3.add(vec, vec3.clone(model.translation), vec3.fromValues(camX, 0, camZ)); var moveMatrix = mat4.create(); mat4.fromTranslation(moveMatrix, vec); mat4.multiply(c.matrix, c.matrix, moveMatrix); var rotMatrix = mat4.create(); mat4.fromYRotation(rotMatrix, c.yaw); mat4.multiply(c.matrix, c.matrix, rotMatrix);
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda