Pomocí iPhone / iPod Touch zrychlení otáčet 3D objekt

hlasů
0

Snažím se používat zrychlení iPhone / iPod manipulovat přímo 3D objekt.

Za to jsem hledal hodně na věci (Euler úhly, Čtveřice, atd.)

Já používám OpenSG, kde mám 3D prostředí a chtějí manipulovat určitý objekt (jen otáčí ve všech možných iPhone / iPod stupňů volnosti pouze pomocí akcelerometru).

Takže jsem se snažil přijít na to řešení tohoto problému, ale stále nemá očekávaný výsledek a získat nějaké podivné střídání v některých úhlů.

Může mi někdo říct, co dělám špatně? Nebo je tam lepší způsob, jak toho dosáhnout bez použití čtveřice?

Zrychlení proměnná je Vec3f obsahující hodnoty akcelerometru z iPhone / iPod filtrované s dolní propustí a.

acceleration.normalize();
Vec3f reference = OSG::Vec3f(0, 0, 1);
OSG::Vec3f axis = acceleration.cross( reference );
angle = acos( acceleration.dot( reference ) );
OSG::Quaternion quat;
quat.setValueAsAxisRad(axis, angle);

Po tomto kódu aktualizujte jsem scény uzlu pomocí čtveřici quat .

Položena 12/07/2010 v 19:43
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Neustále úžasné Brad Larson vykázala vynikající popis jeho počátečních zkušenostech 3d diváka při psaní své Moleculs aplikaci.

Jeho metoda pro střídání bylo dosaženo takto:

GLfloat currentModelViewMatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, currentModelViewMatrix);   
glRotatef(xRotation, currentModelViewMatrix[1], currentModelViewMatrix[5], currentModelViewMatrix[9]);
glGetFloatv(GL_MODELVIEW_MATRIX, currentModelViewMatrix);
glRotatef(yRotation, currentModelViewMatrix[0], currentModelViewMatrix[4], currentModelViewMatrix[8]);

ale též je to užitečné, nemohu doporučit tuto položku blogu dost Brad učí lekci nebo dva

Úpravy dodat, že jsem možná špatně přečetl otázku, ale udrží post tady, jak to bude pravděpodobně pomůže lidí, kteří hledají s podobnými klíčovými slovy.

Odpovězeno 12/07/2010 v 21:38
zdroj uživatelem

hlasů
3

Chtěl jsem udělat přesně to samé, jen to zkusil jsem nehrál si s akcelerometrem před a zdálo se, jako by to mělo být možné.

Problém je v tom, že pokud nastavíte svůj iPhone na stůl a pak ji pomalu otáčet a sledovat výstup z akcelerometru to v podstatě nemění (jeden gravitace dolů). Pokud jej naklonit nahoru / dolů na všech čtyřech okrajích uvidíte změnu výstupu.

Jinými slovy víte, že vaše deska stolu je vyklápěcí horní / dolní nebo levý / pravý, ale nemůžete říct, že jste ho předení. Takže můžete mapovat tento sklon ke dvěma rotací 3D objektu.

Dalo by se pravděpodobně používat kompas pro horizontální otáčení, jsem nemohl vyzkoušet, protože jsem byl prototypování v Unity herní engine a nezdá se, že ještě podpořit kompas.

Odpovězeno 07/11/2011 v 16:36
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more