세이박스

[해커톤] 광교 AR·VR 게임톤 - 누구나 참여 가능, 지역무관

가상현실

VR,AR 해커톤 행사를 진행하게 되었습니다.

가벼운 마음으로 주말 모여서 함께 즐겼으면 합니다.

가상현실에 관심있는 개발자, 디자이너, 기획자 분들이 함께 모여 네트워킹도 하면서 여러모로 소통하는 자리가 되었으면 합니다.

많은 참여 바랍니다. ^^

 

광교경기문화창조허브에서 진행하는 AR·VR 게임 제작 해커톤 입니다~
기획자, 디자이너, 프로그래머가 모여 하나의 팀이 되어, 1박2일동안 게임콘텐츠를 제작합니다.  

 

모임기간 : 12월 3일 (토) 14시 00분 ~ 12월 4일 (일) 13시 00분

모임장소 : [광교비즈니스센터] 경기 수원시 영통구 이의동 광교 경기문화창조허브(11층) 

 

* 지인과 함께 신청시 같은 팀으로 프로젝팅 가능합니다.

* 문의사항이 있으시면 jwkim@bigbangangels.com 으로 연락 주시기 바랍니다.

* 개인 노트북을 지참하셔야 참여가 가능합니다.

 

신청 : http://onoffmix.com/event/83818

 

 

VR/AR 360 영상제작 1기 교육생 모집 - 무료교육

가상현실

 

[ 경기도 VR·AR 아카데미 필수과정 ]

 

VR 360°영상제작 1기 교육생 모집

 

경기도와 경기콘텐츠진흥원에서는 ‘VR·AR 콘텐츠 개발 인력 양성’을 위해 ‘도비지원 무료 교육과정’을 운영합니다.

VR·AR 아카데미 필수과정을 통해 VR 360° 영상 제작에 대한 기초이론 및 실습교육을 받고 포트폴리오를 제작할 교육생을 모집하오니 많은 관심과 참여 바랍니다.

 

 

 

모집 개요

VRAR3

교육 특징 및 지원사항

  • VR 360° 영상 기획과 제작에 대한 기술 능력 함양
  • 전 과정 교육비 무료

 

교육 일정

  • 2016년 10월 30일(일) ~ 2017년 1월 8일(일)

 

■ 교육 시간

  • 총 82시간(11주)

– 2주 : 주말(일) 오전 10시~오후 5시

– 9주 : 주말(일) 오전 10시~오후 7시

 

■ 교육 장소

  • 북부 경기문화창조허브(의정부)

 

■ 모집 대상

  • VR 360° 영상 제작에 관심 있는 분

 

■ 모집 인원

  • 20명 내외

 

교육 과정

VRAR2-1

 

문의사항

  • 교육운영사무국 (02-724-1208 / vrar_academy_req@gdca.or.kr)

 

신청방법

https://www.gconlab.or.kr/vrar-academy102/?action=write

[VR스쿨] VR 가상현실 컨트롤러 만들기 - 구글 카드보드 SDK를 이용해서 쳐다만 봐도 콘텐츠 선택되는 기능 만들기

가상현실

 

 

 

마그네틱 스위치를 이용해서 메뉴 선택이나 확인 버튼으로 이용할 수 있으나 마그네틱 스위치가 없을 경우 가장 기본적으로 적용할 수 있는 스위치 방법이 일정 시간동안 오브젝트를 바라 보았을 때, 오브젝트가 선택되는 방식을 기본적으로 이용할 수 있습니다.

 

따라서, 이번 강의에서는 일정 시간동안 오브젝트를 바라 보았을때 동작하는 기능을 만들어 보겠습니다.
이전 예제에서 이용한 BoxCtrl과 RayCast 개념을 그대로 사용하고, 여기에 타이머를 추가하여 응용할 수 있습니다.

 

 

a768a96a0edc3c0b70594024eb9eb9e1_1456887 

 

하이어라키 창에서 오른쪽 클릭 -> 3D Object -> Sphere로 구를 추가합니다.

이 구에 BoxCtrl 스크립트를 그대로 추가합니다.

Tag는 Ball을 추가하여 설정합니다.

 

마그네틱 스위치 인식과 오브젝트 선택 기억나지 않으면 아래 링크를 참고 합니다.

http://vrschool.co.kr/bbs/board.php?bo_table=leture&wr_id=12

 

 

a768a96a0edc3c0b70594024eb9eb9e1_1456887
 

프리팹으로 만든 후 여러 개 적당한 위치에 배치 해 봅시다.

 

 

