monument ball travel 최종 발표

45
Ball travel 2014210066 장민욱 2014210078 이준혁 2014270240 기민형

Upload: -

Post on 17-Feb-2017

188 views

Category:

Engineering


2 download

TRANSCRIPT

Ball travel

2014210066 장민욱 2014210078 이준혁 2014270240 기민형

기획이 왜 변경되었나요?: 기획의 끝은 갈아엎기

Monument Valley착시현상을 이용한 퍼즐 게임

동화적인 그래픽과 음향을 특징으로 함9억원 투입, 2015/01/15 기준 63억원 매출

Monument Valley착시현상을 이용한 퍼즐 게임

동화적인 그래픽과 음향을 특징으로 함9억원 투입, 2015/01/15 기준 63억원 매출

실수는 모바일을 얕본 것

발표자
프레젠테이션 노트
안드로이드 스튜디오, 디바이스별 이슈 해결을 얕봄 모든 조원들의 디바이스에서 돌아가는 코드를 만드는데 무려 2주가 걸림 안드로이드 파편화 XXX해봐

이대로는 안 된다What will it take to save what remains?

간단한 해결책: 모바일 포기

C++

Drawing(CG)

Porting(not CG)

발표자
프레젠테이션 노트
처음에 만들 코드: 컴퓨터 그래픽 그 자체 포팅: 안드로이드 SDK와 자바 이해(컴퓨터 그래픽 아님) 최적화 진행시 모바일 그래픽 도전과제이나, 시간 없어보임 대신 업무 재분배 컴퓨터 그래픽과 경로 탐색을 같이 구현하는 애로사항 과하게 쏠리는 업무부담을 재분배 결과적으로는 좋은 선택

난관과 극복: 엔지니어링은 타협과 해결

우리의 핵심은 CG각 단계에서 어떤 문제에 봉착했고, 어떻게 해결했는가?

렌더링

레퍼런스가 많지 않았다

발표자
프레젠테이션 노트
보통 CG에서 많이 다뤄지는 주제가 아니었다. 참고할 수 있는 코드는 사실상 전무 말 그대로 제로 베이스에서 시작하는 상황

그나마 머리에 떠오르는 해법Fixed camera, Tricky batching

Orthogonal projectionCel shading

그나마 머리에 떠오르는 해법Fixed camera, Tricky batching

Orthogonal projectionCel shading

결국 핵심은 눈속임가장 영감을 받은 장면은 인셉션의 Penrose step

발표자
프레젠테이션 노트
마술사의 화려한 마술도 또 다른 각도에서 보면 밑장빼기일 뿐 가장 영감을 받은 장면은 인셉션의 Penrose step 다른 각도에서 보면 떨어진 것도, 어느 한 시점에선 이어져 보임

어떻게 해결했나?Penrose triangle 접합부의 트릭

발표자
프레젠테이션 노트
Penrose triangle 접합부의 트릭 서로 다른 높이의 구성요소가 붙어 보이는 부분 존재 직육면체의 면들을 높이에 차등을 둬 해결

그나마 머리에 떠오르는 해법Fixed camera, Tricky batching

Orthogonal projectionCel shading

Orthogonal projection소실점이 있는 현실에서는 시점을 고정해도 위치 계산이 힘듦

소실점을 무시할 수 있는 Projection으로 문제를 해결

그나마 머리에 떠오르는 해법Fixed camera, Tricky batching

Orthogonal projectionCel shading

인간은 그림자로도 위치관계 파악

발표자
프레젠테이션 노트
물체들에 그림자가 진 면으로 광원의 개수와 방향을 파악 그 후에 물체의 Shading inform이 거기에 부합하는지 검증 추론과 결과가 다르면 혼란

뺄수도, 넣을수도 없는 irony이동 가능한 경로 설명 & Tricky batching이 들통

가짜 배치를 감추면서 그림자를 넣을 방법

발표자
프레젠테이션 노트
그림자를 뺀다면 실제 오브젝트가 이동 가능한 경로 설명 불가 그림자를 그냥 넣는다면 Tricky batching이 들통날 수 있음

