fix: rotate head using better angles

This commit is contained in:
Laureηt 2022-12-15 08:22:48 +01:00
parent 3a35f3dcf8
commit 8a84863e30
No known key found for this signature in database
GPG key ID: D88C6B294FD40994
7 changed files with 10 additions and 15 deletions

1
.vscode/launch.json vendored
View file

@ -6,7 +6,6 @@
"type": "python", "type": "python",
"request": "launch", "request": "launch",
"program": "${workspaceFolder}/src/main.py", "program": "${workspaceFolder}/src/main.py",
// "program": "${workspaceFolder}/bite.py",
"console": "integratedTerminal", "console": "integratedTerminal",
"justMyCode": true, "justMyCode": true,
"env": { "env": {

View file

@ -31,4 +31,4 @@ class Crown:
) )
# draw texture # draw texture
blitRotate(screen, texture_scaled, crown_pos, self.env.angle) blitRotate(screen, texture_scaled, crown_pos, self.env.angle_x)

View file

@ -50,4 +50,4 @@ class Ear:
) )
# draw texture # draw texture
blitRotate(screen, texture_scaled, moustache_pos, self.env.angle, pivot) blitRotate(screen, texture_scaled, moustache_pos, self.env.angle_x, pivot)

View file

@ -26,9 +26,6 @@ class Head:
head_top = landmark2vec(face_landmarks.landmark[LANDMARKS[1]], screen) head_top = landmark2vec(face_landmarks.landmark[LANDMARKS[1]], screen)
head_bottom = landmark2vec(face_landmarks.landmark[LANDMARKS[3]], screen) head_bottom = landmark2vec(face_landmarks.landmark[LANDMARKS[3]], screen)
angle = (head_bottom - head_top).angle_to(pg.Vector2(0, 1))
self.env.angle = angle
height = (head_bottom - head_top).length() height = (head_bottom - head_top).length()
ratio = self.texture.get_width() / self.texture.get_height() ratio = self.texture.get_width() / self.texture.get_height()
@ -42,4 +39,4 @@ class Head:
) )
# draw texture # draw texture
blitRotate(screen, texture_scaled, head_pos, self.env.angle) blitRotate(screen, texture_scaled, head_pos, self.env.angle_x)

View file

@ -50,4 +50,4 @@ class Moustache:
) )
# draw texture # draw texture
blitRotate(screen, texture_scaled, moustache_pos, self.env.angle, pivot) blitRotate(screen, texture_scaled, moustache_pos, self.env.angle_x, pivot)

View file

@ -52,4 +52,4 @@ class Mouth:
) )
# draw texture # draw texture
blitRotate(screen, texture_scaled, mouth_pos, self.env.angle) blitRotate(screen, texture_scaled, mouth_pos, self.env.angle_x)

View file

@ -47,7 +47,6 @@ class Environment:
) # type: ignore ) # type: ignore
pg.display.set_caption("Projet APP") pg.display.set_caption("Projet APP")
self.angle = 0.0
self.size = (0.0, 0.0) self.size = (0.0, 0.0)
# create body parts # create body parts
@ -141,7 +140,7 @@ class Environment:
self.z.normalize_ip() self.z.normalize_ip()
# print horizontal angle to screen # print horizontal angle to screen
self.angle_x = self.x.angle_to(pg.math.Vector3(1, 0, 0)) self.angle_x = self.x.angle_to(pg.math.Vector3(0, 1, 0)) - 90
self.angle_y = self.x.angle_to(pg.math.Vector3(0, 0, 1)) - 90 self.angle_y = self.x.angle_to(pg.math.Vector3(0, 0, 1)) - 90
self.angle_z = self.y.angle_to(pg.math.Vector3(0, 0, 1)) - 90 self.angle_z = self.y.angle_to(pg.math.Vector3(0, 0, 1)) - 90
@ -195,8 +194,8 @@ class Environment:
# ) # )
# flip the image horizontally for a selfie-view display # flip the image horizontally for a selfie-view display
cv2.imshow("MediaPipe Face Mesh", self.frame) # cv2.imshow("MediaPipe Face Mesh", self.frame)
# cv2.imshow("MediaPipe Face Mesh", cv2.flip(self.frame, 1)) cv2.imshow("MediaPipe Face Mesh", cv2.flip(self.frame, 1))
def draw_avatar(self) -> None: def draw_avatar(self) -> None:
"""Draw the avatar on the screen.""" """Draw the avatar on the screen."""
@ -205,7 +204,7 @@ class Environment:
for part in self.body_parts.values(): for part in self.body_parts.values():
part.draw(self.screen) part.draw(self.screen)
self.screen.blit(self.screen, (0, 0)) # self.screen.blit(self.screen, (0, 0))
# self.screen.blit(pg.transform.flip(self.screen, True, False), (0, 0)) self.screen.blit(pg.transform.flip(self.screen, True, False), (0, 0))
pg.display.flip() pg.display.flip()