a768a96a0edc3c0b70594024eb9eb9e1_1456887 

 

using UnityEngine;

using System.Collections;

 

public class TriggerTextCtrl : MonoBehaviour {

//결합할 텍스트 상수입니다.

private const string TEXT = "Count : ";

//접근 제어자를 public으로 하면 유니티 에디터에서 이 변수를 설정할 수 있습니다.

public Cardboard cardBoard;

//3DText의 글자는 TextMesh 컴포넌트에서 변경했기 때문에 TextMesh 컴포넌트를 가져와야 합니다.

private TextMesh textMesh;

//카운트 변수입니다.

private int count = 0;

    //Update 메소드가 호출되기 전 단 한 번 호출 됩니다. 보통 변수들을 초기화 하는것을 여기에다 작성합니다.

    private Vector3 screenCenter;

 

    // 몇 초간 바라보는 것으로 설정할 것인지에 대한 변수입니다. 에디터에서 수정가능하도록 했습니다.

    public float durTime = 3f;

    // 쳐다보고 있는 오브젝트가 저장됩니다.

    public GameObject recentObject;

    // 쳐다보기 시작한 시간을 저장합니다.

    private float startTime;

    void Start()

{

//gameObject에는 본 컴포넌트가 추가된 게임 오브젝트가 들어가 있습니다. GetComponent<가져올 컴포넌트>(); 를 이용하면 컴포넌트를 가져올 수 있습니다.

textMesh = gameObject.GetComponent<TextMesh>();

        screenCenter = new Vector3(Camera.main.pixelWidth / 2, Camera.main.pixelHeight / 2);

    }

 

//매 프레임마다 호출되는 메소드 입니다. 여기서 게임 오브젝트의 변화를 설정합니다.

void Update()

{

        Ray ray = Camera.main.ScreenPointToRay(screenCenter);

        RaycastHit hit;

        

        //레이저가 공을 맞췄는지에 대한 불리언 값입니다.

        bool isRayHitBox = Physics.Raycast(ray, out hit, 500f) && hit.collider.gameObject.tag == "Ball";

        if (isRayHitBox)

        {

            //최근 쳐다본 오브젝트가 비어있지 않고, 지금 레이저에 맞은 오브젝트와 같은지 여부를 불리언 값으로 저장합니다.

            bool isRecentObjEqualsCollObj = recentObject != null && recentObject.gameObject.Equals(hit.collider.gameObject);

            if (startTime + durTime < Time.time)

            {

                BoxCtrl ctrl = hit.collider.gameObject.GetComponent<BoxCtrl>();

                ctrl.Select();

            }

            else

            {

                recentObject = hit.collider.gameObject;

                startTime = Time.time;

            }

        }

        else

        {

            recentObject = null;

        }

 

        //카드보드에서 Triggered Getter는 트리거가 발생했는지 알 수 있습니다.

        if (cardBoard.Triggered)

{         

            //박스에 초점이고 

            if (Physics.Raycast(ray, out hit, 500f))

            {

                if (hit.collider.gameObject.tag == "Box")

                {

                    BoxCtrl boxCtrl = hit.collider.gameObject.GetComponent<BoxCtrl>();

                    boxCtrl.Select();

 

                    //TextMesh 컴포넌트의 text를 변경합니다.

                    count++;

                    textMesh.text = TEXT + count.ToString();

                }

            }            

        }

}

}

 

 

 

 

TriggerTextCtrl 스크립트를 그대로 사용합니다.

위 처럼 코드를 추가 해 주세요.
추가 된 부분을 설명 하겠습니다.

 

// 몇 초간 바라보는 것으로 설정할 것인지에 대한 변수입니다. 에디터에서 수정가능하도록 했습니다.
public float durTime = 3f;

// 쳐다보고 있는 오브젝트가 저장됩니다.

public GameObject recentObject;

// 쳐다보기 시작한 시간을 저장합니다.

private float startTime;

    

bool isRayHitBox = Physics.Raycast(ray, out hit, 500f) && hit.collider.gameObject.tag == "Ball";

레이저가 공을 맞췄는지에 대한 불리언 값입니다.


bool isRecentObjEqualsCollObj = recentObject != null && recentObject.gameObject.Equals(hit.collider.gameObject);

최근 쳐다본 오브젝트가 비어있지 않고, 지금 레이저에 맞은 오브젝트와 같은지 여부를 불리언 값으로 저장합니다.

 

if (startTime + durTime < Time.time)