Ambient만으로 해결가능할까?실험결과: 불가능

발표자
프레젠테이션 노트
한 면을 한 가지 색으로 렌더링 가능(요구사항 일부 만족) 결과적으로 그냥 한 색으로만 보여 경로 알려주기 불가능

결론: 셀 쉐이딩

발표자
프레젠테이션 노트
Cartoon rendering(shading)이라고도 불리는 기술 마치 셀 애니메이션(작화가가 직접 그리는)과 같이 광원정보를 의도적으로 단순화하는 것을 기초로 하는 기법 단순화된 조명 광원은 필요 윤곽선은 굳이 필요 없으리라 판단

단순 범위로 나눈 결과는 이상함지나치게 대비가 강해 부드러운 느낌이 살지 않음shadow range를 본디 밝기보다 훨씬 올려 표현

물리엔진수학계산에 갈리셨습니다

해결사항들강체충돌

Face, Edge, Vertex와의 충돌

해결방안1. 구의 중심점과 face 간 거리 방정식 풀기

2. 구의 중심점과 선분 간 방정식 풀기3. 구의 중심점과 꼭지점 사이의 거리

해결방안요약: 방정식을 풀면 됩니다

참 쉽죠?

고난의 흔적

난점1. 중력이 들어가는 순간 모든게 꼬임

2. 충돌 시에 수직항력 처리3. 함부로 충돌 보정을 할 수 없음

경로 탐색

죽음의 행군가장 마지막 작업

발표자
프레젠테이션 노트
가장 큰 문제는 가장 마지막 작업이라는 것 앞에서 얼마나 지연이 되든지 무조건 시간을 맞춰야 함

까라면 까는 거지

구현체는 없지만 계획은 안다...아마 이럴 것이다

발표자
프레젠테이션 노트
구현체가 없는 상태에서도 인터페이스는 존재했음 알게된 구현 정보를 바탕으로 지속적으로 독자 구현

화면의 정보를 가지고 오기gluUnProject : 윈도우 좌표를 오브젝트 좌표로

오브젝트 좌표를 윈도우 좌표로 바꿔줄 수 있지 않을까?gluProject모든 큐브의 버텍스를 프로젝션한다.

발표자
프레젠테이션 노트
광추적 할 때 쓰던 gluUnProject 함수는 윈도우 좌표를 오브젝트 좌표로 바꾸어주는 함수. 오브젝트 좌표를 윈도우 좌표로 바꿔줄 수 있지 않을까?

날개를 달고 구현

발표자
프레젠테이션 노트
위치과 속도를 이용해 벡터를 만들고 큐브의 버텍스와 내적하여 방향을 구함 버텍스와 공과의 거리 기반으로 순간이동 좌표를 계산해 출력

...하다가 망예상과 렌더링 방식이 달랐음

발표자
프레젠테이션 노트
주고받는 API 통합이 안됨 예상과 렌더링 방식이 달랐음 순간이동이 필요한 부분에 큐브가 두개라 프로젝션으로 못 구함 하지만 위치와 속도를 받는 과정에서 미리 처리되어 있는 것들을 발견

새로운 해결책미리 처리되어 있는 것들을 발견

+맵의 데이터(하드코딩)로 해결하기로 함

물론 멘붕도 함께...

발표자
프레젠테이션 노트
위치와 속도를 받는 과정에서 미리 처리되어 있는 것들을 발견 특정 큐브와의 충돌 여부를 판단 가능, 회전축은 xz평면 원점 순간이동이 필요한 시점은 맵의 데이터로 해결하기로 함

추가 문제회전하며 순간이동시 공이 걸림

투명한 블록을 하나 더 두고, 순간이동 각도를 좀 더 실험(노가다)

모두가 느낌: 회의는 정말 중요협업을 어떻게 해야하는가를 깨달음

사전 회의, 토이 프로젝트, 인터페이스 통합, 소통의 필요성

Demo: 그거요

Question?