Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Klik na 3d objekat

[es] :: 3D programiranje :: Klik na 3d objekat

[ Pregleda: 5609 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MiG29

Član broj: 70852
Poruke: 2
*.panline.net.



Profil

icon Klik na 3d objekat13.10.2005. u 00:55 - pre 224 meseci
Bezuspesno sam trazio na netu primer kako da u Direct3D sceni kada kliknem misem na objekat, dobijem informaciju koji je objekat "selektovan".

Molim Vas da mi pomognete. Da li postoji neka funkcija ili je nesto drugo.
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
67.151.201.*

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: Klik na 3d objekat13.10.2005. u 01:02 - pre 224 meseci
Citat:
Article on Mouse Picking - 04/06/05

There comes a time in every 3D game where the user needs to click on something in the scene. Maybe he needs to select a unit in an RTS, or open a door in an RPG, or delete some geometry in a level editing tool. This conceptually simple task is easy to screw up since there are so many little steps that can go wrong. I've written an article on this subject, however it's in PDF form since it's pretty heavy on the math notation.

http://www.bookofhook.com/Article/GameDevelopment/mousepick.pdf

 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
*.so.pttrs.net.



+1 Profil

icon Re: Klik na 3d objekat13.10.2005. u 06:22 - pre 224 meseci
Ej ako neko zna rjesenje iste stvari u openGL ?
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
...66.subscriber.vzavenue.net.

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: Klik na 3d objekat13.10.2005. u 06:54 - pre 224 meseci
LOL! Nisi ni pogledao PDF dokument...

 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
*.so.pttrs.net.



+1 Profil

icon Re: Klik na 3d objekat13.10.2005. u 12:49 - pre 224 meseci
Ma na dialu sam, pa nemam para da downloadujem ne provjerene stvari, jer znate svi kako je kada skdate nesto duze vrijeme, i nakon toga nije to ono sto vam treba ...
 
Odgovor na temu

SashaX

Član broj: 50542
Poruke: 65
*.crnagora.net.

Sajt: www.eipix.com


Profil

icon Re: Klik na 3d objekat13.10.2005. u 13:45 - pre 224 meseci
To je 100kb, oko 20-ak sekundi maximalno preko dial-up-a

[Ovu poruku je menjao SashaX dana 13.10.2005. u 14:46 GMT+1]
 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
*.so.pttrs.net.



+1 Profil

icon Re: Klik na 3d objekat13.10.2005. u 18:34 - pre 224 meseci
Kazem ti nemam para, da provjeravam ono u sta nisam siguran, tj. radije cu fino pitati, pa kad neko kaze to je to onda ga skinem, a ne da skidam sve redom sa stranice, dok eventualno nenadjem ono pravo, u ovom slucaju je to jedan link, al' eto ...
 
Odgovor na temu

MiG29

Član broj: 70852
Poruke: 2
*.panline.net.



Profil

icon Re: Klik na 3d objekat14.10.2005. u 00:25 - pre 224 meseci
Kakvi ste carevi :) Hvala puno :)
 
Odgovor na temu

Dejan Mitrovic
Novi Sad

Član broj: 46273
Poruke: 50
*.ftn.ns.ac.yu.

ICQ: 328765021


Profil

icon Re: Klik na 3d objekat20.02.2006. u 23:20 - pre 220 meseci
Evo i koda za "buduca pokoljenja". Davno sam ovo pisao tako da mi sad i nije bas sve jasno, ali radi (verovatno je opisano u tom pdf-u, zvuci mi jako poznato)

Code:
// informations about the intersection between picking ray and mesh
struct INTERSECTION {
  // face in the mesh
  DWORD dwFace;
  // distance
  float fDist;
  // barycentric coordinates
  float fBary1, fBary2;
  // position of intersection
  D3DXVECTOR3 vPos;
};

bool CMyObject::IsClicked(int nMouseX, int nMouseY, int nWidth, int nHeight, INTERSECTION* pIntersection) {
  // transform the screen into the world coordinates
  D3DXMATRIX mxTemp;
  m_pD3DDevice->GetTransform(D3DTS_PROJECTION, &mxTemp);
  float fNear = - mxTemp._43 / mxTemp._33;
  float fNewX = (2.0f * nMouseX / nWidth - 1) / mxTemp._11;
  float fNewY = -(2.0f * nMouseY / nHeight - 1) / mxTemp._22;

  // calculate the inverse of the object's world transformation matrix
  D3DXMATRIX mxInvWorld;
  D3DXMatrixInverse(&mxInvWorld, NULL, &m_mxWorld);
  // calculate the inverse of the view transformation matrix
  D3DXMATRIX mxInvView;
  m_pD3DDevice->GetTransform(D3DTS_VIEW, &mxTemp);
  memcpy(&mxInvView, &mxTemp, sizeof(D3DXMATRIX));
  D3DXMatrixInverse(&mxInvView, NULL, &mxInvView);

  // calculate the ray direction vector
  D3DXVECTOR3 vRayDir;
  vRayDir.x = fNewX * mxInvView._11 + fNewY * mxInvView._21 + fNear * mxInvView._31;
  vRayDir.y = fNewX * mxInvView._12 + fNewY * mxInvView._22 + fNear * mxInvView._32;
  vRayDir.z = fNewX * mxInvView._13 + fNewY * mxInvView._23 + fNear * mxInvView._33;
  D3DXVec3Normalize(&vRayDir, &vRayDir);
  // we must rememeber this direction, before transforming it into object's space
  D3DXVECTOR3 vOldDir;
  memcpy(&vOldDir, &vRayDir, sizeof(D3DXVECTOR3));
  // transform the direction vector
  D3DXVec3TransformNormal(&vRayDir, &vRayDir, &mxInvWorld);

  // calculate the ray position vector
  D3DXVECTOR3 vRayPos = D3DXVECTOR3(mxInvView._41, mxInvView._42, mxInvView._43);
  // we must remember this vector, before transforming it into object's space
  pIntersection->vPos = vRayPos;
  // transform the position vector (transform coordinates of this point)
  D3DXVec3TransformCoord(&vRayPos, &vRayPos, &mxInvWorld);

  BOOL bHit;
  // check to see if the ray intersects the mesh
  D3DXIntersect(m_pMesh, &vRayPos, &vRayDir, &bHit, &pIntersection->dwFace, &pIntersection->fBary1,
    &pIntersection->fBary2, &pIntersection->fDist, NULL, NULL);
  if (bHit) {
    D3DXVec3Scale(&vOldDir, &vOldDir, pIntersection->fDist);
    D3DXVec3Add(&pIntersection->vPos, &pIntersection->vPos, &vOldDir);
  }
  return bHit;
}
 
Odgovor na temu

djordje
Novi Sad

Član broj: 3704
Poruke: 1725
..mtsns-ns.customer.sbb.co.yu.



+3 Profil

icon Re: Klik na 3d objekat24.02.2006. u 10:28 - pre 220 meseci
Citat:
Kazem ti nemam para, da provjeravam ono u sta nisam siguran


Vise ti je vremena trebalo fda napises ova dva posta, nemoj da se izvlacis
 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
*.so.pttrs.net.



+1 Profil

icon Re: Klik na 3d objekat24.02.2006. u 12:57 - pre 220 meseci
Eh Djordje ne citas sve ... Rekao sam da nemam para da skidam sve sto se postavi na stranici tj. radije cu pitati pa cekati potvrdu da se u tom i tom fajlu nalazi ono sto mi treba, nego skidati dakle sve.
 
Odgovor na temu

djordje
Novi Sad

Član broj: 3704
Poruke: 1725
..mtsns-ns.customer.sbb.co.yu.



+3 Profil

icon Re: Klik na 3d objekat24.02.2006. u 14:09 - pre 220 meseci
pricamo o konkretnom fajlu od 100k koji mozes da skines dosta brzo. Procitao sam sve
 
Odgovor na temu

genuine
Dragisa Jankovic
Beograd

Član broj: 101510
Poruke: 33
194.106.175.*



Profil

icon Re: Klik na 3d objekat14.07.2006. u 17:20 - pre 215 meseci
Aman bre sto komplikujete.. u OpenGL je uradjeno tako sto svaki objekat predas opengl-u sa sa odgovarajucim ID-om . zatim postavis frustum da bude veoma uzak i izrendiras scenu i opengl ti vrati spisak svih objekata koji se nalaze u frustum-u.. sada mozes proizvoljno da biras koji ti treba ili prirodno koji je najblizi..

pozdrav.
Necu vise da radim ,bre !
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
*.ubisoft.com.cn.

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: Klik na 3d objekat15.07.2006. u 02:35 - pre 215 meseci
"Komplikujemo" zbog brzine tražene operacije. Metod koji si ti opisao je horror što se tiče brzine.
 
Odgovor na temu

genuine
Dragisa Jankovic
Beograd

Član broj: 101510
Poruke: 33
194.106.175.*



Profil

icon Re: Klik na 3d objekat15.07.2006. u 14:38 - pre 215 meseci
onda ovako.. svaki objekat ima svoj bounding volume ( bilo box, sphere ili sta vec) kada radite ispitivanje preseka onda prvo eliminisete sve koje mozete koristeci negi algoritam ... a za one potencijalne uradite proveru preseka sa zrakom.. ako nema preseka sa bounding volume onda nema ni sa objektom a ako ima onda udjete u hijerarhiju objeta i ispitujete preseke na sledecem nivou ( znaci preseci bounding volume-a ruke, noge, krila , tocka i sl i zraka ) .. postupak se ponavlja sve dok se ne dodje do listova u hijararhiji.... kada se stigne do njih testiranje se nastavlja ispitivanjem preseka zraka i trouglova.... svi objekti ( bilo koreni ili neki u stablu hijararhije) sa kojima postoji potencijalni presek se stavljaju u red i algoritam cupa prvi iz reda i nastavlja testiranje.. ako nadje nekoliko mogucnosti onda njih doda u red i tako redom...



[Ovu poruku je menjao genuine dana 15.07.2006. u 15:49 GMT+1]

[Ovu poruku je menjao genuine dana 15.07.2006. u 15:49 GMT+1]
Necu vise da radim ,bre !
 
Odgovor na temu

[es] :: 3D programiranje :: Klik na 3d objekat

[ Pregleda: 5609 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.