• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Webgl - Obracanie kamery i problem z osiami

0 głosów
197 wizyt
pytanie zadane 18 sierpnia 2021 w JavaScript przez Qjr Nowicjusz (120 p.)

Witam.

To mój pierwszy post na tym forum. Chciałbym się przywitać z wszystkimi użytkownikami tego wspaniałego forum.

Niestety moja wizyta podyktowana jest pewnym problemem na jaki napotkałem. Od pewnego czasu pisze bibliotekę obsługująca webgl i obecnie zabrałem się za pisanie kamery. Chciałem to zrobić po najmniejszej linii oporu. Miała działać tak:

1. Generuje macierz widoku perspektywicznego.

const aspect = GL.canvas.clientWidth / GL.canvas.clientHeight;
const projectionMatrix = m4.perspective(fieldOfViewRadians, aspect, 1, 2000);

2. Ustawiam kamerę na jakiejś pozycji i ustawiam punkt patrzenia na wprost. 

cameraPosition = [pos_x, pos_y, pos_z];
cameraMatrix = m4.lookAt(cameraPosition, this.target, up);

3. Modyfikuje za pomocą macierzy obrotu widok w dwóch płaszczyznach.

cameraMatrix = m4.zRotate(cameraMatrix, angle_z); 
viewMatrix = m4.yRotate(cameraMatrix, angle_y); // ta oś sprawia kłopot

4.Potem wszystko składam:

 viewMatrix = m4.inverse(viewMatrix);// Make a view matrix from the camera matrix.
 matrix = m4.multiply(projectionMatrix, viewMatrix);

W teorii wydaje się że powinno działać i faktycznie działa dla jednej osi ale problem pojawia się gdy dodaje 2 oś, Nagle obraz zaczyna dziwnie skręcać przy próbie ruchu kamery. Podejrzewam że oś nie jest sztywno połączona z  kamerą lub też pierwsza modyfikacja ją zmienia. Czy ktoś wie jak to naprawić? I czy mógłby to tak jakoś prosto mi wyjaśnić?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
pytanie zadane 19 stycznia 2019 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
1 odpowiedź 388 wizyt
pytanie zadane 4 grudnia 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
2 odpowiedzi 482 wizyt
pytanie zadane 30 stycznia 2017 w JavaScript przez Mjollnir951 Użytkownik (770 p.)

93,771 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,371 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...