꾸준히 개발하자

고정 헤더 영역

글 제목

메뉴 레이어

꾸준히 개발하자

메뉴 리스트

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

검색 레이어

꾸준히 개발하자

검색 영역

컨텐츠 검색

Computer Graphics/SCOP

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

    2024.10.01 by Banjosh

  • SCOP: 자연스러운 텍스처 매핑을 위한 UV 좌표계 경계 처리 - (8)

    2024.10.01 by Banjosh

  • SCOP: 3D 오브젝트 이동, 회전, 색상 및 텍스처 적용 - (7)

    2024.09.27 by Banjosh

  • SCOP : 기능별 클래스로 리팩토링하기 - (6)

    2024.09.23 by Banjosh

  • SCOP : BMP 이미지 파싱과 텍스처 매핑 구현 - (5)

    2024.09.23 by Banjosh

  • SCOP : GLM을 대체하는 GLMath 라이브러리 구현 - (4)

    2024.09.20 by Banjosh

  • SCOP : 빌드 환경 설정 및 기본 구조 준비 - (3)

    2024.09.19 by Banjosh

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

    2024.09.18 by Banjosh

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

SCOP 과제를 하며 느낀 점라이브러리의 소중함Assimpv, vn, vt, f 등 여러 인자를 이해하고, 각각의 요소를 조합해 하나의 정점으로 만드는 과정을 경험했다.f(face)의 모음마다 .mtl 파일의 material 정보가 적용되어, 다양한 mesh들이 생성될 수 있다는 것을 배웠다.GLM그래픽스를 위한 수학적 개념을 코드로 직접 구현해보는 좋은 경험이었다. 행렬, 벡터 연산 등을 직접 해보며 그래픽스 수학에 대한 이해도가 크게 높아졌다.STBBMP 파일을 파싱하고, 헤더와 데이터 구조를 다루는 과정을 통해 이미지 파일이 어떻게 처리되는지 배울 수 있었다.평소에 자주 사용하던 Assimp, GLM, STB 같은 라이브러리를 직접 구현해보니 생각보다 어렵다는 걸 깨달았다. 예전에는 이런 라이브러리..

Computer Graphics/SCOP 2024. 10. 1. 16:53

SCOP: 자연스러운 텍스처 매핑을 위한 UV 좌표계 경계 처리 - (8)

