꾸준히 개발하자

고정 헤더 영역

글 제목

메뉴 레이어

꾸준히 개발하자

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (115)
    • Computer Graphics (58)
      • SCOP (9)
      • HumanGL (9)
      • Graphics Pipeline (10)
      • ALEngine (21)
      • Hiking (9)
    • 자료구조와 알고리즘 (43)
      • 백준 (14)
      • 자료구조, 알고리즘 (29)
    • Java 공부 (5)
      • Java 공부 (1)
      • Java 주차별 공부 (3)
      • 더 자바, 코드를 테스트하는 다양한 방법 (1)
    • 리눅스 (8)
      • 리눅스 기초 (8)

검색 레이어

꾸준히 개발하자

검색 영역

컨텐츠 검색

Computer Graphics/HumanGL

  • HumanGL: 프로젝트를 하며 느낀 점 - (9)

    2024.10.21 by Banjosh

  • HumanGL: Jump 애니메이션 구현 - (8)

    2024.10.21 by Banjosh

  • HumanGL: Walk, Rotate, Stop 애니메이션 구현 - (7)

    2024.10.19 by Banjosh

  • HumanGL: Human Model에 애니메이션을 적용하기 위한 준비 - (6)

    2024.10.19 by Banjosh

  • HumanGL: 카메라 제어 - (5)

    2024.10.14 by Banjosh

  • HumanGL: 계층적 모델링과 변환 행렬 스택 구현 - (4)

    2024.10.14 by Banjosh

  • HumanGL: 계층적 모델링과 변환 행렬 스택 - (3)

    2024.10.09 by Banjosh

  • HumanGL: 프로젝트 진행 계획 - (2)

    2024.10.09 by Banjosh

HumanGL: 프로젝트를 하며 느낀 점 - (9)

이번 HumanGL 프로젝트는 매우 재미있었다. 더 많은 신체 부위를 추가하거나 동작을 확장해보고 싶었지만, 다음 프로젝트를 준비하기 위해 이 정도에서 마무리하기로 결정했다. 이번 글에서는 프로젝트를 진행하며 느낀 점을 정리해본다.1. 설계의 중요성 이번 과제에서는 부위별이나 행동별 클래스를 만들어 사용하는 것이 단기적으로는 가능했겠지만, 나중에 추가적인 신체 부위나 동작을 추가하려면 유지 보수가 큰 수고를 요할 수 있었다. 따라서 처음부터 유지 보수가 용이한 설계가 필요하다는 것을 절실히 느꼈다. 단순히 코드를 작성하는 것보다 설계 단계에서 얼마나 일반화할 수 있는지가 향후 프로젝트의 성공을 결정짓는 중요한 요소라는 점을 배웠다.2. 자연스러운 애니메이션 구현의 어려움 처음엔 선형 보간을 사용하여 움직..

Computer Graphics/HumanGL 2024. 10. 21. 11:29

HumanGL: Jump 애니메이션 구현 - (8)

이번 글에서는 Human Model에 마지막 애니메이션인 Jump(점프)를 구현한 과정을 정리해 보았다.Jump (점프)점프는 space 키를 누르면 활성화되며, 자연스러운 점프 모션을 위해 걷는 중이라면 그 속도와 발의 위치 그대로 점프가 시작된다. 1. 점프 속도 결정x, z 축 방향: 점프 중에도 기존의 이동 속도를 그대로 유지한다.y 축 방향: 점프 시작 시, jumpVelocity만큼 속도를 부여하고, 매 프레임마다 설정된 중력 가속도에 의해 속도가 줄어든다. y축 속도가 -jumpVelocity에 도달하면 점프가 끝난다.2. 팔과 다리 움직임팔과 다리의 움직임은 자연스럽게 보이도록 앞에 나와 있는 팔, 다리와 뒤로 빠져 있는 팔, 다리의 회전 각도와 타이밍을 다르게 설정했다.sin 함수를 사용..

Computer Graphics/HumanGL 2024. 10. 21. 10:43

HumanGL: Walk, Rotate, Stop 애니메이션 구현 - (7)

이번에는 Human Model에 기본적인 애니메이션을 적용해 보았다. Walk, Rotate, Stop 이렇게 세 가지 동작을 구현했으며, 각각의 동작이 어떻게 이루어졌는지 살펴보자.Rotate (회전)Rotate는 항상 활성화된 상태로 존재한다. 캐릭터가 회전하지 않으면 기본적으로 (0.0f, 0.0f, -1.0f) 방향을 계속해서 바라보는 상태가 된다.Rotate 활성화 (공통)현재 방향 벡터를 목표 방향 벡터로 회전시킨다. 회전 속도는 rotateSpeed로 제어되며, atan2() 함수를 사용하여 각도를 계산한다.Rotate 키 입력 시방향키(화살표)를 누르면 목표 방향 벡터가 해당 방향으로 변경된다.Rotate 키 입력이 없을 시목표 방향 벡터는 현재 방향 벡터와 동일하게 설정된다. 이는 캐릭터..

Computer Graphics/HumanGL 2024. 10. 19. 19:15

HumanGL: Human Model에 애니메이션을 적용하기 위한 준비 - (6)