{

    BoxCtrl ctrl = hit.collider.gameObject.GetComponent<BoxCtrl>();

    ctrl.Select();

}

 

Time.time은 게임이 시작된 후 경과된 시간이 저장되어 있습니다.

보기 시작한 시간과 바라 볼 시간을 더한 값이 경과 시간보다 작아질 경우, 그러니까 durTime만큼 시간이 지나면

오브젝트에서 BoxCtrl 컴포넌트를 얻어 색을 변경합니다.


else

{

    recentObject = hit.collider.gameObject;

    startTime = Time.time;

}

 

최근 쳐다본 오브젝트가 비어있지 않고, 지금 레이저에 맞은 오브젝트가 같지 않다면 지금 쳐다보고 있는 오브젝트로 변경 해 주고, 시작 시간을 다시 초기화 합니다.


else

{

    recentObject = null;

}

 

레이캐스트에 적중한 오브젝트가 없고, 적중했더라도 태그가 Ball이 아니라면 recentObject 는 null로 비워주어야 합니다.

 

 

 

[VR스쿨] 구글 카드보드 SDK를 이용한 VR 가상현실 콘텐츠 만들기1

가상현실

 

 

 

구글에서 제공하는 카드보드용 유니티 SDK를 다운받아서 안드로이드 폰에 설치할 VR 앱을 만들어 보겠습니다.
유니티의 무료 Asset Store를 이용해서 간단하게 VR 가상공간 모델링을 따라 하는 과정으로 진행해 봅니다.
 
 
349b64f238a157e9fca2a5a5cc7a1894_1456115
 
로 접속해서 구글에서 제공하는 카드보드용 유니티 SDK를 다운 받습니다.
빨간 밑줄 그어놓은 링크 클릭 하시면 됩니다.
(* 2016.06.02 최근 구글 SDK가 업데이트 되었습니다. 아래 실습을 위해서는 첨부파일을 이용해 주세요!)

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
유니티에서 프로젝트 만드시고
프로젝트 에셋 탐색기에서
마우스 오른쪽 클릭 -> Import Package -> Custom Package...를 선택합니다.

 
349b64f238a157e9fca2a5a5cc7a1894_1456115

위 링크에서 다운받은 패키지를 선택해서 열기를 합니다.
 
 

349b64f238a157e9fca2a5a5cc7a1894_1456115



패키지 파일 목록이 뜨는데 그대로 Import 버튼을 눌러줍니다.
 

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
 
정리를 쉽게 하기 위해서 다운 받은 패키지들은 한 폴더 안에 넣도록 합니다.
프로젝트 에셋 뷰에서 오른쪽 클릭 -> Create -> Folder 를 선택하여 폴더를 만듭니다.
 

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
앞으로 다운받은 패키지는 모두 AssetStore에 넣도록 합니다.
옮길 폴더를 드래그 하여 AssetStore에 끌어다 놓으면 됩니다.

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
땅을 추가해 보겠습니다.
적당한 땅을 다운받아보도록 하겠습니다.
도구 모음 -> Winodow -> Asset Store 를 선택해 에셋 스토어 창을 엽니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
카테고리를 환경-> 지형으로 선택 하시고


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
필터를 Free Only(무료 에셋만)로 선택합니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
찾아보시면 Snow Mountain이 있을겁니다 다운 받습니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
이제 월드에 땅과 VR 카메라를 배치 해 보겠습니다.
MainCamera는 VR에서 사용하는 카메라가 있으므로 선택한 후 Del키를 눌러 삭제 해 줍니다.
하이어라키 뷰는 월드에 배치 된 오브젝트 목록을 계층 구조로 보여줍니다.
프로젝트 뷰에서 AssetStore -> Cardboard -> Prefabs -> CardboardMain 과AssetStore -> For_sale -> snow_mountain -> Snow_mountain 을  찾아 하이어라키 뷰에 끌어다 놓습니다.
 

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
다음은 하늘이 없어서 허전하니까 하늘을 추가해 보겠습니다.
에셋 스토어 창을 열어서 skybox 키워드로 검색하고 필터는 역시 무료로 해서 걸러줍니다
 

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
Wispy Skybox를 다운받아 보겠습니다.
창을 열어두면 다운받고 난 후 자동으로 임포트 하는 창이 뜹니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
도구 모음에서 -> Window -> Lighting 으로 라이팅 창을 엽니다.
창에서 보시면 Skybox라고 있는데 오른쪽에 ⊙ 모양을 클릭하시면 사용가능한 하늘 머테리얼(재질) 목록이 뜹니다.
원하는 것을 선택하면

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
다음과 같이 하늘을 그리기 시작합니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
너무 허전하니까 효과를 추가 해 보겠습니다.
Sky FX Pack을 찾아서 다운받은 후 임포트 후 월드에 배치해 주세요

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
혹시나 중간에 유니티가 오류가 발생 해 꺼질 수 있으니 씬(Scene)을 저장합니다.
 

