2011-09-09 9 views
5

XNA는 꿀벌의 무릎이지만 맞춤 콘텐츠 파이프 라인을 중심으로 완전히 머리를 감쌀 수는 없습니다.XNA의 사용자 지정 콘텐츠 파이프 라인, 확산 형 텍스처를 수동으로 설정하는 방법?

MSDN의 일반지도 샘플과 같은 일부 기본 샘플은 .fbx 파일의 불투명 한 데이터에서 노멀 맵 키를로드 할 적절한 노멀 맵 텍스처에 할당하는 방법을 보여줍니다. 나는 그들이 .fbx 파일에 정의되어 있는지 여부에 따라 키의 이름을 어떻게 알았는지, 불투명 한 데이터가 실제로 무엇인지를 어떻게 알지조차 모릅니다.

재미있는 점은 내용 파이프 라인에 diffuse 텍스처가 설정되어 있다는 코드가 없다는 것입니다. "Texture"라는 음영 파라미터를 사용하면 자동으로 설정된다는 것을 의미하는 것 같습니다. 그러나 매개 변수의 이름을 다른 것으로 변경하면 텍스처가없는 모델이로드됩니다.

확산 텍스처를로드하는 방법을 어떻게 내재적으로 알 수 있습니까? 예를 들어 확산 텍스처를 다른 이름의 셰이더 매개 변수로로드하고 기본 중립 - 흰색 텍스처 파일이없는 경우 어떻게로드 할 수 있습니까?

콘텐츠 파이프 라인이있는 사용자 지정로드 모델을 학습하는 "안녕하세요 세상"예제가 있습니까?

속성 창에서 텍스처를 설정하여 .fbx 모델의 기존 텍스처 참조를 덮어 쓰지 않으려 고합니다.

답변

3

첫 번째로 이해해야 할 점은 XNA에서 두 개의 별도 사용자 지정 콘텐츠 파이프 라인 항목을 만들 수 있습니다. 하나는 가져 오기 도구이고 다른 하나는 프로세서입니다.

가져 오기 프로그램을 작성할 때 원하는 파일을 구문 분석하고 원하는 정보를 원하는 클래스 (개체)에 저장할 수 있습니다. 직접 클래스를 작성하거나 XNA 내에서 특정 클래스를 사용할 수 있습니다. 이 방식으로 파일에서 데이터를 가져와 내장 된 ModelProcessor를 사용하여 XNA Model 클래스 객체로 가져 오기 작업을 수행 할 수 있습니다.

프로세서에 의해 지정된 클래스의 오브젝트를 : 당신이 모델 이외에 다른 개체가 필요한 경우

http://create.msdn.com/en-US/education/catalog/sample/custom_model_importer

는 사용자 정의 프로세서를 쓰기 : 여기

사용자 정의 모델 수입의 샘플입니다 수입업자는 이것을 이것을 또 다른 클래스로 변환합니다 (당신이 그것을 작성하고 있기 때문에, 클래스와 어떤 식 으로든 지정합니다). 이 클래스는 게임에서 런타임에 읽는 .xnb 파일 (XNA 바이너리)을 생성하는 데 사용됩니다. 따라서이 모든 것은 컴파일 시간에만 실행되므로 게임 내용을보다 잘 제어 할 수 있습니다.

이것은 시작하는 좋은 링크입니다 : 기본 FBX 임포터의 행동에 불만이있는 것처럼 사건에 대한

http://msdn.microsoft.com/en-us/library/bb447754(v=xnagamestudio.20).aspx

들린다. 이 경우, 당신은 자신의 것을 작성해야 할 가능성이 큽니다. 아마도 자신의 프로세서를 작성할 필요는 없습니다. 내 첫 번째 링크의 프로젝트가 완료 한 것처럼 ModelProcessor를 기본값으로 지정하십시오.

+0

답장을 보내 주셔서 감사합니다. 같은 사례가 많이 보인 것처럼 보였기 때문에 필자는 필자가 왜 그런지를 아는 것처럼 필요하다고 생각했던 것의 절반만을 수행하는 것처럼 보였습니다. 이것은 저에게 약간 연구 시간을 절약했습니다. –

+0

이 또한 사용자 지정 가져 오기/프로세서 클래스가 확장되는 기본 클래스에 대해 매우 잘 알고 있다는 의미입니다.첫 번째 링크를 살펴 보았습니다. 그 예는 간단합니다. 특히 OBJ 가져 오기 도구를 이미 작성했기 때문에 (특히 FBX 형식이 문제라고 생각합니다). 나는 그것을 개선하여 모든 쿼드를 삼각형으로 변환 할 수 있습니다. –