Grafiku rendszerek 09 Model
public class CModel:CObject { Model _model;// modellünk neve Effect _effect;// az effect file a megjelenítéshez string _asset;// a betöltendő model neve public CModel(string asset): base() { _asset = asset; Initialize(); } void Initialize() { _effect = new BasicEffect(Device.grapicsDevice, null);// az ismert BasicEffect _model = Load.Content (_asset);// model betöltése }//.x file,.fbx maya/3d max }
Csont,vertex animáció Két metódus létezik az animációk megjelenítésre: Vertex és "Csont" animáció. A Vertex animáció kivágott képekből áll, melyeket egy pózoló modellből vesznek le. A csont animációban, a modell egy "csontváz" melyeket "csontok" alkotnak. Az animáció ügy jön létre, hogy ezek a csontok megváltoztatják a helyüket mozgás során. A csont sokkalta Könnyebb és sokkalta gyorsabb megvalósítani, mint egy Vertex animációt.
public override void Draw(GameTime gameTime) { Matrix[] modelTransforms = new Matrix[_model.Bones.Count];// annyi mátrix ahány csont _model.CopyAbsoluteBoneTransformsTo(modelTransforms); //csontmátrixokat belemásoljuk a matrixainkba foreach (ModelMesh mesh in _model.Meshes)// végigmegyünk az összes meshen { foreach (BasicEffect currentEffect in mesh.Effects)// mindegyiknél beállítjuk { currentEffect.World = modelTransforms[mesh.ParentBone.Index] * Matrix.CreateFromQuaternion(_Rotation) * Matrix.CreateTranslation(_Position) * Matrix.CreateScale(_Scale); //a világmátrixot elforgatjuk eltoljuk és metezzük currentEffect.View = CameraManager.ActiveCamera.View; currentEffect.Projection = CameraManager.ActiveCamera.Projection; } mesh.Draw();// majd ha megvan a rajzoláshoz a mátrixok rajzolunk } base.Draw(gameTime); }