pátek 2. března 2012

Funkční aplikace, výběr objektu dotykem

Hurá, aplikace je fuknční, tedy ne úplně, ale základ to dělá.
Renderuje, fyzikuje a reaguje na vstup. Problém se zdmi jsem zatím odložil, nejspíš to až takový problém není. Pokud si představíme, že je zeď např. z cihel, není nějaké to zaškobrtnutí předmětu až tak překvapivé. Navíc, protože centrem pozornosti je Ball ve tvaru koule, škobrtnutí se zase tak nevyskytují.

Řešil jsem zajímavý problém s projekcí a jak reagovat na uživatelský vstup. Uživatel vybírá objekt 3D prostoru dotykem prstu (či myší) na obrazovku.
Protože objekty se vyskytují v jedné rovině ve výšce 0-1m, zvolil jsem rovinu, kde se vybírají předměty na půl metru nad zemí.
Pomocí kamery a volání unproject() dostaneme dva body - jeden na near plane (označme A) a jeden na far plane (B). Tyto dva body vytvoří přímku AB a průnikem s rovinou z=0.5 dostaneme hledané souřadnice, s kterými již můžeme hledat ve 2D prostoru světa Box2D.

Z úvah dostáváme hezké rovnice:
v = B-A
A.z + t * v.z = 0.5
t = (0.5 - A.z) / v.z
P = A + t * v

Žádné komentáře:

Okomentovat