PathEngine 적용중인데요~~ 제약사항같은것좀 공유해요~

게임의 인공지능에 관한 포럼입니다.

Moderator: 류광

Locked
guy100-2
Posts: 7
Joined: 2008-12-01 11:25

PathEngine 적용중인데요~~ 제약사항같은것좀 공유해요~

Post by guy100-2 »

터레인데이터를 활용해서 패스 데이터(PathEngine)을 뽑아내는 작업을 하고 있습니다.
TestBed_Application을 활용해서 만들어진 데이터를 그리는 작업도 하고 있거든요..
패스엔진의 어려운 도큐먼트를 일일이 이해해기엔 넘 방대해서 작업시 유의할사항 같은걸
미리 알려주셨음 합니다.
지금 진행중인건 (틀리면 지적해주세요^^)

구성 순서는 맵의 폴리곤 정보를 iFaceVertexMesh 를 상속받은 객체를 통해 표현후
pathEngine().buildMeshFromContent() 함수 호출을 통해 iMesh 생성을 했거든요..
이건 그냥 지형폴리곤을 네비메쉬 데이터로 변경한 직후라고 생각됩니다.~
생성된 지형같은경우 1024x1024 x 2m 싸이즈인데.. 한번에 처리하는것이 낳을까요???
아님 토큰으로 나누어서 이어붙이기하는 방법이 낳을까요??

그리고 맵에 배치된오브젝트 데이터를 iMesh로 만들어야하나요?
아니면 iSolidObjects 만들어야하나요?

전반적인 흐름을 경험자분께서 말씀해주시면 큰도움이 될듯하네요..
guy100-2
Posts: 7
Joined: 2008-12-01 11:25

Re: PathEngine 적용중인데요~~ 제약사항같은것좀 공유해요~

Post by guy100-2 »

guy100-2 wrote:터레인데이터를 활용해서 패스 데이터(PathEngine)을 뽑아내는 작업을 하고 있습니다.
TestBed_Application을 활용해서 만들어진 데이터를 그리는 작업도 하고 있거든요..
패스엔진의 어려운 도큐먼트를 일일이 이해해기엔 넘 방대해서 작업시 유의할사항 같은걸
미리 알려주셨음 합니다.
지금 진행중인건 (틀리면 지적해주세요^^)

구성 순서는 맵의 폴리곤 정보를 iFaceVertexMesh 를 상속받은 객체를 통해 표현후
pathEngine().buildMeshFromContent() 함수 호출을 통해 iMesh 생성을 했거든요..
이건 그냥 지형폴리곤을 네비메쉬 데이터로 변경한 직후라고 생각됩니다.~
생성된 지형같은경우 1024x1024 x 2m 싸이즈인데.. 한번에 처리하는것이 낳을까요???
아님 토큰으로 나누어서 이어붙이기하는 방법이 낳을까요??

그리고 맵에 배치된오브젝트 데이터를 iMesh로 만들어야하나요?
아니면 iSolidObjects 만들어야하나요?

전반적인 흐름을 경험자분께서 말씀해주시면 큰도움이 될듯하네요..
넵.. 처음 패스엔진을 접하고 막막했었는데.. 이리저리 정보를 케내다가 얼추 한개의 시퀀스가 되어
저같은 사람에게 도움이 될까하여 자답을 달아봅니다...

처음에.. 패스엔진에서 제공하는 라이브러리를 이용해서 툴을 만들어 볼까 하다가 접었습니다.
이유는 물론 제가 부족하겠지만...
1. 시간 : 주어진 시간이 생각보다 짧고.. 변환후 UI작업이 많아짐...
2. Testbed : 폴리곤단위, (엣지추출)등, 패스데이터를 그려주는데 지형만(최적화 안하고) 뽑았더니 -_- 완전 느리더군요.. 이걸기반으로 만들긴 힘들다고 판단했습니다.

