.[ ČeskéHry.cz ].
XNA jak na pohyb se "skinnovanym modelem" ?

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
petrdake



Založen: 02. 02. 2012
Příspěvky: 2

PříspěvekZaslal: 2. únor 2012, 19:15:03    Předmět: XNA jak na pohyb se "skinnovanym modelem" ? Odpovědět s citátem

Ahoj, potřebuji poradit jak pohybovat s animovaným modelem po scéně. S klasickým mi to funguje ale pokud udělám stejný postup s animovaným, tak se model nevykreslí. (Nebo se možná vykreslí jinde nebo špatně..). Problém který to způsobuje je zřejmě v tomto:

public void RenderModel2(Camera camera, Matrix[] bones)
{
foreach (ModelMesh mesh in model.Meshes)
{
foreach (SkinnedEffect effect in mesh.Effects)
{
effect.SetBoneTransforms(bones);

//effect.World = boneTransforms[mesh.ParentBone.Index] * transforms;
effect.View = camera.ViewMatrix;
effect.Projection = camera.ProjectionMatrix;

effect.EnableDefaultLighting();

effect.SpecularColor = new Vector3(0.25f);
effect.SpecularPower = 16;
}

mesh.Draw();
}
}

Pokud povolím effect.World model se nezobrazí.
Animaci jsem udělal dle tohoto tutoriálu: http://create.msdn.com/en-US/education/catalog/sample/skinned_model
Pohyb a vykreslování podle tohoto: http://www.czechgamer.com/mix/337/Vyvoj-her-v-XNA-6-Jednoducha-3D-hra-1.html

Děkuji za každý návrh, mě už nenapadá čím by to mohlo být
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
petrdake



Založen: 02. 02. 2012
Příspěvky: 2

PříspěvekZaslal: 3. únor 2012, 11:41:50    Předmět: Rešení Odpovědět s citátem

Tak už jsem přišel na to kde byla chyba.Pokud to někoho bude zajímat, správně má funkce vypadat takto:

public void RenderModel2(Camera camera, Matrix[] bones)
{
model.CopyAbsoluteBoneTransformsTo(boneTransforms);

foreach (ModelMesh mesh in model.Meshes)
{
foreach (SkinnedEffect effect in mesh.Effects)
{
effect.SetBoneTransforms(bones);

effect.World = boneTransforms[mesh.ParentBone.Index] * transforms;
effect.View = camera.ViewMatrix;
effect.Projection = camera.ProjectionMatrix;

effect.EnableDefaultLighting();

effect.SpecularColor = new Vector3(0.25f);
effect.SpecularPower = 16;
}

mesh.Draw();
}
}


Důležitý je řádek: model.CopyAbsoluteBoneTransformsTo(boneTransforms);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna