그리고 옷 갈아입히기 기술 명칭이 따로 있는건지 영문으로;;; 그걸 모르니까 자료 찾기도 더 힘들다는;;;
cloth simlation 하고는 좀 다른 기술 같은데 메쉬 파트를 갈아치우는건가?
2006.06.07 11:22:48 (*.102.122.208)
처음처럼
보통 메쉬 갈아치우기로 처리하는데요. 초기 기획할 때 캐릭터를 몇등분??? 할지 정해서 그 부분을 갈아치우죠.
아님 메쉬 덮어씌우기 -> 뮤가 그렇게 하는거 같은데.. 아닌가? 아님 안습 ㅠ.ㅠ
2006.06.07 12:01:14 (*.85.39.229)
윤원영
저도 대충 그런걸로 알고 잇는데요, GPU 매트릭스 블렌딩 개수에 맞춰서 분할 할때 고려해야 하는등 기타 디테일한 문제들에 대해서
그리고 옷을 새로 그리면 애니메이션을 위해 본에다 박아야 하는데 이런 공정들을 최적화 하거나 일반화 해서 편하게 쉽게 하는 방법을 찾고 있어서요
이미 있는 기술에 대한 스팩과 명세를 알아볼려고 참고 자료가 있지 않나 찾아보는 것입니다.^^
2006.06.07 14:52:35 (*.102.122.208)
처음처럼
그래픽 디자이너와 협상해주세용~
Vertex당 Bone/Weight 의 최대수를 정하고요 (4개정도면 뒤집어 쓰지 싶은데요)
옷을 갈아입힐 캐릭터의 본 수도 정해줘요. 본이 늘어나는 사태가 발생하거나 하지 않게 하나의 캐릭은 하나의 본 세트만 쓸 수 있게 강제해 보아요.
뭐 이정도면 상용 게임을 위한 옷 갈아입히기 / 메쉬 채인지에는 충분해 보입니다.
옷을 갈아입히는데, 메쉬 체인지나 메쉬 덧붙이기 이상의 새로운 시도는 별로 없어 보입니다.
뭐 굳이 있다고 한다면 본이나 소켓 같은걸 추가하여, 그곳에 특정 파트를 붙이는 정도 (뭐 어깨 등에 있는 장신구 등이겠죠) 가 되겠네요.
혹시 다른분이나.. 아님 윤원영님께서 더 좋은 방법이 있다거나 발견하시면 게시판을 통해 알려주세요.
2006.06.07 16:27:29 (*.189.163.250)
윤원영
//처음처럼님 감사합니다. ^^
업무 프로세스상 흠 일단 옷 메쉬를 만드는 것 까지는 더 줄일수 없는 공정이라고 생각합니다만, 옷을 본에 붙이는 게 일이 좀 될꺼라고 생각해서요 이 부분을 줄일수 없을까? 하는 방법을 찾고 있습니다. 1. 아주 딱딱한 갑옷이나 갑옷의 어깨 패드 같은 것(디포메이션이 없는 것)은 소켓을 사용해서 해결한다. 2. 조금이라도 벤딩같은 디포메이션이 있는것은 바렛 인터그레이션을 해서 리얼타임으로 하던지 아니면 애니메이션 돌리고 버텍스를 굽는다. 이렇게 생각하고 있습니다. 마비노기 로브같은건 어떻게 했는지 궁금 하네여, 저런식 - 문자그데로 알몸에 옷 입히는 식- 으로 했을때 문제는 옷에 가려지는 몸통 메쉬도 zzbuffer 처리를 해야 한다는 것입니다. 저 부분을 피하기위해서 일반적은 렌더링 파이프라인 전에 프리프로세스로 가려지는 삼각형들을 처리에서 빼야하는데 옷마다 저런 삼각형의 리스트를 가지고 잇어야 하는지? 저런 삼각형이 캐랙터마다 다를 수가 있는데 그걸 다 가지고 있어야 하는지 하는 문제가 있습니다. 뭐 여러가지 자질구레한 문제들도 있는데 큰건 저정도 고요, 요는 디자이너가 프로그래밍적 요소에 그닥 신경쓰지 않고 옷을 그리면 그냥 입혀진다. 라는 개념으로 업무를 간소화하는데 있습니다. 마비노기에서는 어떻게 했는지 궁금하네요^^
2006.06.07 18:07:14 (*.102.122.208)
처음처럼
흠.. 덧씌우기에 더 가까운 식으로 고려하시네요.
z compare 가 부담스럽기에는 현재 컴퓨터의 그래픽 카드 성능이 워낙 좋아서 -_-a 초대박 대작 게임을 만드시는게 아니라면 무시하셔도 될 듯 하고요 ^^;;
프리 프로세싱으로 z 연산을 처리하기는 무리가 있습니다. 3차원 공간에 있는 메쉬 아닙니까? ㅋ
굳이 이 부분을 최적화 하고자 하신다면, occulsion - culling (스펠링이 맞나 모르겠네요 -_-a) 쪽으로 시도해 봐야 할 듯 합니다.
저라면 메쉬 갈아치우기로 개발하겠습니다 ^^;
2006.06.07 19:27:24 (*.189.163.250)
윤원영
덧씌워진 옷에 가려진 삼각형을 프리프로세싱으로 가려내는 것은 z buffer 테스트로 하면 무겁고요(렌더링하는 시간 만큼 걸리니까요 조금 짧겠지만) 그런 것 보다는 몸통을 이루는 삼각형의 각 정점에서 버텍스 노말로 레이를 쏴서 세개의 정점에서 쏜 레이가 모두 옷을 구성하는 삼각형과 충돌하면 렌더링파이프에 넣지 않는다 라는 식으로 생각하고 있습니다. 개략은 저렇고요 여러가지 문제가 있습니다. 애니메이션을 들어가면 어떤 프레임에서는 가려졌다가 어떤 프레임에서는 나타나고 이럴텐데 그럼 그런 삼각형을 구분해 걸르지 않고 그냥 넘어간다던지 그런 삼각형을 프레임별로 관리 한다던지 여러 문제가 있습니다. 저런 프로세스를 옷 갈아입을 때 한번만 돌리고 나서 삼각형에 태그를 붙여서 관리한다던지... 베스트는 전처리 과정에서 나온 그런 태그정보를 디스크에 저장해서 리얼타임에는 불필요한 연산을 하지 않는 것인데... 관련해서 좋은 방법이 있었으면 좋겠습니다. ㅜㅜ
2006.06.07 19:28:25 (*.189.163.250)
윤원영
//처음처럼 의견 정말 감사합니다 >.<.
2006.06.07 19:33:44 (*.189.163.250)
윤원영
참 버텍스 노말로 레이를 쏴서 가려지는 삼각형인지 분간하는데 문제가 하나 또 있습니다. 3개의 모든 레이가 막혀도 그려져야하는 경우가 있습니다.
예를 들면 M모양의 옷에 M의 골자기에 에지가 걸칙고 모든 정점은 M자 내부에 있는 경우입니다. 이 케이스에 대한 좋은 방법이 있을까염? ㅎㅎ
2006.06.07 20:11:42 (*.189.163.250)
윤원영
아참 레이를 쏴서 판단하는 방법에 추가로 옷과 충돌된 점과 모통을 이루는 삼각형과의 점사이의 길이도 판단기준에 들어가야합니다.
카메라가 옷과 모통사이를 보는 경우도 고려해야하니까요
2006.06.07 22:24:53 (*.176.2.214)
자갈공명
이미 아시는것 같고 중복인듯하지만...
보통은 덧씌우는 형태를 쓰지 않고 몸통 역시 교체합니다. 반팔이라면 반팔메시에 맨살의 팔도 포함되는 형태입니다.
( 물론 이렇게 하면 반팔옷이 여러개 라면 팔도 여러개가 만들어지지만 버텍스데이터는 그다지 용량을 차지하지 않으니까요 )
이렇게 하면 z-fighting에 대해서도 크게 신경 안써도 되고 안보이는 면이 출력되는것도 고려하지 않아도 됩니다. 디자이너도 부담이 그리 크지 않습니다.
마비노기를 많이 안해봐서 정확하진 않지만 로브 밖으로 나오는 손발은 실제 모든 몸이 옷 안에 존재하지 않을거다에 한표입니다. 대략 눈에 보일정도까지만 손/발메시를 넣는다 정도 일겁니다.( 와우는 이게 눈에 확보이는데 법사 로브를 입혀보면 하체는 발목까지밖에 없습니다. 즉 종아리/허벅지 모두 없습니다. )
게다가 렌더링시에 페이스를 선별해서 넣는다는건 선별에 드는 부하도 문제지만 결국 버퍼에 락을 걸어서 정보를 갱신해야 하는데 버퍼갱신에서 갉아먹는 시간은 꽤 큽니다.
( 몸통을 별도로 두고 옷을 입히는 케이스라면 차라리 그냥 그리는게 속도에는 훨씬 더 이득일거라고 생각합니다. - 물론 zfighting 고려 안한다는 전제하에..-_-;;;; )
ps... 방금 마비노기 싸이트를 뒤져봤는데 동영상중에 '마비노기 카툰렌더링 이러케 만드러따' 동영상 보시면 상점npc여자를 맥스에서 불러온게 보이는데 치마 안쪽으로는 아무것도 없습니다. ( 물론 이 영상만 가지고 다리가 없다라고 단정은 어렵겠지만..)
2006.06.08 00:02:33 (*.75.207.234)
윤원영
//자갈공명 감사합니다 ^^
페이스 선별은 플리프로세싱해서 디스크에 저장해서 클라이언트에서 리얼타임으로 게임을 돌릴때는 선별연산을 하지 않는 방식으로가면 선별에 두는 부하에 대해서 신경쓰지 않아도 될것같습니다. 아니면 옷 갈아입을때만 한다던지... 반팔옷이 여러개인데다가 몸통이 다양하다면(굵은 팔 얇은팔 형태가 다른 팔)이라면 데이타가 상당히 늘어날것으로 생각합니다. 아주 대작 게임을 만드는게 아니라면 기존 게임들처럼 메쉬를 교체하는 방법을 사용해도 괜찮을듯 합니다만... 옷을 덧씨우는 방법에 대해 그냥 궁금해서요, 여러가지 조합과 모든 옷에 대해서 본에 정점들을 붙이는 작업이 디자이너에게 부담스러울 것 같기도 해서...^^
2006.06.08 11:11:13 (*.102.122.208)
처음처럼
말씀하신 세개의 점에서 레이를 쏘는게 바로 occulsion - culling (아직도 확인 안한 스펠링 ㅋ)의 일종이라 할 수 있겠네요.
더 좋은 방법 많고요.
다시 말씀드리지만 z 비교는 상당히 빠른 연산입니다. 메쉬 교체가 아닌 메쉬 덧씌우기로 해도 그걸로 프리프로세싱 하는게 오히려 더 부하가 될 수 있지요. 로딩 타임은 길어질거 아닙니까? 뭐 안하면 좋은 연산이긴 하지요 ㅋ 자갈공명님의 말씀처럼 그걸 굳이 해야 하는 경우라면.. z-fighting 의 문제인데, 디자이너가 잘 해주면 대강 넘어갈 수 있고요. 뭐 z-buffer를 32비트로 쓰면 왠만하면 고민 안할 문제일겁니다.
Z-Buffer 비교가 고민되신다면, 차라리 front-to-back rendering 을 시도하시는건 어떨까요? 프레임 버퍼에 쓰는 횟수가 줄어서 꽤 괄목할만한 성능 향상을 보여주지요 ^^;
2006.06.08 14:24:53 (*.189.163.250)
윤원영
//처음처럼 감사합니다.
일단 여러가지로 간단하게 함 만들어보고 프로파일링 돌려서 속도를 비교해봐야 겠어요^^
감사합니다.
cloth simlation 하고는 좀 다른 기술 같은데 메쉬 파트를 갈아치우는건가?