349b64f238a157e9fca2a5a5cc7a1894_1456115
 
File -> Build Setting을 선택 하시면 다음과 같은 창이 나타 납니다.
플랫폼을 안드로이드로 선택 하시고 빌드를 하시면 잠시 컴파일 하다가 오류가 발생 합니다.


349b64f238a157e9fca2a5a5cc7a1894_1456115
 
패키지 이름을 정해주지 않아서 발생하는 오류인데 콘솔에서 오류를 더블클릭 해주신 후 Bundle Identifier 의 패키지 이름을 변경해 주신 후 다시 Build And Run 해주시면 됩니다.
 
 

[서울1기] 유니티5 VR 콘텐츠 제작 스터디 회원 모집 안내 (무료, ~8/13까지 접수)

가상현실

 

2016년 부터 새로운 ICT 산업으로 급부상중인 VR에 관하여 많은 관심이 집중되고 있습니다.

2016년2월21일 부산에서 1기 모임을 시작으로 유니티5를 이용한 다양한 콘텐츠를 제작하였습니다.

부산에서 주로 모임을 진행하다가 최근 서울에서 유니티를 현업에서 실무로 다루시는 부운영자께서 서울 모임을 운영해주시기로 하셨습니다.

저역시 틈틈히 참여해서 모임에 참여할 예정입니다.

 

 

접수마감 : 2016년8월13일 까지 접수 가능
모임비용 : 무료
참여인원 : 제한없음
참가대상 : VR 또는 모바일 게임 개발 등에 관심 있는 아무나 (비전공자 참여가능)
모임일정 : 2016년8월28일 ~ 2개월 정도 예정 (매주 일요일 오후 2시~5시, 3시간 예정)

모임장소 : 강남 토즈 예정 (참여 인원에 따라 변경됨,  MS멜팅팟 후원)

준비물 : 교제, 노트북, 유니티5 설치 

모임 장소 및 스터디 문의 :
이경용 010-2694-8424 / ceo@apptools.co.kr

 

신청방법 :
아래 게시글(URL)에 코멘트로 "비밀글" 체크후 이름, 연락처, 노트북 보유 유무, 유니티 경험 유무, 참가 이유 등을 남겨 주세요!

 

신청 페이지 : http://www.vrschool.co.kr/bbs/board.php?bo_table=notice&wr_id=75

VR스쿨 유니티5를 이용한 VR 콘텐츠 제작 과정 5주차 모임 후기 (7/24)

가상현실

 

 

samsung | SM-N900K | Normal program | Center-weighted average | F/2.5 | 1.9mm

 

 

어느듯 5주차 모임을 가졌네요.

무더운 날씨와 주말임에도 불구하고 이렇듯 열심히 열공하기 위해 나오신 부산 2기 회원님들 화이팅 입니다.

 

이번주는 총알 발사 마무리와 벽에 총알이 부딧힐때 폭파 효과 그리고 총구 앞 스파크 효과에 사운드 적용까지 진행했습니다.

이로써 기본 유니티 과정은은 잠시 마무리 하고 다음 모임 때에는 VR SDK를 이용해서 VR용 콘텐츠를 만들어 보겠습니다.

 

그동안 배웠던 내용을 토대로 애셋 스토어에 탱크나 자동차, 배경 모델링 등을 받아서 응용해보시기 바랍니다.

만드는 결과물은 켑쳐해서 꼭 제출해 주세요!

 

그리고, 8/31 예정이었던 6주차 모임은 휴강하고 다음주로 연기합니다.

다음주 준비물은 유니티5 Android SDK 설치, JDK 설치, 안드로이드 스마트폰, 카드보드 또는 기어 VR, 5핀 USB 케이블를 챙겨 오시기 바랍니다.

 

2주간 무더위 잘 이겨 내시고 과제 꼭 도전하시고 다음 모임때 뵙겠습니다.

참, 모임 후 잠시 잘생긴 회원분께서 맛있는 일본식 라멘 쏘셔서 맛나게 잘 먹었습니다. ^^