[VR/AR] 가상현실[VR/AR] 이해와 활용 (의 오전 강의노트)


토요일 강의를 듣기위해 6시 40분부터 알람을 듣고 모처럼 일찍 일어나서 새로운 마음으로 수업을 들으러 왔습니다.


판교에서 듣는 강의는 처음이라 설래고 신나긴 하지만 회사 동료분께서 같이 차를 가지고 와 주셔서 감사하게도 편하게 올 수 있었습니다. 대중교통을 이용해서 오려면 꽤나 노력일 필요할 것 같습니다. 신기하게도 어제까지 가산에서 같이 수업을 듣던 분도 계셔서 개발자는 자기개발이 꾸준히 필요하다는 생각 또한 하게되었습니다.


신기하게도 저번 가산에서 빅데이터 강의를 해 주셨던 강사님께서 계셔서 뭔가 오늘은 저 혼자 반가운 사람들을 본 느낌이었습니다.

편의점에서 간단하게 먹을것을 사와 먹으면서 수업을 준비합니다.



========================================  1  ========================================

[ 09 : 00 ~ 09 : 47 ] 


간단하게 오리엔테이션을 진행하였습니다. 다음주 월~수 중 강의평가를 하면 수료증이 나온다고 합니다. 


판교 코스타의 와이파이...

kosta04 / kosta040

kosta01 / kosta109


역시나 지난번처럼 즐겁게 강의를 해 주실 수 있는 강사님인 것 같습니다. 4/1 만우절이라 정말 어이없는 농담을 하셨는데, 아침이라 그런지 머리가 멍 한지 아무도 웃지 않아서 재미있는 상황이 벌어졌습니다. 


게임은 창의력 싸움이라 나이가 들어 안되겠다는 강사님의 이야기로, 수강생들의 개발 수준을 간단히 다뤄본 언어나 도구를 물어보면서 확인하셨습니다. 


강의 계획을 보니 Unity를 보고 오신 분들이 많아서 "Unity를 해야겠다" 라고 강사님께서 이야기를 하셨습니다.


https://unity3d.com/kr 에서 Unity를 보려다가 https://unity3d.com/kr/partners/google/daydream 를 접속해서 보라고 하셨습니다.



가상 현실! 에 대한 개요를 이야기 해 주셨습니다. 

가상현실 이론 -> 스테레오 스코피.

고전적인 기술로는 매직아이 기술이 있다고 하셨습니다. 


Unity의 설치를 진행하면서 강의자료에 있는 VR의 역사에 대해서 간단하게 설명을 해 주셨습니다.



========================================  2  ========================================

[ 10 : 01 ~ 10 : 53 ] 


유니티를 설치 완료 후 Unity 에 대해서 가장 어려운 것이 Unity 회원가입이라는 농담을 하셨습니다.

다행스럽게도 강의 전 회원가입을 해서 사용을 하고 있기 때문에!!!! 시간을 오래 쓰지는 않았습니다.


rotjd!~~ 블라블라 메일이 있고, Password에는 대문자가 반드시 들어가야 한다고 하셨습니다.


하복 기술자였는데 유니티로 넘어왔다고 하셨습니다. 


가상현실과 증강현실에 대한 설명을 추가로 해 주셨습니다. 


가상현실과 증강현실을 구현하기 위해서는 네트워크 환경에 대한 개선도 필요한 상황입니다.


또한 개발 시 표준이 없어서 기기에 맞춰 개발을 해야하는 상황이라고 하셨습니다.


시장의 요구와 기술의 방향이 다른 경우가 많아서 시간이 갈 수 록 기술 능력이 높아도 한국이 뒤쳐져있는 것 같다고 하셨습니다.



유니티 설치가 완료되어 실습을 진행한다고 하셨습니다.




========================================  3  ========================================

[ 11 : 01 ~ 11 : 57 ] 


Unity를 간단히 소개하고 예제실습을 해 보겠다고 하셨습니다.


엔진이라는 것에 대해 먼저 자동차에 비유를 하여 설명을 해 주셨습니다.


유니티란? 덴마크 출신의 3명의 개발자들이 개발한 게임엔진이라고 합니다.


유니티는 대학생들이 2000년 초반에 플레시 세상에서 꿈을 크게 갖고 시작을 했다고 합니다. 3D가 되는 플레시를 만들겠다고 시작을 했다고 합니다. 



그리고 위의 프로젝트 이름을 vrbasic으로 설정 해 줍니다.




위의 화면이 프로젝트를 만들고 나온 유니티의 첫 화면입니다. 하지만 강사님께서는 Unity의 환경에서 드레그 엔 드롭으로 객체를 전달하고 할 때 편하지 않다면서 다른 레이아웃으로 변경을 하겠다고 하셨습니다.




레이아웃 바꾸기!



레이아웃을 바꾸는 방법은 아래와 같습니다. 우측 상단과 중단의 붙여넣은 붉은색 글씨에 집중해주시기 바랍니다. 먼저 우측 상단에 Layout이라는 버튼을 누르면 아래와 같이 2 by 3 ~ Wide 그리고 그 아래에 레이아웃을 저장하고 삭제하고 되돌리는 기능의 팝업메뉴가 나타납니다.