이번에는 계층적 모델링을 적용한 Human Model에 애니메이션 기능을 추가하기 위한 기본 틀을 구현해 보았다. 키보드 입력을 받아서 STOP, WALK, ROTATE, JUMP 이렇게 네 가지 애니메이션을 실행할 수 있도록 설계하였다. 애니메이션 시스템 설계애니메이션 관리는 Animation 클래스를 통해 이루어진다. Model 클래스와는 별개로 Animation 클래스는 모델의 현재 애니메이션 상태를 관리하며, 키보드 입력을 통해 상태를 갱신하고, 갱신된 상태에 맞는 Action을 실행한다.Animation 클래스Animation 클래스는 현재 모델의 애니메이션 상태를 관리하는 역할을 한다. 키보드 입력을 통해 상태를 갱신하고, 해당 상태에 맞는 액션을 실행한다. 실행된 액션에 따라 애니메이션 변환..

Computer Graphics/HumanGL 2024. 10. 19. 18:32

HumanGL: 카메라 제어 - (5)

이번에는 Human Model을 다양한 각도에서 보고 판단할 수 있도록 카메라 제어 기능을 추가했다. 마우스랑 키보드를 사용해서 모델을 자유롭게 움직이면서 볼 수 있게 만들 었고, OpenGL 강좌에서 배운 내용을 바탕으로 아래 기능들을 추가했다.마우스 우클릭을 누르고 있는 동안 카메라 제어 모드로 전환카메라 제어 모드에서 마우스 움직임에 따라 카메라 회전W, S, A, D, Q, E 키를 눌러서 카메라를 3축 방향으로 이동Camera 클래스 설계이 기능들을 위해 기존의 context 클래스에서 카메라 관련 부분을 분리해서 Camera라는 클래스를 새로 만들었다. 이 클래스는 카메라의 위치와 회전 상태를 관리하면서 움직임이나 회전을 처리하는 데 필요한 함수들을 포함하고 있다.#ifndef CAMERA_H..

Computer Graphics/HumanGL 2024. 10. 14. 17:24

HumanGL: 계층적 모델링과 변환 행렬 스택 구현 - (4)

이번에는 SCOP 프로젝트에서 배운 내용을 바탕으로 계층적 모델링과 변환 행렬 스택을 적용하여 Human Model을 구현해보았다.고려 사항Human Model을 구현하면서 고려해야 할 주요 사항은 다음과 같았다:Box로 구현: 각 파트는 1 x 1 x 1 크기의 Box로 이루어져 있으며, scale, translate, rotate 등을 통해 변형한다.계층적 구조: 각 파트는 계층적으로 구성되어야 한다.상대적 좌표: 각 파트의 좌표는 부모 파트의 좌표를 기준으로 상대적인 위치에 있어야 한다.변환 행렬 스택: 자식 파트들은 부모 파트의 변환에 함께 영향을 받아야 하며, 이를 위해 변환 행렬 스택을 사용한다.이러한 요구사항을 충족하기 위해 다음과 같은 클래스를 설계했다.클래스 설계1. Mesh 클래스Mes..

Computer Graphics/HumanGL 2024. 10. 14. 15:10

HumanGL: 계층적 모델링과 변환 행렬 스택 - (3)

이 과제의 주요 내용인 계층적 모델링과 변환 행렬 스택에 대해 알아보자 계층적 모델링계층적 모델링은 복잡한 모델의 움직임을 부모-자식 관계로 나누어 관리하는 방식이다. 부모의 움직임이 자식 객체들에게 전달되어, 각각의 객체가 논리적 관계를 유지하면서 자신만의 움직임을 가질 수 있도록 하는 구조이다. 이 구조를 사용하면, 여러 부위가 서로 상호작용하며 자연스러운 애니메이션을 구현할 수 있다.예시: Human Model과제에서 요구한 대로 예시를 들면, 다음과 같이 사람의 신체 구조를 계층적으로 나눌 수 있다.계층 관계:몸통 → 머리몸통 → 팔 상부 → 팔 하부몸통 → 다리 상부 → 다리 하부이 계층 구조에서 몸통이 움직이면, 그 아래에 있는 머리, 팔, 다리와 같은 자식들도 몸통의 움직임에 따라 함께 움직..

Computer Graphics/HumanGL 2024. 10. 9. 20:00

HumanGL: 프로젝트 진행 계획 - (2)

HumanGL 프로젝트의 대략적인 계획은 다음과 같다.1. 계층적 모델과 변환 행렬 스택에 대한 공부 먼저, 계층적 모델링(Hierarchical Modeling)과 행렬 스택(Matrix Stack)에 대해 학습할 예정이다. 이를 통해 부모-자식 관계를 기반으로 한 객체 구조를 이해하고, 행렬 스택(Matrix Stack)을 사용하여 각 객체의 변환을 어떻게 처리할지 생각해 본다. 2. Human Model 설계 및 생성 다음 단계에서는 Human Model을 설계하고 생성한다. 머리, 몸통, 팔(상부, 하부), 다리 (상부, 하부) 등 주요 신체 부위를 기하학적 도형으로 구성하고, 각 부위가 논리적인 연결을 통해 움직임을 공유할 수 있도록 설계한다. 이 과정에서 계층적 구조와 변환 행렬을 적용하여 ..

Computer Graphics/HumanGL 2024. 10. 9. 18:11

추가 정보

인기글

최신글

페이징

이전
1 2
다음
TISTORY
꾸준히 개발하자 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바