yuchi's Development Home


요새 하는 작업

조회 수 2483 추천 수 0 2011.11.21 17:27:28

라이트맵을 구현해 보신 분들은 아실겁니다.


시각적으로는 연결되어있는 오브젝트라도 기하구조상으로는 잘려있는 경우라든가 매쉬의 모서리 부분이라든가 라이트맵을 적용할때 어쩔 수 없이 금이 가는 현상이 있습니다.


오브젝트를 자르고 오브젝트 안에서 면을 펼쳐서 라이트맵의 uv좌표를 부여하다보면 인접한 매쉬가 반드시 인접한 텍셀을 가지도록 보장할 수 없습니다.


즉 모서리를 기준으로 바로 옆의 삼각형이지만 라이트맵 텍스쳐 상으로는 멀리 떨어진 텍스쳐 공간일 수 있다는 것이죠.


이 경우는 텍스쳐 블랜딩의 수혜를 받기는 커녕. 텍스쳐 블랜딩으로 오히려 금이 가는 현상이 더 도드라지게 보입니다.


퇴사 후 이 문제에 대해서 좀 진지하게 생각을 해봤습니다.


고민의 결과 3차원 상에서 텍셀들을 블러링 시키는 방법을 생각해봤습니다. 사실 별 대단할 것도 없는 아이디어지요. 


bsp트리같은걸 만들어서 씬 전체의 엣지를 싸그리 때려넣고 3차원상의 텍셀(저는 LIGHTMAP PATCH라고 부릅니다.)을 몽땅 때려넣어서 엣지 부근의 텍셀들을 잡아서 엣지를 따라 움직이며 블러링 하는 방법입니다.


이 아이디어로 지난 일주일 정도 코딩을 해서 일단 결과는 봤습니다.


속도문제나 그런건 어느 정도 해결을 했는데 문제는 역시나 퀄리티. 더 정확하게 말하면 블러링을 해도 인접한 텍셀이 영 쌩뚱맞은 녀석들이기 때문에 렌더링시 텍스쳐 블랜딩의 결과로 전혀 상관없는 텍셀의 영향을 받게 된다는 거죠.


으...그러니까 애초에 근본적으로 블러링의 문제보다 인접한 텍셀이 관계있는 놈인 경우, 관계없는 놈인 경우에 대한 처리가 선행되어야 했던 겁니다.


라이트맵을 꽤 오랜 시간 붙들고 있었지만 그 문제에 대해서 확실히 처리해본 적은 없었어요. 아니 고민조차 안해봤습니다.


3차원상에 텍셀을 위치시키고 그림자와 라이트에 대해서 컬러값만 계산하면 된다고 생각했었었죠. 그 텍셀들이 삼각형 안에 확실히 포함되는지 아니면 걸치는지 바깥으로 나가는지에 대해선 고민을 안해봤었던 겁니다.


해서 다시 요 몇일 새 유효한 텍셀과 그렇지 않은 텍셀로 구분하는 작업을 했습니다. 별거 아닙니다. 텍스쳐 위에다 삼각형을 그려서 마스크용 비트맵을 만드는거죠. 라이트텍스쳐와 1:1 대응되는 흑백 마스크 텍스쳐를 만들어두면 텍셀의 유효성 처리에 상당히 요긴하게 쓸 수 있으니까요. 


아이디어는 단순했지만 막상 텍셀 위에다 삼각형을 그려보니 이것도 간한하지가 않데요. 지금까지는 삼각형의 레스터라이즈를 구현해본적이 없었습니다. 당연히 GPU가 해주니까요. 


어쨌든 직접 구현해보니 생각할게 많더군요. 하여간 삼각형을의 세 점을  Y축으로 소트하고 수평선을 기준으로 자르고 하면서 레스터라이즈 코드를 작성했습니다. 임의의 숫자들을 부여해서 테스트를 해보니 잘 돌아갔습니다만 역시나 복잡한 데이타를 넣으니 오차 문제가 속을 썩히더군요.


라이트맵 좌표는 0.0000673이런식으로 아주 작은 숫자가 나오는 경우가 많아서 기울기 계산이라든가 할때 골때리는 문제가 꽤 발생했습니다. 


집중되는 새벽 시간을 이용해서 끈기있게 디버깅을 하고 코드를 튜닝해서 어느 정도 제대로 작동하게 만들었습니다.


일단 마스크 비트맵을 뽑았고 이제 할 수 있는게 훨씬 많아졌네요. 당장 라이트맵 텍셀 드로잉 시에 생겼던 문제들도 깔끔하게 해결할 수 있을것 같습니다.


2006년도 이후로 라이트맵 텍스쳐를 어떻게 사용하고 있는지 확인을 안해봤는데 이번에 뽑아보니 나름 감회가 새롭네요. 생각보다 공간 활용 잘  했구나 싶기도 하고.


여튼 그런 작업들을 하고 있습니다. 뭔가 비주얼적으로 공개할만한게 생기면 또 포스팅 하겠습니다.




LM_Mask0556.jpg




List of Articles
번호 제목 글쓴이 날짜 조회 수sort
21 dx11프로젝트 - 테셀레이션(Curved PN Triangles) file 여치 2011-03-15 6903
20 인디게임 FEZ 개발자 필 피쉬, 최근 일본 게임에 대한 평가 - 그리고 내 생각 [2] 여치 2013-07-31 6926
19 포스트 이펙트-글로우 file 여치 2004-12-04 7291
18 iOS엔진 프로젝트 file 여치 2012-09-15 7310
17 windows 8에서 dxsdk 설치시 s1023에러를 뱉으며 실패할 때 여치 2013-01-12 7351
16 Visual Studio 2012 Compiling Native for ARM 여치 2013-02-02 7476
15 x64 어셈을 쓰기 위해 몇 가지 찾아본 결과(현재까지 경과) 여치 2005-12-09 7567
14 기적같은 디버깅. 컴파일러 버그? 역시나 그럴리가. [3] 여치 2014-05-14 8178
13 vs2010공백 및 탭 표시 핫키 file 여치 2012-08-08 9018
12 TFS2010 백업으로부터 복원 [2] 여치 2011-07-10 9153
11 Using Windows 8* WinRT API from desktop applications 여치 2013-03-10 9335
10 jailbreaking된 Surface RT에 win32 D3D9엔진을 포팅해 보았다. 여치 2013-02-10 10475
9 WinRT(Windows Store App) 엔진 프로젝트 file 여치 2013-02-12 11890
8 WinRT 디바이스 디버깅에서 DEP0100 : Deployment failed due to a Developer Licensing issue에러를 만났을때 여치 2013-03-04 13602
7 라이트맵 텍스쳐 좌표 생성 코드 개선 file [1] 여치 2006-12-31 15273
6 계속되는 MS의 삽질에 대한 생각. [3] 여치 2013-02-15 15561
5 4DyuchiGX #8 맵툴 [4] 여치 2002-09-02 16966
4 제가 필요해서 만든 OneDrivePlayer가 윈스토어에 올라갔네요. [2] 여치 2014-08-23 20889
3 3D엔진 및 네트웍 솔루션 x64 포팅 프로젝트 대충 완료 file [4] 여치 2007-05-05 37367
2 dx11프로젝트 - 아웃라인 쉐이더 및 테셀레이션 여치 2011-06-06 38123
天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 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