2 by 3을 선택 해 줍니다. 그러면 위의 화면과는 다르게 아래와 같이 Layout이 변경이 됩니다. 이 레이아웃과 각 View에 대한 설명을 적어두었습니다.



Scene View는 Game의 편집화면이라고 보시면 됩니다. 

Game View는 사용자가 보는 Game화면입니다.

Hierarchy View는 Game에서 사용하는 객체를 보여주는 화면입니다.

Project View는 이 Game에서 사용하는 객체와 프리펩, Aeest등 다양한 Resource를 보여주는 뷰입니다.

Inspector View는 객체에 대한 값을 수정하고 위치를 변경하는 등 객체의 정보를 확인하고 수정할 수 있는 뷰 입니다.


레이아웃을 바꾸고 우리가 만든 프로젝트의 씬을 저장하도록 하겠습니다. Scene의 이름은 main으로 하겠습니다.



위의 화면에서 Game View를 보면 카메라 렌더링이 없다고만 나옵니다. 이 문제는 Scene에 Camera가 없어서 발생하는 문제로 이제 Camera를 추가 해 보도록 하겠습니다.



Camera추가



Hierarchy 뷰에서 Create -> Camera 를  선택 해 줍니다






카메라가 추가되어 Game에도 카메라가 비추는 화면이 표시되는 것을 확인할 수 있습니다.







이제 다른 객체인 Cube를 추가 해 보도록 하겠습니다. 카메라의 추가와 같은 방식으로 아래 화면을 따라 해 주시기 바랍니다.


큐브가 추가되었습니다.



이제 추가된 큐브의 위치를 바꾸어 보겠습니다. Transform의 Position에 z좌표를 5로 설정해보시기 바랍니다. 저는 축을 잡고 이동을 해 보다가 찍은 스냅샷이라 소수점 좌표이지만 정수형으로 간단하게 Inspector 창에서 입력을 하여 위치를 설정할 수 있습니다.



이번에는 빛을 추가 해 보도록 하겠습니다. 


아래와 같이 추가하시면 되겠습니다.




빛이 추가된 화면입니다. Scene에서도 이제 그림자가 져 어두운 부분과 큐브의 윗면과 같이 밝은 부분이 구분되어 보입니다.





위에서 큐브와 빛을 추가한 것과 같이 Plane도 추가를 해 보겠습니다. 

Transform에 대해서는 위와 같이 설명을 정리하겠습니다. 유니티의 3차원 좌표계에서는 위치, 회전, 크기에 대한 값을 3차원 각 축에 대해 설정을 할 수 있습니다.



강사님께서 유니티의 좌표계를 설명 해 주셨습니다.



주인공이 0,0,0에서 시작하는 것이 일반적이라고 하셨습니다.



유니티의 좌표체계는 왼손좌표계 검지가 전방 엄지가 위, 중지가 x축 방향입니다. 




이번에는 스크립트를 추가 해 보도록 하겠습니다. 게임에서 객체의 이동이나 삭제 회전 크기변경등 다양한 동작을 처리할 수 있는 구현을 작성하는 코드라고 생각하시면 될 것 같습니다.


스크립트를 추가하면 아래와 같이 Project View에 추가가 되며 이름을 Move로 설정합니다., 그 후에는 Cube를 선택해서 추가한 Move라는 스크립트 파일을 드래그 하여 Cube의 Inspector View에 Drop해줍니다. 

(앞으로 스크립트를 드레그 & 드롭하여 추가하는 작업을 저는 먹인다 또는 준다라고 하겠습니다.)


그리고 Move스크립트를 더블클릭 하여 편집을 해 주겠습니다. 아래의 화면은 Unity의 Script Code 편집기인 모노디벨로퍼 입니다. Visual Studio또한 지원을 하는 것으로 알고있습니다.  


Code 에 아래의 내용을 추가 해 보고 Play해 보시기 바랍니다.

Start()는 Unity에서 시작시 한번 수행되는 함수입니다.



이번에는 같은 작업을 Update()에 옮긴 후 작업을 해 보겠습니다.


Update() 함수는 위의 주석에서 설명한 것과 같이 게임의 매 프레임마다 수행되는 함수입니다.



간단한 문법 150개 정도만 외우면 게임을 짤 수 있다고 하셨습니다.







점심시간은 12시부터 갖기로 하였습니다.






========================================  4  ========================================

[ 13 : 05 ~ 13 : 54 ] 


VR 영상을 하나 보면서 강의를 다시 시작해주셨습니다.


화면이 2분할로 되어있는 영상은 장비가 있어야 한다고 하셨습니다.


또 360도 회전영상 및 포켓몬고나 포켓몬 AR을 통해 게임에 응용된 영상까지 간단히 확인을 해 보았습니다.


각종 Asset을 가져와 자동차와 땅을 만들었습니다.




에셋을 임포트 하면 Prefab이라는 것이 있는데 이것은 유니티에서 이미 작업을 하여 복사해서 사용할 수 있도록 만든 객체라고 생각하시면 됩니다. 저는 이 Sandrail이라는 객체를 추가하여 보니 사막용 자동차가 Scene에 나타났습니다.



땅에 대한 에셋도 하나 받아오도록 하겠습니다.


에셋을 받아 위와 같이 임포트 한 후 맘에 드는 잔디, 녹색 택스쳐 하나를 바닥에 입혀보도록 하겠습니다.

드레그 엔 드롭으로 택스쳐를 입혔습니다.


그리고 Cude에 지난시간에 먹였던 Move스크립트를 먹여줍니다.


Code를 위와같이 수정하여 너무 빨리 움직이지 않도록 해 줍니다.

이제 자동차를 앞/뒤로 움직이게 해 볼 예정입니다. 위와같이 GatA만 입력해도 이 입력을 포함하는 함수나 변수의 이름을 자동으로 보여줍니다.


자동차 전,후진과 핸들 회전까지 스크립트를 수정하여 차를 운행? 하는 느낌을 살짝 내 보았습니다.


수정 후 플레이를 해 주시면 방향키로 차가 움직이고 방향을 전환하는 것을 확인하실 수 있습니다.


========================================  5  ========================================

[ 14 : 05 ~ 14 : 39 ] 




구글 VR 박스를 조립하였습니다.

무슨 패키지를 주는데 완전 ㅎㅎㅎㅎ 납작한 종이상자 조각이랑 테이프찍찍이, 고무줄, 플라스틱 렌즈등이 들어있습니다.



조립을 하려다보니 정신이 없었습니다. 설명서? 라고 할만 한 조립 안내서도 있지만 보아도 보아도 이해를 할 수가 없었습니다.


제가 이렇게 손재주가 없었나 싶기도 했습니다.        


하지만 하다보니 슬슬 모습을 갖추어 갑니다. 왼쪽 부분에 설명서가 살짝 보이네요.



완성! 정말로 쓰고 화면이 좌우 구분된 영상을 보면 잘 보입니다.


정말로 잘 보이는데 뭐라 설명 할 길이 없네요... 하하;;



영상을 봤는데 스마트폰을 넣어야 조금 정상적으로 보였습니다.




========================================  6  ========================================

[ 14 : 56 ~ 15 : 47 ] 

<아직 6강 이후 수업내용이 정리가 덜 되었습니다.>

먼저 자동차 게임을 만든다고 가정하고 길에 대한 에셋을 하나 받아옵니다.






<사진 6_05>

다운로드받은 SDK 패키지를 임포트 해 줍니다.






https://developer.android.com/studio/install.html 경로에서 혹시 안드로이드 세팅이 되어있지 않다면 Andriod SDK를 설치하기 위해 안드로이드 스튜디오를 다운받습니다.


터레인이라고 지형을 설정하는 작업을 해 보았습니다.

 
  을 받아서 또 작업을 하였습니다.



쉬는 시간 안드로이드 스튜디오의 설치를 확인해보니 아직도 멀었네요...


그리고 위에서 다운로드 한  
 를 임포트 하였습니다.

========================================  7  ========================================

[ 16 : 05 ~ 16 : 52 ] 


간단하게 안드로이드 SDK와 JDK경로를 설정하는 방법을 보여주셨습니다.


그리고 나무를 추가해 보았습니다.

풀도 추가를 해 보았습니다.

강사님께서 APK추출을 하기 위해서 Android Studio 설치해서 SDK, JDK 경로를 지정해야 한다고 다시한번 이야기하셨습니다.

goo.gl/5rkPPR

그리고 GVR Demo를 보면서 설명을 해 주셨습니다.

Android Studio가 설치되어 경로를 설정하였습니다.







쉬는 시간에는 Setting을 다 했는데도 Build시 Error가 발생하여 해결법을 질문하였습니다.


http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip


http://mirrors.neusoft.edu.cn/android/repository/ 에서 tools_r25.2.5-windows.zip 다운로드 후 



C:\Users\kosta\AppData\Local\Android\sdk\tools


Tools에 덮어쓰면 된다고 하셨습니다.


========================================  8  ========================================



[ 17 : 05 ~ 17 : 39 ] 


강사님께서는 마지막 시간에 빡세게(?)하는것이 더 의미가 없을 수 있다고 하면서 질문을 받으셨습니다.


덮어썼지만 계속 Error가 발생하여

차에서 총알이 나가게 하는 수업 대신에 계속 Setting을 확인하였습니다.



http://gasaesososo.tistory.com/6 

위의 글을 보고 플렛폼 설치를 추가진행 하였습니다.


계속 되지않아서 경로를 확인 해 보니 압축을 풀 때 폴더가 하나 더 잡혀서 tools 안에 tools 폴더가 생기고 그 안애 Data들이 있었습니다.


해당 자료 경로를 수정하니 정상적으로 Build가 되었습니다!!!

+ Recent posts