SlideShare a Scribd company logo
DevRookie
Unreal
Engine
Perception
2020.02.29
By TonyChoiMS
AI Perception
Sight Perception
Hering Perception
Damage Perception
여담 & 참고자료
Index
01
02
03
04
05
AI Perception
왜 Perception을 선택했는가?
지각 (Perception)
- 자극에 대응하는 차별 반응의 일종
주로, 센서(눈, 귀 등)에 의한 정보의 취득, 가공, 재구성
- 지각은 환경 내의 사물을 인지하는 일
* 무엇인가의 존재를 발견(Detection)하는 단계.
그것이 무엇인지를 명확하게 알게(Recognition)되는 단계까지 포함.
감각 신호의 외부 원인에 대해 추론하는 것까지를 포함.
Perception란?01
5
감각 (Sensation)
- 자극에 의해 생기는 의식의 체험
1. 외부로부터 받아들이는 감각의 종류 : 촉각, 후각, 미각, 청각, 시각(오감)
- AI Perception Properties
- AI Sight Perception
- AI Hering Perception
- AI Damage Perception
- AI Prediction
- AI Team
- AI Touch
Perception란?01
6
언리얼 엔진에서는 AI가 실항할 로직에 대한 결정을 내리는 데 사
용할 수 있는 도구들이 있습니다.
1. Behavior Tree (Blackboard)
2. EQS (Environment Query System)
3. AI Perception
AI Perception01
4
- 인공지능이 다양한 행동을 취하기 위해선 각각의 상황에
맞는 알림을 줄 수 있어야 하는데, 이 때 사용되는 것 중 하나
가 AI Perception입니다.
- AI Perception은 Player Controller가 없는 Actor가 특정
행동을 하는데 필요한 자극(Perception)을 제공하여 더 생동감
있는 AI를 제작하기 위해 도움을 주는 AI Controller Actor에
존재하는 컴포넌트(Component) 입니다.
AI Perception01
4
Sight Perception
시야 지각
Sight Perception02
8
Sight Perception이란?
- AI 캐릭터가 Level에 있는 특정 액터를 ‘보는’ 행위를 가리킵니다.(시각)
- 여기서 특정 액터란, Sense에 있는 파라미터 값에 따라 조건이 충족
되는 액터를 말합니다.
- 액터가 AI의 시력 반경에 들어가면, PerceptionSystem에서 업데이트
신호를 보내고 발견한 해당 액터를 알려줍니다.
Sight Perception02
10
AI Controller를 상속받는
블루프린트 생성
Sight Perception02
11
Sight Perception02
12
이전에 생성한 AIController를 상속
받은 BP에 AIPerception 컴포넌트를
추가합니다.
Sight Perception02
13
Sight Perception02
14
Implementation : 구현 Sense
Sight Radius : 시야 최대 반경
Lose Sight Radius : 시야 상실 반경
PeripheralVisionHalfAngleDegrees :
주변 시야 각도
Detection by Affiliation : 센스를 발동할 소속 선
택.
Sight Perception02
15
Auto Success Range from Last Seen
Location : 마지막 보인 위치로부터 자동 성공 거
리
Max Age : 센스에서 받은 자극이 잊혀지는데 걸
리는 최대 시간.
Starts Enabled : 활성화 시 시작
Dominant Sense : 우세 센스 지정
Perception Events02
16
OnPerceptionUpdated : Perception System에
등록된 모든 Actor들에게 이벤트 신호를 보냄.
액터 배열을 반환합니다.
OnTargetPerceptionUpdated : Perception
System이 업데이트를 알리는 (단일)액터와 AI
Stimulus 구조체를 반환(추가 정보를 검색)
OnComponentActivated : Perception 컴포넌
트가 Active 상태가 되었을 때 호출되는 이벤트
OnComponentDeactivated : Perception 컴포
넌트가 Deactive 상태가 되었을 때 호출되는 이
벤트
Sight Perception02
17
최초 BeginPlay 이벤트에서 현재 컨트롤중인
Pawn을 변수에 저장합니다.
Sight Perception02
18
팀 정보를 받아와서 피아 식별을 시도합니다.
Sight Perception02
19
적군일 경우 장비 장착을 한 뒤 타겟이 될 Actor를 지정해서 해당 위치로
이동합니다.
Sight Perception02
20
Perception(자극) 이벤트를 발생 시킬
Actor에 AIPerception Stimuli Source 컴
포넌트를 생성합니다.
여기서 Actor는 플레이어가 컨트롤 하는
캐릭터가 될 것입니다.
Sight Perception02
21
Stimuli Source Component
소유 액터에게 Perception System 내 지
정된 센스에 대한 자극 소스로 등록
(Register for sense) 또는 해제
(Unregister from sense)하는 방법을 제
공.
Sight Perception02
22
해당 Actor가 AI의 시야에 들어왔을 때
OnTargetPerceptionUpdated 이벤트를
발생시킬 수 있도록
AI Perception Stimuli Source의 디테일
패널에서 Register as Source for Sense
배열에 AISence_Sight를 추가해서
Sight Perception02
23
OnTargetPerceptionUpdated에서는
AIStimulus에 대한 정보도 받아 올 수 있
기 때문에 디테일한 AI 설계를 위해서 필
요할 경우 사용할 수 있습니다.
Sight Perception02
24
Hering Perception
청각 지각
Hearing Perception03
26
Hearing Perception의 경우는 PerceptionSystem에서 제
공하는 Make Noise함수를 호출해줘야 Hearing
Perception을 업데이트 할 수 있습니다.
Hearing Perception03
27
AI Hearing 센스는 Report Noise Event에 의해 생성 된 사운드를
감지하는 데 사용할 수 있습니다.
Damage Perception
피해 지각
Damage Perception04
29
AI가 Event Any Damage, Event Point Damage 또는
Event Radial Damage 와 같은 손상 이벤트에 반응하게 하는 Sense.
여담05
30
게임이 실행되는 동안 ` 키를 누른 다음 숫자 4키를 눌러 인식 정보
를 표시하면 AI 디버깅 도구를 사용하여 AI 인식을 디버깅 할 수 있습니
다.
여담05
31
물론 C++ 로도 구현 가능합니다.
여담05
32
물론 C++ 로도 구현 가능합니다.
참고자료05
33
https://docs.unrealengine.com/en-
US/Engine/ArtificialIntelligence/AIPerception/index.html
- 언리얼 엔진 공식 문서
https://www.youtube.com/channel/UClb6Jh9EBV7a_Nm52Ipll_Q
- 유투브 채널 CodeLikeMe
https://www.tomlooman.com/
- Tom Looman UE Udemy 코스
마무리05
34
감사합니다.

More Related Content

What's hot

NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
영욱 오
 
Introduction to Unity
Introduction to UnityIntroduction to Unity
Introduction to Unity
University of Auckland
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
Ki Hyunwoo
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
KWANGIL KIM
 
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
강 민우
 
screen less display
screen less displayscreen less display
screen less display
Sukanya Mukherjee
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
Lee Dustin
 
Unreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User InterfaceUnreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User Interface
Nick Pruehs
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
changehee lee
 
Activity lifecycle
Activity lifecycleActivity lifecycle
Activity lifecycle
Rehan Choudhary
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
 
Unreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game FrameworkUnreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game Framework
Nick Pruehs
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
beom kyun choi
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
QooJuice
 
Unity - Essentials of Programming in Unity
Unity - Essentials of Programming in UnityUnity - Essentials of Programming in Unity
Unity - Essentials of Programming in Unity
NexusEdgesupport
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
MinGeun Park
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
NDOORS
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011devCAT Studio, NEXON
 

What's hot (20)

NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
Introduction to Unity
Introduction to UnityIntroduction to Unity
Introduction to Unity
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
 
screen less display
screen less displayscreen less display
screen less display
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
Unreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User InterfaceUnreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User Interface
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Activity lifecycle
Activity lifecycleActivity lifecycle
Activity lifecycle
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Unreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game FrameworkUnreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game Framework
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
Unity - Essentials of Programming in Unity
Unity - Essentials of Programming in UnityUnity - Essentials of Programming in Unity
Unity - Essentials of Programming in Unity
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011
 

More from TonyCms

Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
TonyCms
 
Unreal python
Unreal pythonUnreal python
Unreal python
TonyCms
 
Effective cpp
Effective cppEffective cpp
Effective cpp
TonyCms
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
TonyCms
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
TonyCms
 
About matinee
About matineeAbout matinee
About matinee
TonyCms
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
TonyCms
 
Cascade Shadow Map
Cascade Shadow MapCascade Shadow Map
Cascade Shadow Map
TonyCms
 

More from TonyCms (8)

Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
 
Unreal python
Unreal pythonUnreal python
Unreal python
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
 
About matinee
About matineeAbout matinee
About matinee
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
 
Cascade Shadow Map
Cascade Shadow MapCascade Shadow Map
Cascade Shadow Map
 

Unreal perception