2012-01-12 11 views
0

複数のオブジェクトを含むシーンがあります。どのように私はxnaでそれをインポートし、各オブジェクトの位置を教えることができますか?今、私の.fbxでシーンをエクスポートして、このようなモデルでそれをロードします。xnaのインポートシーン

cube.model = contentManager.Load<Model>("cub"); 

が、オブジェクトは、その位置を保持しないと、すべて一点に集まっています。

すべてのオブジェクトを個別のオブジェクトとしてインポートするが、シーン内のオブジェクトの位置を保持する方法が必要ですか?

(つまり私は、オブジェクトを操作し、自分ですべてのオブジェクトを再配置しないようにシーン内での位置を保持することができるように、シーンをインポートする必要があります)

答えて

1

各オブジェクトのシーン位置はfbxにあります。それを取得して実装する方法は、すべてのオブジェクトの変形をシーンの原点に対して保持する行列配列を作成し、描画時に各オブジェクトのeffect.Worldを設定するときに適切な変換を利用することです。

//class variables 
Matrix[] objectTransforms; 

//LoadContent section 
cube.model = contentManager.Load<Model>("cub"); 
objectTransforms = new Matrix[cube.model.Bones.Count]; 
cube.model.CopyAbsoluteTransformsTo(objectTransforms);// the magic is done here 

//draw method 
foreach(ModelMesh mm in cube.model.Meshes) 
{ 
foreach (BasicEffect bfx in mm.Effects) 
{ 
    bfx.World = objectTransforms[mm.ParentBone.Index] * whateverLocalTransformYouWant; 
    //draw here 
} 
} 

「objectTransforms」を利用することなく、すべてのオブジェクトは、あなたが経験しているかのように聞こえるれ、世界の原点に位置地元の起源で描画されます。

0

私は個人のためのレベルエディタを作りました私のゲームではほとんどのものがありますが、私は他のモデルにリンクするブレンダーの大きなシーンを持っています。そうすれば、私はすべてのレベルの作品をミキサーで手配することができます。個々の作品を書き出すとき、それはグローバルポジションであり、ゲーム内で正しくインポートされます。私は問題があなたのfbx輸出業者にあると言います。場所を保存するオプションが必要です。

どのモデリングプログラムを使用していますか?ブレンダーを使用する場合は、XNA用に特別に作られたfbxエクスポータセットが必要です。