2012-02-15 7 views
1

XNAでモデルが正しく表示されず、骨の変形が無視されます。返信引用編集 私は3Dモデルを初めて使い慣れています。モデルがXNAで正しく表示されない

基本的な原理は、ユーザーの測定値に変形することができる人間のモデルが必要だということです(Kinectを使って測定しましたが、これは別の話です)。たとえば、私は大規模ユーザーのために胃のエリアを伸ばしたいなど

3ds Maxのを使用して、私は二足歩行を用いてヒトモデルリグにできて、その後、胃を変更するには、いくつかの余分な骨を追加しています

enter image description here

このすべては、私はXNAにそれをロードするときしかし、胃の変形が、私は、これは時間を持っている理由として損失でやや午前vanished-

enter image description here

を持ち、十分とよさそうですどのような提案が最も歓迎されるでしょうか、またはこの種のことがどのように行われるべきかに関するチュートリアルへのリンクです。

また、エクスポートされたFBXをQuickTimeのFBXビューアプラグインで表示すると、変形が全くうまく表示されます。

enter image description here

モデルを表示するためのコードが

ある(そのF#コードは、フォームのAC#例を変換し、しかし、私は、元の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); 

誰かが何が間違っているか、これをどのように並べ替えるかについてのアイデアがあるかどうか分かりません。

ご提案いただければ幸いです。

おかげ

答えて

3

あなたは、あなたが伝えるために、XNAのデフォルトのコンテンツプロセッサを変更する必要があり、いくつかの重み係数によって新しい骨によるいくつかの関連する頂点をモーフィングする最大を告げた後、胃に余分な骨を追加した場合それを考慮に入れてモデルを構築する方法。デフォルトでは表示されません。アプリハブのスキニングモデルサンプルで

ルック:http://create.msdn.com/en-US/education/catalog/sample/skinned_model

すべての関節(肘、膝など)フレックスジョイントとしてビットをモーフィング。最終的に、単一の頂点が複数の変換の影響を受けることを望んでいます。

+0

サンプルを勉強しながら、サンプルのアニメーションの面ではなく、BlendWeight&BlendIndicesの概念に集中してください。 –

+0

OK、すばらしい、これは多くの助けになると確信しています。とにかく多くの意味があります!私は良い外観を持って、私はそれを働かせることができるかどうかを確認します。 ご協力いただきありがとうございます –

関連する問題