사람을 그리고 테스트하자마자 문제가 발생했다.
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
행렬을 계산하는 순서와 관련이 있는 것으로 보인다. 애니메이션을 제대로 만들기 전에 반드시 이 문제를 고쳐야 할 것 같다.
'Computer Graphics > HumanGL' 카테고리의 다른 글
HumanGL - 6. Animation 적용 (0) | 2024.10.23 |
---|---|
HumanGL - 5. transform 행렬 계산식 변경 (0) | 2024.10.18 |
HumanGL - 3. 사람 그리기 (0) | 2024.10.17 |
HumanGL - 2. Scale 적용 해보기 (1) | 2024.10.17 |
HumanGL - 1. 초기 설정, 상자 띄우기 (1) | 2024.10.17 |