그리고 한달 다른 작업후에 다시 패스엔진작업에 들왔는데.. 전에 방식은 못하겠더라고요.
지인의 조언으로 맥스를 활용하자란 생각이 들었습니다.
간단히 말하자면... 지형과 오브젝트 데이터를 맥스로 임포트후 (최적화 및 설정) 패스엔진 익스포터 활용
입니다.

맥스 임포터는.. 해골책에 나와있는 맥스 스크립트를 기본으로 보고, 김용준님 싸이트에..
MD5 임포터를 스크립트로 짜서 올려놓으셨더라고요.. (김용준님과 이분께 감사드림)
그걸 기반으로.. 지형 임포터를 작성했습니다..
포멧은... 그냥 지형에 지오메트리만 담당하는 파일이 있어서 그걸 읽어드리면서 메쉬로 만들었구용!

오브젝트 같은 경우는.. 테이블로 기본 오브젝트 메쉬와 같이 관리되는 네비메쉬데이터를
관리하면서 해당정보(오브젝트 지오메트리 정보)를 배치TM과 계산해서 임포트 하였습니다.
이 네비메쉬엔 패스엔진이 원하는 속성치가 포함된 버텍스 컬러가 칠해져있구요~..
ps. 패스엔진에서는 주로 버텍스 컬러를 통해서 설정을 하더라고요 ex)파란색 : 포털, 마젠타 : 터레인 포털
(Editable_Mesh) 버텍스 컬러 칠하는거 쫌 꽁기하더라고요... -0-
우선 지형을 읽은다음.. 필요없는 면들을 최적화 한후...
오브젝트 불러들여서 익스포트하면 기본 1차 데이터가 완성됩니다.
현재 여기까지 진행했고여..
Test해봤는데 잘됩니다. 어떤님이 그러셨듯 오브젝트는 적당히 Weld 하면 잘뽑혀요..
비회원

지형 폴리곤의 경우는 ...

Post by 비회원 »

iTerrainCallback 을 쓰시는 것이 여러모로 좋더군요. 높이 차이도 없어지고, 폴리곤 개수도 많이 줄일 수 있습니다.
폴리곤 개수는 줄이는 것이 좋은데요, 만일 패스엔진의 기능을 이용해서 지형 정보를 처리하실 생각이시면 폴리곤 개수를 많이 줄이기는 힘들거에요.

1024 x 1024 위에 얼마나 Obstacle 과 같은 오브젝트가 올라가냐에 따라서 다를거구요, 토큰으로 잘라주시면 아무래도 빨라지지 않을까 싶습니다.

기술지원하시는 분이 답변을 잘 해주시니까, 물어보시면 최적화 부분에 있어서는 빨리 해결하실 수 있으실겁니다.
guy100-2
Posts: 7
Joined: 2008-12-01 11:25

Post by guy100-2 »

말씀 감사합니다. (__)
넵..! 다음 단계로 점찍어둔 단계입니다 ^^;
한번에 이일만 계속 할수없는지라.. 잠깐 외도를 탓다가 진행하려고요...
말씀하신것처럼
2단계로 지형 콜백으로 물려서 평면처리하면 좀더 많은 지형네비메쉬 폴리곤을 아낄수 있을꺼 같아요...
3단계가 분할 로딩이 될꺼같고.. 4단계에선 옵스타클을 처리하는 부분을 생각하고 있습니다.
계속 진행하면서.. 진행결과는 여기다 남기겠습니다...
비회원

Post by 비회원 »

저도 PathEngine을 통해서 네비메쉬를 뽑고 있습니다.


제가 작업하는 순서는
1. 심리스 맵을 지원하기 위해 iMeshFederation, iSourceTiling 생성
2. 하나의 지역을 iMesh 생성 ( 분할 생성 후 합침 )
3. 생성된 iMesh들로 iMeshFederation의 타일 인덱스에 맞는 타일 메쉬로 생성


iMesh 를 만들때 iFaceVertexMesh에 들어가는 데이터는 단순화된 데이터를
사용했습니다.
Locked