전체 글 390

Tag를 활용한 Input 값 받아오기

player character class에다음과 같은 함수를 제작해주었다.해당 함수를 제작하기 전에,넣어줄 태그를 미리 다음과 같이 만들어두었다.  이후 플레이어 캐릭터 cpp에서 다음과 같이인력 값에 맞게 제작한 함수를 바인딩 해주었다.  마지막은 gas와 관련되었기 때문에,각 직업에 맞는 gasComponent에똑같은 GASInput함수 작업을 해준다. 현재 제작하고 있는 HeroCharacter는 전사이다.따라서 warrior직업에 맞는 GASComponent에 해당 함수를 제작한 것이다. 이렇게되면 HeroCharacter.cpp에서는 직접적으로 함수를 구현하기보단,해당 GAS를 통해서 구현하여 각 직업에 맞는GASComponent를 불러와 작업을 수행할 수 있다.(코드의 재사용성 多)GetAct..

UE5 2024.10.08

[백준 실버5] 수들의 합5 2018

https://www.acmicpc.net/problem/2018   투포인터 쓰기처음에 무지성 포문 생각했는데조금 생각해보니 포문으론 안되는 걸 알았다.  #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, count = 1, startIdx = 1, endIdx = 1, sum = 1; cin >> n; while (endIdx != n) { if (sum == n) { count++; endId..

DX11 - 2차원 변환(VertexShader작업)

일반적으로 우리가 머리 속으로 생각하는 형상을 그래픽으로 표현한 것을 모델이라고 한다. 이러한 것을 3차원으로 표현하기 위해 우리는 메쉬라는 작은 삼각형을 이용해서 모델을 만든다. 그렇다면 이번에는 뭘 만드는 것이 중점이냐면, 2차원 환경에서 삼각형으로 이루어진 물체를 시계 방향과 반시계 방향으로 회전시키고 비율을 줄여보고 늘려볼 수 있다. 또한 중점을 중심으로 회전하는 것과 자기 자신을 회전하는 것 등 이동과 관련에 대한 실습을 해보는 것이 해당 강의의 목표이다. 1. 모델의 이동 모델을 이동시키기 위해서는 각 정점의 현 위치에서 이동시키고자 하는 거리까지 더해주면 된다. 2. 모델의 회전 2차원 회전에서는 어떤 점에 대해서 회전하는 지가 중요하고 3차원 회전에서는 어떤 축에 대해서 회전하는 지가 중요..

그래픽스/DX11 2024.10.03

DX11 - 원 그리기

원은 여러 개의 삼각형을 쪼개어 만든다. 얘를 들어 삼각형을 그린다고 했을 땐, 삼각형0은 vertex 0 2 1 삼각형1은 vertex 0 3 2 ... 이런 식으로 사용할 것이다. 이럴 때 vertex의 순서가 중요하다. 해당 엔진에서는 Vertex 순서가 시계 방향으로 가면 화면에 그려지지만, 반시계 방향으로 그린다면 화면에 제대로 그려지지 않는다. 이러한 방향은 사실 원하는 대로 바꿀 수 있다. 하지만, dx에서는 전통적으로 시계 방향으로 렌더하는 것이 앞면이라고 여긴다. 이러한 삼각형을 원처럼 보이도록 여러개를 쪼개어, sin과 cos을 이용하여 애둘러쌓아 둔다면 원처럼 보인다. 이러한 방식으로 원을 그리면 모든 삼각형이 0번을 공유한다. 하지만 마지막 삼각형은 1번 정점으로 다시 돌아오기 때문..

그래픽스/DX11 2024.10.02

퐁라이팅

lighting은 물체와 빛 사이의 상호작용을 말한다. 사실적인 그래픽을 위해서 lighting이 매우 중요하다. 이러한 linghting 기법 중 하나인 퐁라이팅은 빛을 반사하는 것을 ambient, diffuse, specular, emissive 4가지로 나누어서 표현한다.diffuse는 난반사를 의미하며, 광원으로부터, 광원으로부터 점P까지의 벡터를 l, (normal vector 법선 벡터는 해당 직선이나 평면에서 수직인 벡터를 말한다) 점 P의 normal을 n으로 표현한다. 두 벡터 사이의 각이 작으면 작을수록 점 P는 더 많은 조명을 받게 될 것이다. 점 P로 들어오는 빛의 양은 두 벡터의 내적 값이라고 정의할 수 있다. 즉, 조명의 위치에 따라서 표면이 얼마나 밝아질 지를 정할 수 있다...

그래픽스/DX11 2024.09.30

* const 와 reference

레퍼런스도 이제 어셈수준에서는 포인터와 똑같이 작동한다. c는 어셈블리어를 제외하면,가장 기계어와 가까운 고급언어이다. c에 없는 기능이 어떠한 언어에 추가되었다면,이는 사용자의 편의성에 의해 고급 (엔지니어 or) 프로그래머가 제작한 것이다. 그렇다면 c에 없는 c++에 있는 레퍼런스를 만드려 한다면 어떻게 만드는 것이 좋은가? * const 를 쓰면 된다. * const는 선언과 동시에 초기화해줘야하며,실제로 레퍼런스와 * const의 초기화 오류는 똑같이 작동된다.  다음과 같이 초기화 한 후에, 값을 바꿀 수 없다는 점, 포인터로 해당 기능을 만들 수 있다는 점은* const를 쓰면 C++의 레퍼런스와 같이 사용할 수 있다.

TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths

비동기 애셋 로딩에 사용되는 TSoftObjectPtr, FSoftObjectPaths  FSoftObjectPaths 와 TSoftObjectPtr는 아티스트 혹은 디자이너가 하드 포인터와 같은UI를 사용해서 특정 애셋에 대한 레퍼런스를 만들되, 항상 로드되지 않도록 사용하기 위한 것이다.(= 좀 더 가볍게 쓰기 위한 것) FSoftObjectPaths는 UObject* 프로퍼티와 비슷하게 쓰는 것이고TSoftObjectPtr은 기본적으로 FSoftObjectPaths 를 감싸는 TWeakObjectPtr입니다.  TSubclassOf와 TSoftObjectPtr의 차이점 TSubclassOf와 TSoftObjectPtr는 즉UE에서 애셋과 클래스를 참조하는 데 사용되는 두 가지 서로 다른 방법입니다...

UE5 2024.09.26

함수 뒤에 const? 너 누군데

멤버 함수 뒤에 const를 붙이면const 키워드로 멤버 함수를 선언하면 함수가 자신이 호출되는 개체를 수정하지 않는 "읽기 전용" 함수로 지정하는 것이다. const 객체들은 const 맴버함수만 호출할수 있다.그렇다고 일반 객체는 const가 뒤에 있는 맴버함수도 가능하지 않다는 것은 아니다. int getMonth() const; // A read-only function 그럼 앞에 쓰면? 반환값을 상수화 하는 것이다.const int A(); // 반환값을 상수화한다. 주로 참조값으로 반환이기 때문에 const를 붙여줘야 할 때 쓰인다.  그럼 매개변수에 const는?매개변수를 call by reference일때 즉 참조값으로 받을때 사용한다.속도는 높이고 싶은데 참조값을 변경하기 싫을때..