OpenGL이나 Direct3D 같은 graphics API의 좌표계는 통일돼 있지 않습니다. Game engine을 만들 때엔, 사용자가 이런 graphics API의 좌표계에 대해 신경쓰지 않게 해야 합니다.

그런 목표를 만족시키기 위해, 제가 생각한 좌표계 변환 방법은 두 가지입니다.

첫 번째 방법은 사용자 좌표를 입력 받는 모든 함수마다 graphics API의 좌표계로 변환하고, 내부 처리 또한 graphics API의 좌표계에 맞춰서 하는 것입니다. 이 방법의 단점은 불필요한 변환이 많아지며, 처리 함수들이 좀 더 graphics API에 의존적이 된다는 것입니다.

두 번째 방법은 내부적으로 모두 자체 좌표계를 사용하는 것입니다. 그리고 그릴 때에만  graphics  API의 좌표계를 사용하는 것입니다. 이 방법의 단점은 좌표 변환이 그릴 때에 일어나므로, 그리는 속도가 느려질 수 있다는 것입니다. 그 단점을 보완하려면, 미리 변환한 값을 갖고 있으면 됩니다.

제 생각엔 두 번째 방법이 더 좋아 보입니다만, 정확한 이유는 댈 수 없습니다. 흐흐
2006/04/09 14:04 2006/04/09 14:04

트랙백 주소 :: http://www.easyisright.net/trackback/3

댓글을 달아 주세요

  1. 정문이 2006/06/04 06:20  댓글주소  수정/삭제  댓글쓰기

    이를테면 제가 생각했던 방법도 두번째와 가까운듯해요.
    GraphicEngine.SetWorldTranslate( Node& , LR,UD,NF );

    LR = 좌우, UD = 상하, NF=근원
    이렇게 아예 좌표계라기보단 절대적 기준으로 맞춰버리는거죠.

    겜브리오 같은경우엔 z가 상하값이 되고 y가 근원이 되거든요.
    그리고 메크로등으로 적절히 묶어놓고 컴파일타임
    프리프로세스를 거치면 런타임에 변환할상황은
    없을테니 큰 페널티는 아니겠군뇽.

  2. 조순현 2006/06/05 09:59  댓글주소  수정/삭제  댓글쓰기

    음, 잘 이해가 안 가네.... 그런데 내가 쓴 글도 이해가 안 가네-_-; 좀 더 생각해 봐야겠다;;;

  3. jungmoona 2006/06/05 11:06  댓글주소  수정/삭제  댓글쓰기

    아항!
    설명이 부족했삼요.
    이 쓰레드에서 얘기하고있는건
    "다양한 좌표계로 인한 복잡도 증가"
    물론 좌표계라봐야 왼,오른 두가지 뿐이지만
    이것만으로도 충분히 복잡해요 같은 오른손 좌표계라도
    Up축이 xyz성분중 무엇이 되느냐로 나뉠수가 있으니까요
    그래서 GameBryo엔진의 좌표계를 예로 제시 했던거구요.

    제가 생각했던건 부연설명하자면
    사람이 모니터를 보고있을때를 아예 기준축으로 삼자는거죠.
    xyz성분으로 축을 대신하지 않고
    아예 축의 +-값이 인자가 되는거죠.

    임의의 좌표계가 z축이 상하가 될지 원근이 될지 헷갈릴 필요가 없으니까요.

  4. 조순현 2006/06/06 23:34  댓글주소  수정/삭제  댓글쓰기

    아항, 이제야 무슨 말인지 알겠삼. 사용자에게 축을 숨기자는 것이군. 항상 좌우, 상하, 근원 순서로만 값을 받으면 되니까.... 음, 그럴 듯한데?