1

モデルはXNAで正しく表示されず、一部の骨の変形を無視します。返信見積もり編集私は3Dモデリングに非常に慣れていませんが、実施したプロジェクトでいくつかの作業を行う必要があります。

基本的な原則は、ユーザーの測定値に合わせて変形できる人間のモデルが必要であるということです(Kinectを使用して測定されますが、それは別の話です!)。たとえば、大規模なユーザーなどのために胃の領域を伸ばしたいです。

3Ds Maxを使用して、Bipedを使用して人間のモデルをリギングし、さらに骨を追加して胃を変更することができました。

ここに画像の説明を入力してください

これはすべて見栄えが良く、XNAにロードすると、胃の変形がなくなりました-

ここに画像の説明を入力してください

なぜこれが起こったのか、そしてどんな提案も大歓迎だろうか、あるいはこの種のことをどのように行うべきかについてのチュートリアルへのリンクについて、私は幾分途方に暮れています。

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

ここに画像の説明を入力してください

モデルを表示するためのコード(その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);

何がうまくいかなかったのか、これをどのように分類するのかについて誰かが何か考えを持っているかどうか疑問に思います。

任意の提案をいただければ幸いです。

ありがとう

4

1 に答える 1

3

胃に余分なボーンを追加し、maxに、新しいボーンに従っていくつかの関連する頂点をいくつかの重み係数でモーフィングするように指示した場合、Xnaのデフォルトのコンテンツプロセッサを変更して、それを取得するモデルを構築する方法を指示する必要があります。考慮に入れます。デフォルトでは、そうではありません。

アプリハブのスキンモデルのサンプルを見てください:http://create.msdn.com/en-US/education/catalog/sample/skinned_model

すべての関節(肘、膝など)は、関節が曲がるにつれて少し変形します。最終的には、単一の頂点が複数の変換の影響を受けるようにする必要があります。

于 2012-02-15T20:42:24.247 に答える