Пользовательские конвейеры содержимого в XNA, как настроить диффузные текстуры вручную? - PullRequest
5 голосов
/ 09 сентября 2011

XNA - это колени пчелы, но я все еще не могу полностью обернуть голову вокруг пользовательских конвейеров контента.

В некоторых базовых примерах, например в примере карты нормалей MSDN, показано, как назначить ключи карты нормалей из непрозрачных данных из файла .fbx для загрузки соответствующих текстур карт нормалей.Я даже не знаю, как они узнали, как должен называться ключ, что такое непрозрачные данные, если они определены в файле .fbx или нет.

Интересно то, что в содержимом нет кодаКонвейер, который говорит, как настроены диффузные текстуры - кажется, подразумевает, что вы используете параметр оттенка с именем «Texture», и они устанавливаются автоматически.Но если я переименую параметр в другое, модели загружаются без текстур.

Как он неявно знает, как загружать диффузные текстуры, и как я могу, например, загрузить диффузные текстуры для чтения с помощью параметра шейдера с другим именем и загрузить файл текстуры нейтрального белого цвета по умолчанию, если он не существует?

В связи с этим, есть ли пример "Привет, мир" для обучения пользовательской загрузке моделей с конвейером содержимого?

Обратите внимание, что я не собираюсь переопределять существующие ссылки на текстуры вМодели .fbx, задав текстуру в окне свойств.

1 Ответ

3 голосов
/ 10 сентября 2011

Первое, что нужно понять, это то, что XNA позволяет создавать два отдельных элемента конвейера содержимого: один является импортером, а другой - процессором.

Когда вы пишете импортер, вы анализируете любой файл, какВы хотите и сохраняете информацию, которую хотите, в любой класс (объект), который вы укажете.Вы можете написать класс самостоятельно ИЛИ использовать определенные классы в XNA.Таким образом, вы можете просто написать импортер, который берет данные из вашего файла и, используя встроенный ModelProcessor, превращает их в объект класса XNA Model.

Вот пример пользовательского импортера модели:

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

Если вам нужен какой-то другой объект, кроме модели, напишите пользовательский процессор:

Процессор берет объект класса, указанный импортером, и преобразует его в ещедругой класс (так как вы пишете это, любой класс и любым способом, который вы указываете).Этот класс используется для создания файла .xnb (двоичный файл XNA), который читается во время выполнения вашей игрой.Таким образом, все это выполняется только во время компиляции, чтобы лучше контролировать содержимое вашей игры.

Это хорошая ссылка для начала:

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

В вашем случае кажется, что вы недовольны поведением импортера FBX по умолчанию.Если это так, вам, скорее всего, придется написать свой собственный.Вам, скорее всего, не нужно писать свой собственный процессор;укажите ModelProcessor по умолчанию, так же как и проект в моей первой ссылке.

...