Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Jack M.A.X.
Založen: 28. 07. 2007 Příspěvky: 60
|
Zaslal: 5. prosinec 2008, 18:13:45 Předmět: XNA - detekce kolizí mezi kamerou a modely |
|
|
Nedávno jsem začal dělat svůj vlastní 3d engine v XNA. Nějaké zkušenosti s DirectX mám, ale spíše jen na 2D úrovni. Potřeboval bych poradit s detekcí kolizí mezi kamerou a modely. Celá geometrie levelu je tvořena modely ve formátu .x. Nějaké informace jsem si už vygoogloval, ale nejraději bych viděl zdrojové kódy, které by přimo ukazovaly řešení tohoto problému. |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 5. prosinec 2008, 20:54:55 Předmět: |
|
|
Kolizí kamery s objekty myslíš detekci toho, zda bude objekt vidět (tedy zasahuje do tělesa kamery) ? Pokud ano, tak můžeš postupovat např. tak, že pro každý objekt vypočítáš tzv. bounding sphere (kouli, která obaluje objekt). Na to je i přímo nějaká funkce, takže to nemusíš kódit. Dále pak budeš testovat, zda koule zasahuje do tělesa kamery, což je komolý jehlan (frustum). Stačí zagooglit "sphere frustum collision" a dostaneš hromadu výsledků. Hodně by Ti mohl taky pomoci tento krátký článek na MSDN, který se zabývá přímo kolizemi v XNA 3.0: http://msdn.microsoft.com/en-us/library/bb313876.aspx
Je to tak typická úloha ve 3D grafice, že žádné kódy nejsou potřeba - všechno už je v XNA, stačí jen najít správnou metodu  |
|
Návrat nahoru |
|
 |
Amorph
Založen: 06. 09. 2007 Příspěvky: 68
|
Zaslal: 6. prosinec 2008, 12:26:44 Předmět: |
|
|
V xna je to fakt jednoduchy. Pouzivam to zhruba takhle:
kód: |
BoundingFrustum frustum=new BoundingFrustum(camera.viewMatrix*camera.projectionMatrix);
BoundingSphere bs=object.Model.Meshes[0].BoundingSphere.Transform(Matrix.CreateTranslation(object.pos));
if (bs.Intersects(frustum))
object.Draw(camera.projectionMatrix, camera.viewMatrix);
|
Pokud ma tvuj model vic meshu, tak samozrejme musis BoundingSphere spocitat sam, ale to je docela snadny. |
|
Návrat nahoru |
|
 |
Jack M.A.X.
Založen: 28. 07. 2007 Příspěvky: 60
|
Zaslal: 6. prosinec 2008, 16:45:18 Předmět: |
|
|
Díky, to je přesně ono, co jsem potřeboval. |
|
Návrat nahoru |
|
 |
|
|
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