Unity Programming [3] : 시스템 로직 (Unity System Logics)
·
Development/3D Engine Programming
1. 유니티 이벤트 프로그램에서 이벤트(Event)는 시스템 내에서 발생하는 특정 동작이나 상태 변화를 처리하는 메커니즘이다. 예를 들어, 사용자가 웹 페이지에서 버튼을 클릭하거나 화면을 터치하는 것과 같은 행동이 이벤트로 간주된다. 이벤트 시스템에서 "제공자"는 이와 같은 사용자 행동을 감지하고, 이를 구독자에게 알리는 역할을 한다. 제공자는 버튼 클릭, 마우스 이동, 키보드 입력 등 다양한 이벤트를 발생시키며, 구독자는 이러한 이벤트를 미리 "구독"하고 있다가, 이벤트가 발생할 때마다 반응을 한다. 예를 들어, 자바스크립트에서 addEventListener 메서드는 구독자 역할을 하며, 버튼 클릭 이벤트를 처리할 때마다 제공자가 발생시킨 클릭 정보를 받아서 지정된 함수를 실행한다.  using Uni..
Deep Learning [2] : 시계열 데이터 신경망 모델 (Time Series Data Learning Models)
·
Artificial Intelligence/Artificial Intelligence Theory
시계열 데이터(Time Series Data)는 특정 시간 순서에 따라 발생하는 데이터를 의미한다. 시계열 데이터의 주요 특징은 데이터의 각 값이 시간이라는 차원에 따라 순차적으로 배열된다는 점이다. 이러한 데이터는 순서가 중요하며, 각 데이터 포인트는 이전 값과 연관이 있다. 즉, 독립적인 데이터가 아니라 시간적으로 연결된 데이터라는 점에서 특수하다. 예를 들어, 주식 가격, 기온 변화, 경제 지표 등의 데이터는 모두 시간에 따라 변화하는 순차적인 특성을 지닌다.순차 데이터(sequential data)는 단순히 데이터가 일정한 순서로 배열된 것만을 의미하지만, 시계열 데이터는 각 데이터 포인트가 시간이라는 차원에 맞춰 배열된 데이터를 말한다. 이때 중요한 점은, 시계열 데이터에서 각 데이터 포인트가 ..
Unity Programming [2] : C# 입출력 연산 (Input/Output (I/O) operations)
·
Development/3D Engine Programming
1. 파일다루기 2. 네트워크 프로그래밍 3. 데이터베이스 연동 3.1 DBMS의 이해와 MYSQL 설치하기  데이터베이스(Database)는 데이터를 체계적으로 저장, 관리, 그리고 검색할 수 있도록 구조화한 데이터의 집합이다. 이는 데이터의 중복을 최소화하고 효율적인 액세스를 보장하며, 여러 사용자와 애플리케이션이 데이터를 공유할 수 있도록 설계된다. 데이터베이스는 일반적으로 데이터의 저장, 수정, 삭제, 검색을 처리하는 데이터베이스 관리 시스템(DBMS)에 의해 관리되며, 관계형 데이터베이스, NoSQL 데이터베이스 등 다양한 유형으로 분류될 수 있다. 이를 통해 데이터 무결성과 보안이 유지되며, 대량의 데이터를 효율적으로 처리하는 데 필수적인 역할을 한다. 데이터베이스의 특징은 다음과 같다.  데..
Vision Theory [5] : 영상 분할
·
Camera & Vision/Computer Vision
Mathematical morphology (모폴로지)​Thresholding에 의해 얻어진 binary image를 좀 더 가공하여 완성도를 높이기 위해서는  morphology를 이용한다. 가공의 의미는 noise나 너무 작은 feature들을 제거하는 것을 의미한다.   Morphology는 structuring element (SE)라는 것을 이용하는데, 이것은 마치 bit mask와 같은 것이다. Bit-mask가 1차원인데 반해, SE는 2차원이다. SE를 이미지 위에 슬라이딩 시켜가면서 logical operation을 수행하여 결과 이미지를 만든다. original image는 변하지 않고, 새로운 이미지가 만들어진다. 이 분야는 독자적인 학회를 가지고 있을 정도로 이론적으로 정립되어 있다..
Programming Principles [7] : 탐색 알고리즘 (Search Algorithms)
·
Computer Scinece/Programming Principles
1. 백트레킹 (Back Tracking) 백트래킹(backtracking) 알고리즘은 탐색 문제를 해결하는 기법으로, 상태공간트리를 깊이우선탐색(DFS) 방식으로 탐색하면서 유망하지 않은 노드(non-promising node)를 가지치기(pruning) 하여 탐색 범위를 줄인다. 이 알고리즘은 탐색 중간에 해답이 나올 가능성이 없는 경로를 제거해 효율성을 극대화한다. 더보기깊이 우선 탐색 (Depth-First Search, DFS)  깊이우선탐색(Depth-First Search; DFS)은 트리나 그래프 구조에서 루트 노드(또는 시작 노드)부터 시작하여, 자식 노드를 깊게 탐색한 후 더 이상 자식 노드가 없을 때 부모 노드로 되돌아오는 방식으로 진행하는 탐색 알고리즘이다. 이는 주로 재귀적으로 구..
Linear Algebra [2] : 함수 최적화 (Function Optimization)
·
Mathematics/Linear Algebra
1. 경사 하강2. 자코비안 행렬3. 라그랑주 승수4. 뉴턴 메서드
Deep Learning [1] : 딥러닝 모델 개론과 정보 이론과 수학 (작성중)
·
Artificial Intelligence/Artificial Intelligence Theory
1. 딥러닝 모델 딥러닝(Deep Learning, DL)은 머신 러닝(Machine Learning, ML)의 한 분야로, 머신 러닝은 인공지능(AI)의 하위 개념이다. AI는 사람의 지능이나 행동을 모방하는 기술을 의미하며, 머신 러닝은 데이터를 통해 컴퓨터가 스스로 학습하도록 하는 기술이다. 딥러닝은 인간의 뇌, 특히 뉴런의 구조를 모방한 신경망을 이용해 복잡한 학습을 수행하는 기법이다. 현재에는 사람의 고유한 능력으로 컴퓨터가 절대 할 수 없었던 것처럼 여겨졌던 상상을 하고 그것을 그려내는 모델 등이 나오면서 주목을 받고 있다.     불확실성을 직관적으로 이해하자면, 예측하기 어려운 상황을 떠올리면 좋다. 예를 들어 주사위를 던질 때 결과가 어떤 숫자가 나올지 알 수 없어서 불확실성이 큰 상태인..
Unity Programming [1]: 병행성 추상화 프레임워크 (Concurrency Abstraction Framework)
·
Development/3D Engine Programming
1. 스레드와 태스크 2. 플러그인 모듈화 (Plug-in Modularity) Unity에서 관리되는 플러그인(Managed Plugin)은 .NET 언어(C#, VB.NET 등)로 작성된 외부 라이브러리를 Unity 프로젝트에 통합하여 활용할 수 있는 방식이다. 이러한 플러그인은 Visual Studio와 같은 외부 도구를 사용하여 작성되며, .dll 형식의 어셈블리로 컴파일된다. 관리되는 플러그인은 Unity의 스크립팅 환경과 직접적으로 호환되므로, 복잡한 기능을 모듈화하거나 타사 코드나 외부 라이브러리를 손쉽게 통합하는 데 유용하다.관리되는 플러그인을 사용하는 첫 단계는 플러그인으로 사용할 .dll 파일을 생성하거나 다운로드받는 것이다. 직접 작성하려면 Visual Studio에서 Class Li..
Vision Theory [4] : 이미지 매핑
·
Camera & Vision/Computer Vision
2D 이미지 한 장으로는 3D를 예측하기에 정보가 부족하므로, 두 장 이상의 이미지를 사용해 데이터 간 관계를 파악하는 것이 중요하다. 예를 들어, disparity 이미지를 통해 좌우 시점 기준의 두 개 depth를 얻어 서로 다른 시점 간 관계를 이해할 수 있다. 만약 다른 사람이 촬영한 두 장의 사진을 이용해 스테레오 시스템을 적용하고자 한다면 두 카메라 사이의 상호 관계를 알아야 한다. 이번 장에서는 주어진 두 이미지 간 변환 관계를 찾아내는 과정에 집중하여 기존 스테레오 시스템에서의 밀집한 대응점 찾기(dense correspondence)가 아닌, 확실한 희소 대응점(sparse correspondence)을 기반으로 두 카메라 간 이동 관계를 역으로 추정하고자 한다. 1. Image Mapp..
Unity Development [3] : 컴포넌트 기반 아키텍처
·
Development/3D Engine Development
프리팹 (Prefab) 태그와 레이어 (Tag and Layer)유니티에서 사용하는 게임 오브젝트는 각각의 이름이 존재하고, 이를 분류하기 위해 Tag, Layer라는 두 가지 요소를 사용한다. 두 요소가 정확히 무슨 차이이고, 어떻게 사용되는지 알아보자. 아무 게임 오브젝트나 선택한 후 인스펙터 창에서 Tag나 Layer를 클릭하고 하단 [Add Tag] 또는 [Add Layer]를 클릭하면 Tag & Layers 창으로 이동되며, 이곳에서 태그와 레이어를 관리할 수 있다.Tag유니티에서 태그 (Tags)는 게임 오브젝트를 구분하고 분류하는 데 사용되는 간단한 문자열 레이블이다. 주요 기능은 다음과 같다. 오브젝트 분류: 태그를 사용하여 오브젝트를 그룹화할 수 있다. 예를 들어, 모든 적 캐릭터에 "E..