C# XNA 4.0: как получить тангенс и бинормаль модели? ⇐ C#
C# XNA 4.0: как получить тангенс и бинормаль модели?
У меня есть фрагмент кода, который я пытался получить:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTextureTangentBinormal), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly); VertexPositionNormalTextureTangentBinormal [] данные = новый VertexPositionNormalTextureTangentBinormal [meshPart.VertexBuffer.VertexCount]; meshPart.VertexBuffer.GetData(данные); Однако в итоге у меня возникла ошибка:
'Размер массива не соответствует объему запрошенных данных.'
Итак, я попытался отладить проблему и в какой-то момент сделал это:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTexture), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly); VertexPositionNormalTexture[] данные = новый VertexPositionNormalTexture[meshPart.VertexBuffer.VertexCount]; meshPart.VertexBuffer.GetData(данные); Я заменил VertexPositionNormalTextureTangentBinormal на VertexPositionNormalTexture и альт! Я не получил той же ошибки! Но я получил:
'Текущее объявление вершины не включает в себя все элементы, необходимые текущему вершинному шейдеру. Tangent0 отсутствует.'
Я не уверен, проблема ли это в модели, в конвейере .FBX или... в коде?
[*]Если это проблема модели, то я не уверен, как заставить Blender экспортировать касательные и бинормали, что-то вроде правильного расширения? [*]Если это проблема конвейера, я хотел бы посмотреть, существует ли код конвейера, который ее решает. [*]Если это проблема с кодом, мне бы хотелось... какое-то решение.
В любом случае, мне хотелось бы знать, является ли это хотя бы одной из вышеперечисленных проблем, спасибо!
Я повторно экспортировал модель FBX с включенным Tangent Space и даже с другим расширением Blender (Better FBX Exporter), но это все равно не помогло получить информацию для объектов struct VertexPositionNormalTextureTangentBinormal , поскольку ошибка все равно закончилась следующим образом:
'Размер массива не соответствует объему запрошенных данных.'
Скорее всего, это проблема модели или конвейера... хотя с конвейером я немного запутался, поскольку существуют VertexElementUsage.Tangent и VertexElementUsage.Binormal вполне возможно, что они предназначены только для... других конвейеров.
У меня есть фрагмент кода, который я пытался получить:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTextureTangentBinormal), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly); VertexPositionNormalTextureTangentBinormal [] данные = новый VertexPositionNormalTextureTangentBinormal [meshPart.VertexBuffer.VertexCount]; meshPart.VertexBuffer.GetData(данные); Однако в итоге у меня возникла ошибка:
'Размер массива не соответствует объему запрошенных данных.'
Итак, я попытался отладить проблему и в какой-то момент сделал это:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTexture), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly); VertexPositionNormalTexture[] данные = новый VertexPositionNormalTexture[meshPart.VertexBuffer.VertexCount]; meshPart.VertexBuffer.GetData(данные); Я заменил VertexPositionNormalTextureTangentBinormal на VertexPositionNormalTexture и альт! Я не получил той же ошибки! Но я получил:
'Текущее объявление вершины не включает в себя все элементы, необходимые текущему вершинному шейдеру. Tangent0 отсутствует.'
Я не уверен, проблема ли это в модели, в конвейере .FBX или... в коде?
[*]Если это проблема модели, то я не уверен, как заставить Blender экспортировать касательные и бинормали, что-то вроде правильного расширения? [*]Если это проблема конвейера, я хотел бы посмотреть, существует ли код конвейера, который ее решает. [*]Если это проблема с кодом, мне бы хотелось... какое-то решение.
В любом случае, мне хотелось бы знать, является ли это хотя бы одной из вышеперечисленных проблем, спасибо!
Я повторно экспортировал модель FBX с включенным Tangent Space и даже с другим расширением Blender (Better FBX Exporter), но это все равно не помогло получить информацию для объектов struct VertexPositionNormalTextureTangentBinormal , поскольку ошибка все равно закончилась следующим образом:
'Размер массива не соответствует объему запрошенных данных.'
Скорее всего, это проблема модели или конвейера... хотя с конвейером я немного запутался, поскольку существуют VertexElementUsage.Tangent и VertexElementUsage.Binormal вполне возможно, что они предназначены только для... других конвейеров.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать контроллер Play Station 2, подключенный через USB-порт, в XNA
Anonymous » » в форуме C# - 0 Ответы
- 41 Просмотры
-
Последнее сообщение Anonymous
-