18/09/11 수업내용
18 / 09 / 11 (Day07 - 화요일) 날씨 좋아요.
- 어제 한거 리뷰.
- 소멸자의 virtual 키워드.
- 디폴트 생성자이외에..
- 디폴트생성자를 안만들면... ? --> 복사생성자때문에 필요하다.. -> 얕은복사의개념....
- abstract 키워드.
- 디자인 패턴소개. 스트레티지, 모델뷰컨트롤러
<지루하니 언리얼로 넘어간다.>
- Blank - > 시작용 콘텐츠 없음
- 레이아웃이 이상하면 -> 창 -> 레이아웃리셋.
- 창 -> 클래스뷰어 -> 액터만 으로 어떤게 있는지 확인
- 큐브를 하나 배치해본다.
- F키, 마우스 휠, asdw 오른쪽 마우스버튼누르고..
- 알트키 + 마우스 왼쪽 -> 빙글이
- 신규추가 -> 피처또는콘텐츠 팩 추가 -> 삼인칭 -> 프로젝트에 추가
- 하단에 ThirdPersonOverview
- 파일작업은 탐색기에서 하지말아라 일단은!
- 레벨을저장하면 MAP이라보면된다. ==> ctr + S
- 콘텐츠 -> 새폴더 -> Maps 만들고 거기에저장. -> NewMap
- 언리얼에서의 레벨 : 액터들이 배치된 장면 (유니티의 Scene과 같은 개념)
- Vector<Actor*>형식으로 레벨들을 받는다? ->TArray로 작업이되어있다.
-> Vector보다 빠른애
- 하단의 콘텐츠 오른쪽클릭 -> 탐색기에 표시
- config --> 옛날부터쓰던형식들
content가 우리가 쓰는곳
Intermediate -> 중간파일 : content에 있는것들을 게임에맞게 변형시킨것?
saved -> 예전에는 너무 잘 꺼져서... 그걸 대안으로 복원용으로 만들어진것.
따라서 git에 등록할때는 config, content랑 day07.uproject만 추가하면 된다.
- git사용법...
- ThirdPersonBP -> Maps -> Third...map 클릭
- alt + s -> 시뮬레이트모드... -> 캐릭터가 안움직여
- 캐릭터가 플레이 안될때는 -> 선택된 뷰포트로 !!
(에디터의 우측상단참고)
- 상자 클릭 -> 오브젝트이동모드
- 움직이는 단위 -> 스냅단위..
- 표면 스냅핑 : 곡면에 따라가게 만들때 사용.
- End키 누르면 밑바닥에 딱 붙는다!
- 회전 단위..
- 카메라속도 디폴트값
- 월드좌표, 물체중심좌표...
- W, E, R로 이동모드, 회전모드, 스케일모드 선택가능.
- Alt + G , H , J, K 로 보는 모드 전환가능.
- 언리얼에서는 cm단위.
- 컨트롤 + W 하면 복사 , 알트 + 움직이면 복사.
- 상단에 세팅에서 월드세팅
- 월드에대한 것을 설정할수있다.
- 스태틱-> 그림자가 안움직이는애 빌드.. 해야 움직임.
- 스테이셔널 -> 이동하지않지만 값은 바뀐다. ( 보통 빛 )
- 무버블-> 실시간그림자...
- BuildData...
- 다시 월드세팅에서 -> GameMode... -> 게임모드를 어떻게 할것인가?
- 편집에 프로젝트 세팅 -> 맵 & 모드 -> GameModeBase...(룰을조정하는것)
- 언리얼에서의 드래그해서 넣은거는.. ㄴㄴㄴ -> 모두저장 꼭해야해.
// 쉬는 시간 //
- Shift + F1 -> 플레이중... 마우스커서보이기. , 빙의와 탈출
- 신규추가 -> 피처또는콘텐츠 팩 추가 -> 콘텐츠 팩 -> starter content 프로젝트에 추가
- StartContent -> Maps -> StarterMap 구경
- 왼쪽상단에 라이팅포함있는곳 눌러서 -> 최적화 뷰모드
-> 라이트복잡도...같은것 많이쓸것(alt +7)
- 빨간색이 많을수록 라이트가 많이필요해서 성능이 많이 요구된다.
- 셰이더복잡도 -> 녹색부분은 셰이더가 가벼운곳, 빨간색은 조금높은곳,
흰색은 제일 빡쌘곳(파티클이 대부분 높아)
- alt + 2~8,0(라이트맵밀도 -> 용량조절위해)
- F11은 전체화면 , G누르면 조작하는화면 없앨수있다.
- 오른쪽하단 뷰옵션 -> 엔진콘텐츠 표시 -> 리소스 완전많다.
- 언리얼은 리소스들의 썸네일을 여러면으로 볼 수 있다.
뷰옵션 -> 섬네일편집모드 -> 알트키누르고 돌려
- 리소스가 게임에서 어디에서 쓰이는지 알고싶으면 오른쪽클릭 후 레퍼런스뷰어를 누른다.
( 남의 것 분석할 때 많이 사용)
- 오른족클릭 후 사이즈맵 -> 용량을 어떻게 쓴다를 볼 수 있다. (메모리, 디스크 크기)
- 이제 새 레벨을 만들어보자.
// ctrl + N -> Default
- 화면에서 캐릭터를 어떻게 뛰어다니게 만들까?
월드세팅에서 게임모드를 3인칭게임모드로 바꾸자.
그럼 플레이시에 움직이는 캐릭터를 볼 수 있다.
- Bluprint Nativization Method -> Disabled(블루프린트그냥쓰기), Inclusive, Exclusive
-> BP---(변환)--->C++ 내가만든거나 다른사람이만든거
- C++ ---> UE4 C++ = BP
- Unity.bibucket소개
- Unity와 언리얼에 가장큰차이는 사용자가 입력을 어떻게 할지 미리만들어놓고 아닌지...
- Real-Time Rendering 책 소개. -> 영어로, 수도코드만있다. 2천페이지 넘는다.
Collision Detection
Real-Time Ray Tracing...
OpenGl로 배우는 3차원 컴퓨터 그래픽스.
- UE4 -->mapData Load --> GameMode 생성. -->
- 유니티는 왼손기반, 언리얼은 오른손기반.
- 이제 플레이어가 들어갈 집을 만들것.
- 지오메트리 -> 박스 -> Hollow 체크 -> 뚫은채로 보고작업하라고... -> Gray Box라는 기법.
- 박스하나더해서 Subtractive로바꾸고 겹치면 겹친부분이 지워져서 문을 뚫을 수 있다.
- 이놈은 현재 성능면에서 느리다.
- 브러시를 눌러야 정보가 잘 보인다.
- 빛의 방향을 보는방법.
- 라이팅 퀄리티에따라 빛이 이쁘고 안이쁘고..
- world map engine 소개. -> 랜드스케이프 -> 파일에서 임포트
https://www.youtube.com/watch?v=MfmT9qhh_Ko
- 건축물 만들기.
// 쉬는시간 //
- 브러쉬 묶어서 -> crtl + G
- 그룹 풀기 -> shift + G
- 새 폴더 만들어서 넣기.
- 스태틱메쉬생성하고 빌드하면 이상하게 빛처리가 안되는 현상 발생.
- 지오메트리 편집 ..
- 페인트 -> vertex컬러 칠하는것. -> vertex칠한부분만 움직여줘
(예:풀떼기 끝부분 바람에 일렁이는 모습처리)
- Blender나 Max를 쓰세요. Shader
- 폴리지 풀만들기.
- 스카이라이트, 스카이스피어, 개념.
- 포인트라이트 사용.
- 시네마틱은 컷신용 카메라 따로만들때 쓴다.
- 비주얼 이펙트
- Atmospheric Fog 먼곳안개처럼 뿌옇게 보이기.
- 블로킹 볼륨 -> 못가는 영역.
- 볼륨을 사용하여 날씨 영역등을 조정할 수 있다.(눈오다가 비오다가)
- 킬 Z 볼륨 ---> 그 영역에 들어가면 죽는다는것을 설정해놓는것.
- 컴포넌트개념.
- 해를 돌려버리고 , skySphere에 Refresh Material을 체크해주면 밤이되어버린다.
- static mesh(옛날?) , 던전시즈? component 붙이기 (새로운스타일?)
<액터를 새롭게 만들어보자>
- Class 부터 만들어보자. -> BluePrint로 일단!
- BluePrints 폴더만들기. -> 블루프린트 클래스 만들기 -> Actor로 만들자.
- 왼쪽상단 멤버변수.
- 컴포넌트추가 -> 액터에 자식으로 되는느낌임
- 컴포넌트추가 -> 검색 -> static mesh -> 오른쪽에서 바위..
class BP_Actor : public AActor
- 컴파일 -> 저장.
- VFX ---> 영화효과.
- 이벤트그래프
- 스크립팅 ->엔진님이 그림을 띄워주고(이벤트처리) -> 나는 일부분만 오버라이드해주는것.
vs 프로그래밍 ->시작부터끝까지 다 내가 작성..
- 블루프린트 최대단점이 업데이트하기가 쉽지 않다.
- 변수 -> Actor-> 오브젝트 레퍼런스 -> *(포인터) 변수
// 쉬는 시간 //
- 장작 만들어보자.
- static mesh를 큐브로!
- 트랜스폼(상대좌표)
- meterial바꾸자.
- 장작을 만들었으니 불을 만들자 -> particle System
- audio component!!
- fire ----> 사운드 큐 ---> 사운드 프로그래밍을 BP로..
- light주고, sphere collision
- sphere 선택하고 Collision Presets가 OverlapAllDynamic으로 되어있는걸 BlockAll로 바꾸자.
- 다시 OverlapAllDynamic으로 변경 해서 충돌처릴 하기위해
ActorBeginOverlap함수만들자 (이벤트그래프에서)
- ActorBeginOverlap -> print String 그리고이어
(하얀선은 흐름선이다)
- 이벤트그래프 빈공간에 mouse 검색.
- ThirdPerson 가서 이벤트그래프 -> 왼쪽마우스 버튼 추가 ->
pressed -> spawn Actor from Class ->
- 구조체 핀 분할...