yuchi's Development Home


간단한 눈 처리

조회 수 3370 추천 수 69 2010.02.21 00:31:06

PvP 전용 던젼을 만들고 보스전을 개선해야하지만 전략적으로 어떻게 만들어야할지 설계가 도저히 떠오르지 않고, 의욕도 전혀 생기지 않는다.

안되는거 붙잡고 있어봐야 시간만 낭비고 짜증만 더 할 뿐이라 기분전환을 좀 하기로 했다.

과거로 돌아가서 대략 1년2개월쯤 전.

우리팀 막내 프로그래머 P씨가 입사할때 제출한 포폴을 보면 눈이 펄펄 내리고 있는데 상당히 그럴싸해보였다.

그 당시 구현방법을 물었고 우리 프로젝트에도 적용할 수 있겠다 싶어서 간단하게 샘플 코드를 작성해달라고 했다.

눈 오는 처리 자체는 특별히 어려울게 없었으나, 우리 프로젝트에 바로 적용하기엔 무리가 있었다.

우리 게임의 경우 실내/실외가 공존한다.

실내에서 실외를 볼 수 있고 실외에서 실내를 볼 수 있기 때문에 눈이 오는 처리를 생으로 할 경우 할 경우 실내 천장을 뚫고 눈이 펄펄 내리는 걸 볼 수 있다.

따라서 그 문제를 해결해야하는데,그 당시 같이 있었던 프로그래머 L씨가 의견을 냈다. 렌더타겟 잡고 위에서 맵 전체를 한방 찍어서 z값을 기록하고 그걸로 눈송이를 렌더링할지 판별하자는 것.

생각해보면 쉐도우맵이다.

아이디어가 그럴싸해서 그렇게 하면 되겠네...라고 생각했으나 일정이 바빠서 언젠가 넣어야지 하고 계속 미뤄왔었다.

그게 1년도 더 된 일이다.

요새처럼 미치도록 일하기 싫은 상태에서 스스로에게 동기를 부여할 방법이라곤 약간이라도 재밌는 코드를 짜는것.

그 밖에 화면발이 1%라도 나아지는걸 내 눈으로 확인할 수 있다면 약간 일할 의욕이 더 생기겠지.

눈발이 날리는 기능을 넣는다면 [재미있는 코드작성]과 [화면발의 1%이상 향상]의 두 마리 토끼를 모두 잡을 수 있다.

해서 그 동안 잊고 있던 눈처리를 제대로 넣기로 했다.

지난 주말에 과거 P군이 제공해준 샘플 코드를 참고하여 몇 시간만에 눈 오는 코드를 짰다.

렌더링 코드나 쉐이더 코드보다 엔진의 공간분할에 맞춰서 파티클 오브젝트를 구현하고 최대한 적은 리소스를 사용하게 만드는데 훨씬 많은 시간이 들어갔다.

주중에 몇 일은 TopView로 맵의 depth값을 렌더링하고 확인하는 코드를 짜고 디버깅했다.

목요일은 정기 테스트로 하루의 대부분을 날렸고 금요일에 depth텍스쳐를 참조하여 눈송이를 선별적으로 렌더링하는 쉐이더 코드를 작성해넣었다.
말했듯이 기본적인 아이디어는 쉐도우맵이랑 똑같다. 코드도 거의 같다.

오늘 늦잠자고 일어나니 집에서 뒹굴거리기 짜증나서 노트북을 들고 삼성동 탐앤탐스로 갔다.

100개의 버텍스로 구성된 파티클 오브젝트 하나를 재활용하다보니 생기는 눈송이의 규칙적인 패턴을 불규칙하게 보이도록 수정하고 몇 가지 코드들을 튜닝했다.

범용성을 높이는김에 툴에서 높이맵을 직접 추출할 수 있도록 툴 기능도 추가했다.

예전에 짜둔 코드를 리뷰하고 프로젝션 원리를 다시 한번 리프레쉬했다.

간만의 쉐이더 어셈블리 코드 작성도 재밌었고 화면발도 1%정도는 좋아진 것 같다.

스샷 몇 장 첨부한다.

대충 눈내리는 맵. 배경과 그닥 어울리진 않지만 좌우간 내린다.
snow_sample_00.jpg


그 다음은 우주선 아래서 눈을 피할 수 있음을 보여준다. 즉 우주선의 TopView z값이 눈송이 z값보다 작기 때문에(월드좌표의 y값은 높기 때문에)눈송이를 렌더링 하지않는다.
snow_sample_01.jpg


그리고 z값을 렌더링한 텍스쳐.

snow_sample_02.jpg


댓글 '4'

clever98

2010.02.21 22:52:04
*.71.24.181

우와~ 이쁜네요 ㅎㅎ 눈 피할수도 있고 멋진데요~

여치

2010.02.22 00:57:56
*.176.255.2

clever98 / 감사합니다. 뭐 눈을 피하게 하려고 한건 아니고 실내에서 천장 뚫고 내려오는거 막으려다보니...

손님

2010.03.25 08:26:20
*.214.163.188

은하수같아요

여치

2010.03.25 09:34:52
*.199.248.185

손님/ 배경만 맞춰주면 얼추 눈처럼 보인답니다.
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet



XE Login

天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet