게임 내 캐릭터 모델에 권장되는 3D 모델 유형은 수동으로 로드됩니까?

StackOverflow https://stackoverflow.com/questions/585769

  •  06-09-2019
  •  | 
  •  

문제

저는 JOGL로 게임을 작성 중이며 게임 내 캐릭터를 표현해야 합니다.캐릭터 움직임에 뼈대 애니메이션을 사용할 계획이며, 물론 캐릭터의 스킨도 적용됩니다.JOGL에 대한 좋은 모델 로더를 찾을 수 없는 것 같아서 사양 등에 따라 파일 형식을 직접 로드할 계획입니다.또한 Blender를 3D 모델러로 사용할 계획이므로 거기에 존재하는 일부 유형이 가장 좋을 것입니다.

어떤 파일 형식을 사용하는 것이 좋나요?.혼합하다?.x, .3ds, .md2/3/5, ...??나는 임의의 파일 형식을 해독하지 않고도 로더를 작성할 수 있도록 명확하게 정의된 형식을 원하며 앞서 언급한 기능을 지원해야 한다는 것을 기억하십시오.당신이 그것을 선택한 이유와 그것이 왜 가장 좋은지에 관해 당신이 제공할 수 있는 다른 정보도 매우 도움이 될 것입니다!

감사해요!

편집하다:저는 Blender MS3D 내보내기 프로그램을 작성할 예정입니다.완성되면 포스팅하겠습니다 여기.

한편, 아래 표시된 답변을 참조하십시오.그러나 그 이후로 더 많은 일이 일어났습니다.제가 하고 있는 일을 계속 업데이트하지는 않겠습니다. 하지만 기본적으로 jMonkey Engine을 찾았고 이미 ms3d 임포터와 제가 직접 작성하기 시작한 기타 하위 시스템이 있습니다.장면 그래프 관련 내용에도 불구하고(이것이 제가 Java3D를 피하는 이유입니다) 저는 그것과 힘을 합치는 것이 최선의 방법이라고 생각합니다. 그래서 그게 제가 할 일입니다.

도움이 되었습니까?

해결책 2

우선, 다른 두 답변 자에게 감사드립니다. 또한 Basszero는 블렌드 파일에 대해 옳았으며 먼저 Wikipedia를 확인해야했습니다! 믹서기 기억의 거의 불우한 바이너리 덤프입니다.

이 질문을 작성한 직후, 나는 계속해서 OBJ 로더를 작성하기로 결정했습니다. 1) 3D 파일 형식을로드하는 경험을 제공하고 2) 멋지고 일반적으로 사용되는 형식이지만로드하기가 쉽습니다. 결국 큰 결정이되었습니다. 왜냐하면 나는 실제로 물체와 그룹의 차이를 알지 못했기 때문에 재료에 대해서도 많이 알지 못했기 때문입니다. 이 3D 구조에 대한 코드를 설정하는 데 도움이되었습니다.

두 답변 모두 XML 기반 형식을 권장합니다. XML 형식을 원하지 않습니다. 나는 이것이 XML에 적합한 장소라고 생각하지 않습니다. XML은 유연하고 보편적이며 스키마를 쉽게 만들기 쉽기 때문에 이러한 형식이 만들어 졌다고 생각하지만, 제가 찾고있는 것이 아닙니다. 나는 빠르게로드하는 형식을 원한다 (XML은 비교적 말하기는 없다), 유연하거나 인간이 읽을 수 없을 필요는 없으며 XML 라이브러리에 의존하기보다는 수입업자를 쓸 수있는 내용을 원합니다. Basszero는 심지어 "XML의 비용으로"라고 말했으며 그는 완전히 옳습니다. 내가 생각하지 않는 비용은 부담이 될 가치가 있다고 생각합니다.

내 OBJ 로더가 완료되었습니다. 실제 모델 클래스와 분리하여 MeshFactory 인터페이스로 구현하여 앞으로 원하는 경우 다른 로더를 쓸 수 있도록 .... 이것이 계획입니다. 나는 지난 며칠 동안 더 많은 연구를 해왔으며 MS3D 형식을 결정했습니다.

MS3D 형식은 골격 리깅 (조인트) 및 키 프레임 골격 애니메이션을 지원하며, 또한 텍스처 맵과 알파 맵을 지원합니다. 또한, 사람이 읽을 수있는 태그와 레이블 등이있는 공간 (XML 및 OBJ DO)을 낭비하지 않는 쉽게 컴퓨터로 읽을 수있는 이진 형식입니다.

불행히도 Blender에는 MS3D Export 스크립트가 없으므로 직접 스크립트를 작성할 것입니다. 운 좋게도 어려운 과정이 아니며 Blender의 문서를 읽고 다른 수출업자를 예로 사용할 수 있습니다. 나는 내 파이썬을 닦아야하지만 그렇지 않으면 다른 스크립트에서 본 것에서 매우 간단 해 보입니다.

Java 측면은 쉬워야합니다. 실제로 MS3D가 더 체계적이기 때문에 OBJ 형식보다 훨씬 쉬워집니다. 나는 찾았다 명세서 MS3D 형식 온라인의 경우 C 스타일 (Genius!)에서는 엄청나게 자명하고 형식에 대해 더 이상 질문이 없습니다. 나중에 내 자신의 변형을 구현할 수는 있지만이 사양을 구현할 것입니다. 그것은 내 수입업자와 수출국을 쓰는 데있어 가장 큰 것입니다. 나는 내가 보는대로 형식을 수정할 수 있습니다.

대체로, 나는 이것이 최선의 해결책이라고 결정했습니다.

그리고 Basszero, 당신은 내 OBJ 로더에서 본 것처럼 절대적으로 옳습니다. "일단 당신이 그것을 모두 읽으면, 데이터 구성 (디스플레이 목록, 텍스처, 정점 배열, 정점 버퍼 등) 및 렌더링은 완전히 다른 짐승. "

Cruachan : Java3d는 없습니다. 저는 Jogl을 고수하고 있습니다. 나는 실제로 그 책을 소유하고 있지만 (현재는 액세스 할 수 없지만) 그가 어떻게 모델을로드했는지 기억하지 못하지만, 그가 자동으로 수행하는 Java3D 형식 로더를 사용했다고 확신합니다. 내가 사용할 계획이 아닙니다 ... 죄송합니다!

-크리켓

다른 팁

기하학만으로 작업할 수 있거나 자체 텍스처링을 처리할 준비가 되어 있다면 .obj가 아마도 가장 간단하고 널리 지원되는 3D 파일 형식일 것입니다.기본적으로 3D 모델링의 ASCII입니다.

그렇지 않으면 나는 vrml을 선호할 것입니다.잘 정의되어 있으며 시작하는 데 도움이 되는 최소한 몇 가지 코드가 있습니다.무료로 사용할 수 있는 코드를 사용하여 vrml 모델을 java3D에 성공적으로 로드했습니다.기본 파일 크기는 큰 경향이 있지만 압축 형식을 사용하면 이 문제를 해결할 수 있습니다.

나는 .3ds를 추천하지 않습니다.이 형식에 대한 리더를 처리한 유일한 시간은 Delphi Pascal에서였습니다. 지저분하고 정의가 불분명하며 처리하기 어렵고 리더 처리 모델을 내보낼 수 있었지만 '변형'이 많은 경향이 있었습니다. 3D-MAX 자체는 괜찮습니다. 3DS 형식이라고 주장하지만 적절하게 구성되지 않은 다른 패키지의 많은 모델을 거부했습니다.

추가됨:또한 Java3D API와 O'Reilly 책을 살펴보는 것이 좋습니다. Java의 킬러 게임 프로그래밍 Java3D 경로를 따르지 않더라도 많은 질문에 답할 가능성이 높습니다.

나는 Blend가 대부분 Blender의 메모리 구조물의 이진 덤프라고 생각합니다. Blender 외부에서 많은 도움이되지 않을 것입니다. 블렌더를 사용하여 모델을 사용하지만 다른 형식으로 내보내십시오.

그것은 약간의 장점 일지 모르지만 Collada가 3D 정보를 아주 잘 마무리하는 것을 들었습니다 (XML의 비용으로). 거꾸로 JAXB를 통과 할 수있는 Propery 스키마 정의가있을 가능성이 높다는 것입니다.

.md* 형식도 좋은 대안 일 수 있습니다. 그들은 ID 엔진 (Q1, Q2, Q3, Q4, DOOM3)에서 나 왔으며 문서화되어 있습니다. 그들은 또한 애니메이션 시퀀스를 포함합니다.

모든 것을 읽은 후에는 데이터 구성 (디스플레이 목록, 텍스처, 정점 배열, 정점 버퍼 등) 및 렌더링은 완전히 다른 짐승입니다.

WOAH, MAN, MS3D 수출국을 마무리 할 예정입니까? 그렇다면 어떻게오고 있습니까? 나는 정말로 애니메이션과 Fragmotion에서 사용하는 수출국에 손을 대어야하며, 당신의 행동이 나의 마지막 희망 인 것처럼 보입니다.

메시, 텍스처, 골격 및 애니메이션을 포함하여 .Blend 파일에서 정보를 추출 할 수있는 오픈 소스 .Blend 파일 리더가 있습니다.

Ogre와 Irrlicht를 사용하여 몇 가지 예를 참조하십시오.http://gamekit.googlecode.com

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top