꾸준히 개발하자

고정 헤더 영역

글 제목

메뉴 레이어

꾸준히 개발하자

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (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/ALEngine

  • ALEngine: 엔진 제작 프로젝트 후기 - (6)

    2025.03.26 by Banjosh

  • ALEngine: 엔진 프로젝트 결과물 - (5)

    2025.03.26 by Banjosh

  • ALEngine: Trigger 구현 - (4)

    2025.03.26 by Banjosh

  • ALEngine: SIMD를 이용한 최적화 - (3)

    2025.03.26 by Banjosh

  • ALEngine: Freeze 구현 - (2)

    2025.03.21 by Banjosh

  • ALEngine: Frustum Culling 구현 - (1)

    2025.02.17 by Banjosh

  • ALEngine: 게임 엔진 제작 합류 - (0)

    2025.02.17 by Banjosh

  • FT_Newton: sleep 상태 추가 및 solve constraint 반복 수정 - (13)

    2025.02.12 by Banjosh

ALEngine: 엔진 제작 프로젝트 후기 - (6)

5개월간의 게임 엔진 제작 프로젝트가 끝났다. OpenGL을 깔짝대던 수준에서 시작하여SCOP 프로젝트를 통해 Model과 수학 라이브러리와 친해지고,HumanGL 프로젝트를 통해 계층적 구조와 애니메이션에대해 공부를 하고,FT_Newton(물리 엔진) 프로젝트를 통해 물리 엔진을 직접 구현하는 값진 경험을 하고,ALE를 마치며 엔진 최적화와 엔진 구조에 대한 이해를 높일 수 있었다. C와 C++만을 공부하여 아직 Unity와 Unreal을 사용해보지 못해 부족한 점이 많았지만 팀원들이 많이 도와준 덕분에 프로젝트를 잘 마칠 수 있었다고 생각한다. 취업 걱정 없고 돈 걱정 없었다면 현재 팀원들과 지금 엔진의 부족한 점을 전부 수정하고 더 좋은 엔진으로 develop하는 단계까지 진행하고 싶지만 현실적으로..

Computer Graphics/ALEngine 2025. 3. 26. 20:39

ALEngine: 엔진 프로젝트 결과물 - (5)

5개월간의 게임 엔진 제작 프로젝트가 끝나고 4개의 씬을 만들어보았다. Rendering Demo1https://www.youtube.com/watch?v=cwIg2w3mOJ0 Rendering Demo2https://www.youtube.com/watch?v=ya1hKmkO8JY Physics Demo1https://www.youtube.com/watch?v=oJnp3A-QEsE Physics Demo2https://www.youtube.com/watch?v=_ZHyU_WvnIw Animation Demohttps://www.youtube.com/watch?v=M6dmDZbce60  이 다음 글에서는 후기로 찾아올 예정이다.

Computer Graphics/ALEngine 2025. 3. 26. 20:19

ALEngine: Trigger 구현 - (4)

이번엔 물리 충돌이 아닌 서로 영역이 겹쳐진 경우 센서 감지를 하는 Trigger 구현을 해보았다.Trigger는 기존 충돌 감지에서 둘 중 하나가 Sensor인 경우, 충돌처리를 하는 것이 아닌 Sensor 접촉 Flag를 변경하여 엔진에 접촉을 알리는 방식으로 구현하였다. 즉 원래라면 A와 B의 collider가 겹친경우 충돌을 감지하여 solve 단계를 통해 서로 분리하지만, 둘 중 하나가 Sensor라면 충돌처리를 하지 않고 A와 B가 서로 접촉해있다는 사실을 Flag를 통해 엔진에 알리는 것이다. 다음은 해당 Trigger를 통해 구현한 문 열고 닫기 영상이다.Sensor인 문과 Scene 카메라의 collider가 겹친 경우 서로 접촉했다는 사실을 알게 되고 이때 F를 누르면 문을 열고 닫을 ..

Computer Graphics/ALEngine 2025. 3. 26. 20:14

ALEngine: SIMD를 이용한 최적화 - (3)

SIMD 최적화를 적용한 이유ALEngine에서는 일반적으로 자주 쓰이는 glm이라는 수학 라이브러리 대신 우리가 직접 만든 alglm이라는 라이브러리를 사용한다. 이전 과제들에서도 직접 만든 수학 라이브러리를 사용하긴 했지만, 이번 프로젝트처럼 큰 규모가 아니었기에 별다른 최적화 없이 사용했고, 이번 프로젝트에서는 연산이 많이 일어나기 때문에 수학 라이브러리의 최적화도 중요해졌다.따라서 우리는 alglm 수학 라이브러리에 SIMD 최적화를 적용하기로 했다.SIMD란?SIMD는 Single Instruction, Multiple Data의 약자로, 말 그대로 하나의 명령어로 여러 개의 데이터 연산을 처리하는 방식이다.일반적인 CPU의 레지스터들은 32bit 혹은 64bit 크기로, 하나의 명령어로 하나의..

Computer Graphics/ALEngine 2025. 3. 26. 19:57

ALEngine: Freeze 구현 - (2)

엔진에 캐릭터 애니메이션을 추가하기 위해 Freeze 기능을 추가하였다.캐릭터의 콜라이더를 캡슐로 할 것인데 이때 캡슐이 쓰러지지 않게 회전을 Freeze 해줄 필요가 있는 것이다.Freeze의 종류Freeze는 크게 두 가지 종류가 있다.Position Freeze – X, Y, Z 축 방향으로의 이동을 막는다.Rotation Freeze – X, Y, Z 축 방향으로의 회전을 막는다.Freeze 적용 영상다음은 Freeze를 적용하기 전 영상이다.  이번에는 Y축 Position만 Freeze한 영상이다.  이번엔 X, Y, Z 축 Position을 모두 Freeze한 영상이다.  마지막으로, Rotation의 X, Y, Z 축까지 전부 Freeze한 영상이다. Freeze 구현 방법물리 처리에서는 ..

Computer Graphics/ALEngine 2025. 3. 21. 19:26

ALEngine: Frustum Culling 구현 - (1)

Frustum Culling이란?Frustum Culling은 카메라의 시야 범위(Frustum) 밖에 있는 객체들을 렌더링하지 않아 성능을 최적화하는 기술이다. 시야에 보이지 않는 객체들을 제외함으로써 불필요한 GPU 연산을 줄여 성능을 크게 향상시킬 수 있다.내가 구현한 Frustum Culling1.  BVH 사용Bounding Volume을 구 형태로 구성하여 BVH(Bounding Volume Hierarchy)를 구축했다. 모든 오브젝트는 BVH의 노드로 관리되며, Culling은 다음 세 가지 경우로 처리된다:1. 현재 노드가 카메라 영역 밖에 있는 경우현재 노드를 포함한 모든 자식 노드를 렌더링하지 않는다.2. 현재 노드가 카메라 영역 내부에 있는 경우현재 노드와 모든 자식 노드를 렌더링한..

Computer Graphics/ALEngine 2025. 2. 17. 20:44

ALEngine: 게임 엔진 제작 합류 - (0)

ALEngine 이란 After Life Engine의 약자로 우리 팀에서 제작 중인 게임 엔진의 이름이다.ALEngine에 렌더링 엔진이 이식된 상태에서 나의 FT_Newton 물리 엔진도 이식에 성공하였다. 앞으로는 물리 엔진의 Develop 뿐 아니라 ALE 게임 엔진의 최적화 및 기능 추가에도 참여할 예정이다!! https://github.com/Very-Real-Engine/ALEngine GitHub - Very-Real-Engine/ALEngine: This is an GAME ENGINE made by 42 Very-Real-Engine Team.This is an GAME ENGINE made by 42 Very-Real-Engine Team. - Very-Real-Engine/ALEng..

Computer Graphics/ALEngine 2025. 2. 17. 18:29

FT_Newton: sleep 상태 추가 및 solve constraint 반복 수정 - (13)

이번에 물리 엔진을 메모리 최적화하면서 성능이 확 올라갔는데, 이게 오히려 새로운 문제를 만들었다.  성능이 좋아지다 보니 duration(물리 연산에 사용하는 시간 단위)을 크게 설정했는데, 7 x 7 x 7의 박스 탑에서 이상한 현상이 벌어졌다.   duration이 커서 중력 영향을 크게 받게 되니까, 박스들이 서로 요동치면서 건드리지도 않았는데 스스로 무너져버렸다.나는 이 문제를 정지 접촉(Rest Contact) 쪽 이슈라고 판단했고, 그래서 Sleep 상태와 Awake 상태를 추가해서 해결을 시도했다. 1. Sleep 상태먼저 setSleep() 함수를 살펴보면:void Rigidbody::setSleep(float duration){ if (m_canSleep) { m_sleepTime +..

Computer Graphics/ALEngine 2025. 2. 12. 02:50

추가 정보

인기글

최신글

페이징

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

티스토리툴바