이번에는 오브젝트의 정점 좌표를 UV 좌표계로 변환하여 텍스처를 적용해보았다. 이를 위해 다음과 같은 코드를 추가하여 렌더링을 진행했다. for (int i = 0; i  하지만, 렌더링 결과를 확인해보니 특정 부분에서 텍스처가 불규칙적으로 반복되는 현상이 발생했다.  문제 원인문제는 삼각형의 정점 중 일부가 UV 좌표계의 경계를 넘어가는 위치에 있을 때 발생했다. 예를 들어, 삼각형의 정점 3개 중 하나의 θ(theta)가 1.9π, 다른 하나는 -0.1π인 경우, 실제 값 차이는 0.2π에 불과하지만, UV 좌표계는 0 ~ 2π로 제한되어 있으므로 두 좌표 간의 차이를 큰 값으로 인식하게 된다. 그 결과 텍스처가 경계에서 왜곡되며 잘못된 패턴으로 렌더링되었다.해결 방법이 문제를 해결하기 위해, ..

Computer Graphics/SCOP 2024. 10. 1. 15:48

SCOP: 3D 오브젝트 이동, 회전, 색상 및 텍스처 적용 - (7)

지난번에 .obj 파일을 파싱하여 다음과 같은 오브젝트를 그리는 데 성공했었다. 이번에는 이 오브젝트에 다음과 같은 작업을 진행하였다.오브젝트 3축 평행 이동 및 중심축 회전프리미티브별 기본 색상 적용특정 키를 눌렀을 때 텍스처로 부드럽게 전환1. 오브젝트 3축 이동 및 회전카메라 변수 설정m_cameraPos: 카메라의 위치 벡터m_cameraFront: 카메라의 앞쪽 방향 벡터m_cameraUp: 카메라의 위쪽 방향 벡터오브젝트 중심 찾기오브젝트의 좌표에서 x, y, z의 최소값과 최대값을 구해 중심을 계산한다.계산된 중심은 m_modelPos 변수에 저장한다.오브젝트 3축 평행 이동키 입력 처리:키 입력은 glfwGetKey() 함수를 이용하여 직접 확인한다.키 입력에 따라 glmath::vec3 ..

Computer Graphics/SCOP 2024. 9. 27. 11:21

SCOP : 기능별 클래스로 리팩토링하기 - (6)

이번 작업에서는 사각형에 텍스처를 입히는 과정에서 context.cpp에 있는 함수들이 너무 커지는 문제를 해결하기 위해 리팩토링을 진행했다.리팩토링 전 처음 구현만을 위해 기능을 계속 추가하다 보니 context.cpp의 함수들이 지나치게 커져버렸다. 아래 코드는 리팩토링 전의 context.cpp 파일이다. 코드가 매우 길기 때문에, 그저 길이를 확인하는 정도로만 보면 된다. 코드가 지나치게 길어져서 관리가 어려워지고, 유지보수가 힘든 구조였다. 특히 VAO, VBO, Shader 생성 등 반복되는 작업이 많았고, 텍스처 로딩과 셰이더 컴파일 등도 하나의 함수에 모두 담겨 있어 가독성이 매우 떨어졌다.// 리팩토링 전!!#include "../include/context.h"void Context::..

Computer Graphics/SCOP 2024. 9. 23. 17:21

SCOP : BMP 이미지 파싱과 텍스처 매핑 구현 - (5)

이번에는 BMP 이미지를 파싱하고 데이터를 저장한 후, 텍스처로 적용하여 사각형을 렌더링하는 작업을 해보았다.1. BMP 이미지 파싱 일반적으로 JPG나 PNG 파일은 압축되어 있어 파싱하기 까다롭기 때문에, 압축되지 않은 BMP 파일을 파싱해 사용하기로 했다. BMP 파일은 파일 헤더, DIB 헤더, 팔레트, 픽셀 데이터로 나뉘는데, 이 중 파일 헤더와 DIB 헤더에 있는 정보를 이용해 픽셀 데이터를 저장하면 된다.(팔레트는 bpp가 1바이트 이하일 때 사용하는 방식으로, 내 프로젝트에서는 팔레트를 사용하지 않기로 했다)  위 과정에서, 파일 헤더와 DIB 헤더의 정보를 struct에 read()로 읽어 저장하려고 했으나 문제가 발생했다.// file headerstruct BMPFileHeader {..

Computer Graphics/SCOP 2024. 9. 23. 00:29

SCOP : GLM을 대체하는 GLMath 라이브러리 구현 - (4)

과제에서 사용하지 말라는 GLM을 대체할 나만의 GLMath 라이브러리를 만들었다.구현 내용:Class: vec2, vec3, vec4, mat4Function: value_ptr(), dot(), cross(), normalize(), radians(), scale(), translate(), rotate(), perspective(), lookAt()Variable: piOpenGL을 배울 때 사용했던 코드들을 참고하면서 자주 쓰였고, 필요해 보이는 함수들로 구성했다. 이 안에서 대부분 해결할 수 있을 것 같지만, 프로젝트를 진행하면서 추가로 필요한 함수가 있으면 그때그때 새로 추가할 예정이다.각각의 역할Classvec2: 2차원 벡터vec3: 3차원 벡터vec4: 4차원 벡터mat4: 4x4 행렬위..

Computer Graphics/SCOP 2024. 9. 20. 16:05

SCOP : 빌드 환경 설정 및 기본 구조 준비 - (3)

이번 글에서는 SCOP 프로젝트의 시작인 빌드 환경 구성과 초기 OpenGL 설정 과정을 다루고자 한다. 1. GitHub Repository 생성프로젝트 시작을 위해 GitHub에 SCOP 프로젝트 저장소를 생성했다.저장소 주소: https://github.com/seonjo1/SCOP GitHub - seonjo1/SCOPContribute to seonjo1/SCOP development by creating an account on GitHub.github.com 2. 빌드 환경 구성이전에 OpenGL을 공부할 때는 CMake를 사용해 필요한 라이브러리를 추가하고, Visual Studio 프로젝트를 생성하여 프로그램을 실행했다. 그러나 이번 과제에서는 Makefile을 사용하라는 요구사항이 있어..

Computer Graphics/SCOP 2024. 9. 19. 13:45

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

SCOP 프로젝트를 진행하기 위해 단계별로 세부 계획을 세웠다. 각 단계는 프로젝트의 완성도를 높이고 기능 구현 중 발생할 수 있는 문제를 해결하기 위한 구체적인 목표와 작업 내용을 포함하고 있다.1. 빌드 환경 설정 및 기본 구조 준비먼저, 프로젝트를 시작하기 위한 기본 빌드 환경을 설정한다. Git 저장소를 생성하고, Makefile을 작성해 프로젝트의 컴파일 및 의존성 관리를 준비한다. 창을 띄우는 기본 렌더링 환경을 구축한다. Git 저장소 생성 및 초기화Makefile 작성창 띄우기 및 초기 OpenGL 설정2. 기존 라이브러리 대체 작업이 프로젝트에서는 GLM, STB, Assimp와 같은 외부 라이브러리를 사용할 수 없으므로, 이 기능들을 직접 구현해야 한다. 3D 수학 연산, 텍스처 로딩,..

Computer Graphics/SCOP 2024. 9. 18. 23:35

추가 정보

인기글

최신글

페이징

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

티스토리툴바