Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

97
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda