일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 언리얼
- dfs
- 프로그래머스
- 언리얼4
- Widget
- blueprint
- HTTP
- Unity
- 코딩테스트
- c++
- 다이나믹프로그래밍
- UE5
- 나나이트
- UMG
- 문자열
- 코테
- 동적계획법
- UE4
- Stimuli
- server
- DP
- ue4macro
- 유니티
- 알고리즘
- uproperty
- EffectiveC++
- UnReal
- AIPerception
- 코테연습
- 재귀
- Today
- Total
목록Unreal (15)
공부 기록
AI Perception 이란? 인공지능이 특정 감각을 통해 사물을 인지할 수 있도록 하는 기능으로, 각각의 Sense를 통해 Enemy(ex. 플레이어) 혹은 일반 오브젝트를 감지할 수 있다. 사용 방법은 아래 이어서 설명하도록 하겠다. #1 AI Controller에 AI Perception 컴포넌트 추가 사물을 감지할 AI 캐릭터의 컨트롤러에 AIPerception 컴포넌트를 추가해준다. 이때 폰이 아니라 컨트롤러에 추가해주는 것을 잊지 말자. #2 AI Perception 디테일 설정 Sense Config Sight : AI의 시야에 들어오는 사물 인지 Hearing : 소리를 내는 사물 인지 Touch : 충돌한 사물을 인지 Damage : 대미지를 입힌 물체를 인지 Predicton : 상대..
언리얼 엔진5 출시 웨비나를 듣고 정리한 내용 (기록용으로 올려두기) 나나이트 가상화된 폴리곤 시스템 클러스터단위로 컬링(?)하여 기존에 비해 오버헤드가 적음- 자동 LOD 폴리곤 수 드로우콜 제한이 없어짐 원본퀄리티 유지하면서 80퍼 폴리곤 감소 가능 보이는 부분만 렌더링 마스크, 반투명은 아직 지원 안함 루멘 다이나믹 글로벌 일루미네이션/리플렉션 리플렉션 캡처, 라이트 uv, 라이트맵 굽는것 모두 할 필요 없음 표면캐시에 대해 빛 계산, 간접광도 빠르게 계산 가능 버추얼 섀도 맵 일관된 고해상도 쉐도우 제공 텍스쳐 스케일 맵으로 시야에 따라 퀄리티 달라짐 오픈월드기능 월드파티션 : 그리드시스템, 서브레벨로 나눠 관리할 필요 없이 그리드시스템이 계층구간별로 관리해줌 먼 거리는 HLOD로 로딩해놓은걸 보..
언리얼 엔진5 출시 웨비나를 듣고 정리한 내용. 기록용으로 올려두기 UE4 에서 추가 및 발전된 기능 나나이트 / 루멘 / 버추얼 섀도 맵 / 월드 파티션 / 대규모 월드 좌표 발전된 애니메이션 / 컨트롤 릭 / 지오메트리 모델링 / 패스 트레이서 / n디스플레이 ▶ 출시 시기를 고려해 1년 이상 남았다면 마이그레이션 고려해봄직 함 마이그레이션 요소 라이트 기존 라이트 다 없애고 무버블 라이트 생성 프로젝트 세팅 > 렌더링 > 글로벌일루미네이션을 루멘으로 활성화, 매쉬 디스턴스 필드 프로젝트 세팅 > 하드웨어 레이 트레이싱 활성화 스카이라이트 디테일 > 리얼타임캡쳐 활성화 나나이트 툴 > 나나이트 툴 : 현재 레벨에서 나나이트화 가능한 메시를 찾아줌, 한꺼번에 활성화 가능 메시압축 : 트라이앵글 수를 낮..
BlueprintImplementableEvent는 C++에 선언해놓은 함수를 블루프린트에서 정의할 수 있도록 하는 UFUNTION의 지정자이다. 이 지정자를 사용하는 C++의 함수에는 파생 클래스에서 함수 내용을 재정의할 수 있도록 하는 Virtual 키워드를 붙일 수 없으며, 만약 붙여 사용하고 싶다면 C++와 BP에서의 구현이 모두 가능한 BlueprintNativeEvent를 사용하도록 한다. 또한 이 함수의 파라미터로 FString을 넘겨줘야 한다면 const FString& 으로 상수 객체 참조에 의한 전달을 해줘야 오버로딩 관련 컴파일 에러가 발생하지 않으므로 주의하도록 하자.
ue4 file upload to server using http post request 언리얼에서 지원하는 Http request 를 통해 서버에 파일을 업로드 하는 방법이다. POST 방식을 사용하며, url에 정보를 포함하는 GET과 달리 POST는 body에 정보를 담아 보내므로 바디 부분을 직접 작성해줘야 한다. 이때 파일을 담으려면 multipart/form-data 형식을 사용해야 하며, multipart는 정보를 여러개 보낼 때 사용하므로 서버가 각각의 정보를 어디서부터 어디까지 읽을지를 지정해주기 위해 boundary 플래그를 사용해야한다. boundary는 다른 정보와 겹치지 않는 랜덤화된 문자열을 사용하고, body를 읽기 전에 서버가 알 수 있도록 헤더에 포함해준다. 헤더에 알맞은 ..
using custom widget to widget component using child widget in parent widget UMG를 구성하다보면 계층구조가 복잡해지는 경우가 있는데, 이럴 때 동일한 구조로 반복 사용되는 부분을 따로 위젯으로 만들면 조금 더 보기 편한 계층구조를 이룰 수 있다. 다만 이렇게 할 경우 상위 위젯에서 하위 위젯의 컴포넌트에 접근할 수 없으므로, (ex. 텍스트가 있는 버튼을 하위 위젯으로 만들면 상위 위젯에서는 text 컴포넌트에 접근할 수 없다) 이 값을 변경시켜줄 수 있는 변수를 따로 준비해야 한다. 그리고 하위 위젯의 각 인스턴스마다 실행될 이벤트가 다르다면 하위 위젯에서 로직을 실행하지 않고 상위 위젯에서 처리할 수 있도록 해줘야 한다. 먼저 위젯 생성부터..
위젯 리플렉터는 엔진 슬레이트 위젯의 계층구조와 그 정보를 알 수 있는 툴이다. Window > Developer Tools > Widget Reflector 을 통해 사용할 수 있다. 위젯 리플렉터를 열면 아래와 같이 마우스가 위치한 엔진 위젯에 형광색의 테두리가 표시되며, 위젯 리플렉터 창에서는 마우스 움직임을 실시간으로 반영해 원하는 위젯의 계층구조를 확인할 수 있다. 자세한 정보를 보고 싶은 위젯에 마우스를 올린 채로 ESC 버튼을 누르면 실시간으로 마우스 움직임을 반영하던 계층구조 창이 일시정지 되며 위젯의 현재 상태와 위젯이 구현된 코드 줄의 위치 등 자세한 정보를 확인할 수 있다. 다른 위젯의 계층구조도 확인하고 싶다면 왼쪽 위의 주황색 버튼(일시정지 시에는 회색이 된다)을 눌러 일시정지를 ..
데이터 은닉을 위해 변수를 private으로 설정하면 언리얼 에디터에서 해당 변수에 접근할 수 없다. 만약 매크로에 EditAnywhere를 설정했다면 컴파일 에러가 발생할 것이다. 그럴땐 프로퍼티 매크로 중 하나인 Meta를 아래와 같이 사용하면 된다. private: UPROPERTY(EditAnywhere, Meta = (AllowPrivateAccess = true)) int num; 이렇게 하면 프라이빗 변수를 에디터에서 접근 및 수정할 수 있다.