일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 어셈블리어
- 어셈블리
- schema first
- 이노베이션아카데미
- raycasting
- 도커
- 동료학습
- psql extension
- c++
- 쿠버네티스
- 엣지컴퓨팅
- mistel키보드
- 레이캐스팅
- 자료구조
- 스타트업
- Cloud Spanner
- 파이썬
- 창업
- enable_if
- 정렬
- 스플릿키보드
- 42서울
- 프라이빗클라우드
- 42seoul
- SFINAE
- 텍스트북
- uuid-ossp
- 부동소수점
- adminbro
- GraphQL
- Today
- Total
목록레이캐스팅 (2)
written by yechoi
각도 기반 레이케스팅에서 텍스쳐 올리는 법을 알아본다. 이 튜토리얼은 레이케스팅 엔진을 구현해, 이미 위 그림처럼 민무늬의 벽을 그릴 수 있다는 것을 가정한다. 아직 민무늬 벽을 그려보지 못했다면, pikuma의 raycasting 튜토리얼을 따라해보거나, 벡터를 이해할 수 있다면 lodev의 튜토리얼을 보길 권장한다(벡터로 레이케스팅을 구현할 것이라면 지금 이 문서는 보지 않아도 된다). 다시 본론으로 돌아와 각도 기반 레이케스팅 엔진을 구현했다면, 우리는 각 레이(광선)가 벽에 맞은 위치를 알아낼 수 있다. 텍스쳐가 있는 벽을 만들기 위해 중요한 것은 '레이가 맞은 벽의 좌표'를 '텍스쳐의 좌표'로 환산하는 것이다. 들어가기에 앞서 설명의 편의를 위해 다음과 같이 변수를 명명하겠다. 플레이어의 위치는..
cub3d는 레이캐스팅을 이용해 원시적인 일종의 3D 게임을 구현하는 과제다. 여기서 레이캐스팅이란 단어에서 짐작해보자면, 광선(ray)을 던져(cast) 현재 위치에서 벽(또는 장애물)이 충돌하는 지점을 찾아 거리를 구하는 방식이다. 원시적인 3D게임인 울펜스타인은 이 방식으로 만들어졌다. 처음 과제를 마주했을 때 든 생각은 '내가 이걸 한다고?'였다. 앞선 과제인 printf 구현도 각종 플래그 때문에 까다로웠지만, 그건 그래도 '어떤 방식으로 해야겠다'는 짐작은 드는 정도였다. 그런데 cub3d는 뭐부터 해야 하는지 감이 전혀 안왔다. 아무 것도 없는 상탠데 어떤 코드를 쓰면 저런 그림이 나오는지요... 레이캐스팅을 이해하고 구현하는 것도 어렵지만, 이 밖에도 cub3d에선 해줘야 할 부가적인 것들..