Модель неправильно отображается в XNA, игнорирует некоторые деформации костей. Ответить Цитировать Редактировать Я очень новичок в 3D-моделировании, однако мне нужно кое-что сделать для проекта, который я предпринял.
Основной принцип заключается в том, что мне нужна человеческая модель, которую можно деформировать в соответствии с измерениями пользователя (измеряется с помощью Kinect, но это уже другая история!). Например, я хочу растянуть область живота для более крупных пользователей и т. д.
Используя 3Ds Max, я смог создать модель человека, используя двуногого человека, а затем добавить несколько дополнительных костей, чтобы изменить желудок:
Все это выглядит хорошо и хорошо, однако, когда я загружаю его в XNA, деформация желудка исчезла.
Я несколько в недоумении, почему это произошло, и любые предложения или любые ссылки на учебные пособия о том, как это делать, будут приветствоваться.
Кроме того, когда я просматриваю экспортированный FBX в плагине для просмотра FBX для QuickTime, деформации отображаются абсолютно нормально.
Код для отображения модели (его код F#, преобразованный из примера С#, однако я попробовал его с исходным кодом С# и получил те же результаты):
override this.Draw(gameTime)=
// Copy any parent transforms.
let (transforms:Matrix array) = Array.zeroCreate model.Bones.Count
model.CopyAbsoluteBoneTransformsTo(transforms);
this.Game.GraphicsDevice.BlendState <- BlendState.Opaque
this.Game.GraphicsDevice.DepthStencilState <- DepthStencilState.Default
// Draw the model. A model can have multiple meshes, so loop.
for mesh in model.Meshes do
// This is where the mesh orientation is set, as well
// as our camera and projection.
for e:Effect in mesh.Effects do
let effect = e :?> BasicEffect
effect.EnableDefaultLighting()
effect.World <- mesh.ParentBone.Transform *
Matrix.CreateRotationZ(modelRotation)
* Matrix.CreateTranslation(modelPosition)
effect.View <- Matrix.CreateLookAt(cameraPosition,
focusPoint, Vector3.Up)
effect.Projection <- Matrix.CreatePerspectiveFieldOfView(
MathHelper.ToRadians(45.0f), aspectRatio,
1.0f, 10000.0f)
// Draw the mesh, using the effects set above.
mesh.Draw();
base.Draw(gameTime);
Интересно, есть ли у кого-нибудь идеи относительно того, что пошло не так, или какие-либо идеи о том, как это исправить.
Любые предложения будут высоко ценится.
Спасибо