Модель не отображается правильно в XNA, игнорирует некоторые деформации кости Ответить Цитировать Редактировать
Я очень плохо знаком с 3D-моделированием, однако мне нужно сделать кое-что для проекта, который я предпринял.
Основной принцип заключается в том, что мне нужна человеческая модель, которая может быть деформирована под измерения пользователей (измеренные с помощью Kinect, но это уже другая история!). Например, я хочу растянуть область живота для крупных пользователей и т. Д.
Используя 3Ds Max, я смог подстроить модель человека, используя двуногих, а затем добавить несколько дополнительных костей, чтобы изменить живот:
Все это выглядит хорошо, но когда я загружаю его в XNA, деформация желудка исчезает -
Я несколько растерялся из-за того, почему это произошло, и любые предложения будут приветствоваться, или любые ссылки на учебные пособия о том, как это делать.
Кроме того, когда я просматриваю экспортированный FBX в плагине для просмотра FBX для QuickTime, деформации отображаются абсолютно нормально.
Код для отображения модели (ее код F #, преобразованный из примера c #, однако я попробовал его с исходным кодом c # и получил те же результаты):
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);
Интересно, есть ли у кого-нибудь идеи относительно того, что пошло не так или какие-либо идеи о том, как это отсортировать?
Любые предложения приветствуются.
Спасибо