yuchi's Development Home


요새 하는 작업

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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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




LM_Mask0556.jpg




파일 첨부

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

파일 크기 제한 : 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