.[ ČeskéHry.cz ].
Bounding box - rotace

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



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 7. srpen 2008, 17:21:55    Předmět: Bounding box - rotace Odpovědět s citátem

Zdravím Vás,

po delší době samostatného bádání se na Vás opět obracím s dotazem. Pro výpočty kolizí využívám již zmíněný bounding box. Který lze jak asi každý "zasvěcený" ví vyjádřit dvěma vectory 3D, např min a max.

Postup je asi následovný, vypočtu si min a max, tyto vectory transformuji:
1) posunem objektu
2) zvetsenim objektu

a můj dotaz je jak na bounding box (min, max) aplikovat rotaci objektu, např že vím že objekt je otočený v ose x o 270 stupňů a já potřebuji i takto natočit pomyslný box.

Díky moc, nějak na to nemohu přijít Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 7. srpen 2008, 17:32:42    Předmět: Odpovědět s citátem

Teda...moc to nechápu...ale jestli používáš pro popis bounding boxu jen min a max, tak se vlastně jedná o axis-aligned bounding box (AABB) a ten jak z názvu vyplývá musí mít hrany zarovnané s osami.
Takže pokud chceš mít nějak obecně natočený BB, musíš ho popsat více parametry než minimem a maximem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 7. srpen 2008, 19:17:24    Předmět: Odpovědět s citátem

Augi napsal:
Teda...moc to nechápu...ale jestli používáš pro popis bounding boxu jen min a max, tak se vlastně jedná o axis-aligned bounding box (AABB) a ten jak z názvu vyplývá musí mít hrany zarovnané s osami.
Takže pokud chceš mít nějak obecně natočený BB, musíš ho popsat více parametry než minimem a maximem.


Tak nyní jsi mi v něčem, v čem jsem si myslel že mám jasno, udělal nějak zmatek Smile

Tak abych se vice rozepsal, muj box (ted nevim jaky) mam definovany min a max, ale tyto promene jsou typu vector3, takze je definovany 6 hodnotami:
min x,y,z
max x,y,z

snad to takto stačí..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 7. srpen 2008, 19:38:41    Předmět: Odpovědět s citátem

K tomu abys mohl ovládat rotaci bounding boxu budeš muset použít OBB - neboli Oriented bounding box.

Ten bych doporučoval definovat pomocí 2 3D bodů - min a max + rotační matice. Rotuje se většinou okolo středového bodu oriented bounding boxu, popř. můžeš definovat další 3d bod, okolo kterého se rotuje - tzv. Pivot point. Myslím že pro kolize objektů to není zas až tak moc - 2* 3 floaty (min + max), 3*3 float matice rotační + 3 floaty jako pivot = 18 floatů na bounding box (to není IMHO tak velký memory storage). Samozřejmě jde definovat i dalšímy způsoby.

Tedy pokud s tím nechceš zrovna provádět ray tracing v reálném čase.

Jinak ke kolizím bych AABB nedoporučoval tolik jako OBB (teď se ozve plno lidí, že používá AABB a jsou skvělé - jde pouze o můj vlastní názor a doporučení). AABB spíše najde využití při ray tracingu.
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
posila



Založen: 29. 07. 2007
Příspěvky: 201

PříspěvekZaslal: 7. srpen 2008, 19:39:54    Předmět: Odpovědět s citátem

Možná ti poradí článek na wiki
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 7. srpen 2008, 19:46:42    Předmět: Odpovědět s citátem

Juraj napsal:
Tak abych se vice rozepsal, muj box (ted nevim jaky) mam definovany min a max, ale tyto promene jsou typu vector3, takze je definovany 6 hodnotami:
min x,y,z
max x,y,z
Jo, tohle je přesně AABB a ze své definice nemůže být orotován (protože je zarovnaný s osami). Když chceš mít BB libovolně natočený, tak musíš použít oriented BB, jak psal Vilem Otte. To znamená, že budeš muset přidat informaci o rotaci (jak psal VO).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 8. srpen 2008, 10:16:33    Předmět: Odpovědět s citátem

Jo, je to na tý Wiki. Natočený boxy jsou trochu těší, ale stojí za to.

Jestli chceš orotovat AABB (to je to co máš) a udělat z něho nový AABB, tak musíš:

vzít 8 bodů:

[min.x min.y min.z]
[max.x min.y min.z]
[min.x max.y min.z]
[max.x max.y min.z]

[min.x min.y max.z]
[max.x min.y max.z]
[min.x max.y max.z]
[max.x max.y max.z]


Tyto transformovat onou transformační (rotační v tvém přpadě) maticí
a získáš nových 8 bodů. U nich najdeš nová minima a maxima a máš nový AABB. Bohužel už nebude tak hezky obalovat původní objekt, ale bude aspoň splňovat vlastnost, že objekt obaluje a tudíž se dá použít pro kolize - byť nepřesné.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 8. srpen 2008, 10:26:46    Předmět: Odpovědět s citátem

OT:
kde na tý wiki najdu oněch 128 článků? k tomu koliznímu se dá dostat jen přes odkaz co psal posila, nebo sem "slepej".

_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 8. srpen 2008, 11:31:18    Předmět: Odpovědět s citátem

OT:
Pracuju na tom. Jinak vlevo Speciální stránky a potom Všechny stránky.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 9. leden 2009, 13:44:26    Předmět: Odpovědět s citátem

Tak nyní potřebuji pomoc někoho kdo se v matematice vyzná lépe než já..

Mám 2 objekty, každý je definovaný 8 body, 3DVectory. Takže by se dalo říci že se jedná o nějaký kvádr kolem objektu, ne však nutně tvar kvádru. Objekty tedy vypadají takto:
obj1:
obj1.a1 (Vector3)
obj1.b1 (Vector3)
obj1.c1 (Vector3)
obj1.d1 (Vector3)
obj1.a2 (Vector3)
obj1.b2 (Vector3)
obj1.c2 (Vector3)
obj1.d2 (Vector3)

obj2:
obj2.a1 (Vector3)
obj2.b1 (Vector3)
obj2.c1 (Vector3)
obj2.d1 (Vector3)
obj2.a2 (Vector3)
obj2.b2 (Vector3)
obj2.c2 (Vector3)
obj2.d2 (Vector3)

Nyní potřebuji vypočítat kolizi 2 objektů mezi sebou. Můžete mi někdo přímo poradit nebo zaslat odkaz na nějaké obdobné řešení? Nejsem v kolizních výpočtech nijak zběhlý a chtěl bych nějaké optiální ne zbytečně náročné řešení.

Díky všem Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Kaemon



Založen: 28. 07. 2007
Příspěvky: 33

PříspěvekZaslal: 9. leden 2009, 15:12:10    Předmět: Odpovědět s citátem

http://en.wikipedia.org/wiki/Separating_axis_theorem -> external links Je to tam sice popsaný pro 2D ale pro 3D to jde použít taky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Č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