Computer Graphics/HumanGL

HumanGL - 4. 문제 발견

surkim 2024. 10. 17. 17:34

사람을 그리고 테스트하자마자 문제가 발생했다.

0

 

static float scale = 1.0f;
static float dir = 0.01f;
scale += dir;
if (scale >= 2.0f)
    dir = -0.01f;
if (scale <= 0.5f)
    dir = 0.01f;
scaleModel = sglm::scale(scaleModel, sglm::vec3(scale, scale, scale));

렌더링될 때마다 스케일을 변하게 해줬는데, 영상에서 볼 수 있듯이 각각의 오브젝트가 동시에 커졌다. 자세히 살펴보면 위치는 고정된 상태로 크기만 변하는 걸 확인할 수 있다.

이 현상이 꽤 이상해서 돌려봤는데...

sglm::mat4 rotateModel = sglm::mat4(1.0f);
static float angle = 0.0f;
angle += 1.0f;
if (angle >= 360.0f)
    angle = 0.0f;
rotateModel = sglm::rotate(rotateModel, sglm::radians(angle), sglm::vec3(0.0f, 1.0f, 0.0f));

 

0
귀엽긴 하다

 

역시 예상대로 각각의 오브젝트들이 독립적으로 회전했다. 이 문제는 model 행렬을 계산하는 순서와 관련이 있는 것으로 보인다. 애니메이션을 제대로 만들기 전에 반드시 이 문제를 고쳐야 할 것 같다.