[c++] Direct3d

Pagina: 1
Acties:

  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 17-09 14:58
Klein vraaggie,
wat wordt er bedoeld met de look-at vector in direct3d??
en hoe kan ik deze maken.
Snap n btje nix van de handleiding :?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

de look-at vector is gewoon de richting die je op kijkt...
Het is heel simpel te maken door je huidige positie af te trekken van het punt waar je naar wilt kijken.

Maar in welke context heb je m nodig?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 17-09 14:58
ik moet de world coordinaten omzetten naar view coordinaten, waarvoor je de x/y/z pos van het 'oog' nodig hebt en het look-at punt

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik neem aan dat je een d3dx functie daarvoor gebruikt? Zo ja, welke?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 17-09 14:58
code:
1
2
3
4
5
6
D3DXMATRIX* D3DXMatrixLookAtLH(
  D3DXMATRIX* pOut,
  CONST D3DXVECTOR3* pEye,
  CONST D3DXVECTOR3* pAt,
  CONST D3DXVECTOR3* pUp
);

that is

Verwijderd

code:
1
2
3
4
5
6
D3DXMATRIX* D3DXMatrixLookAtLH(
  D3DXMATRIX* pOut,
  CONST D3DXVECTOR3* pEye,
  CONST D3DXVECTOR3* pAt,
  CONST D3DXVECTOR3* pUp
);

pEye is een 3-elements vector die de wereld positie van je 'oog' of camera aangeeft.
pAt is een vector waarin staat in welke richting de camera kijkt. De camera wordt dus zo ingesteld dat bij de transformatie pAt ongeveer in het midden van het scherm staat. Als je een 3d object wil volgen met de camera is pAt dus de positie van je 3d objectje.
pUp is een vector die weergeeft wat in jouw 3d wereld de bovenkant is.

pAt en pUp bepalen dus in welke richting de camera gezet wordt, net als dat je een echte videocamera met de bovenkant naar boven en de lens gericht naar wat je wilt filmen houdt.

  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 17-09 14:58
Op donderdag 18 oktober 2001 11:01 schreef Qlone het volgende:
pAt en pUp bepalen dus in welke richting de camera gezet wordt, net als dat je een echte videocamera met de bovenkant naar boven en de lens gericht naar wat je wilt filmen houdt.
Daar was ik al 8er... maar hoe kan ik deze pAt en evt pUp berekenen?

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Op donderdag 18 oktober 2001 11:01 schreef Qlone het volgende:

pAt is een vector waarin staat in welke richting de camera kijkt. De camera wordt dus zo ingesteld dat bij de transformatie pAt ongeveer in het midden van het scherm staat. Als je een 3d object wil volgen met de camera is pAt dus de positie van je 3d objectje.
pUp is een vector die weergeeft wat in jouw 3d wereld de bovenkant is.
Je spreekt jezelf tegen, de ene keer is pAt een punt in de ruimte en de andere keer is het een richting (vanuit pEye gezien) en volgens mij is het de laatste, maar ik heb geen ervaring met D3D

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Op vrijdag 19 oktober 2001 19:53 schreef Deruud het volgende:

[..]

Daar was ik al 8er... maar hoe kan ik deze pAt en evt pUp berekenen?
pAt zou je dus volgens mij kunnen uitrekenen, door het object (punt) waar je naar wilt kijken te pakken en daarvan pEye af te trekken. En in pUp zet je dan de richting die voor de persoon omhoog is, hoe je dat doet hangt een beetje af van hoe en waarvoor je het gebruikt

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op vrijdag 19 oktober 2001 20:20 schreef BurningSheep het volgende:

[..]

pAt zou je dus volgens mij kunnen uitrekenen, door het object (punt) waar je naar wilt kijken te pakken en daarvan pEye af te trekken. En in pUp zet je dan de richting die voor de persoon omhoog is, hoe je dat doet hangt een beetje af van hoe en waarvoor je het gebruikt
nope, voor pUp moet je gewoon de up vector van de wereld invoeren, wat dus meestal (0, 1, 0) is
pUp
[in] Pointer to the D3DXVECTOR3 structure that defines the current world's up, usually [0, 1, 0].

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik spreek inderdaad mezelf tegen zie ik nu, maar ALS ik de documentatie goed lees is 't gewoon een vector die de lokatie aangeeft van het punt waarheen de camera gericht moet worden.

Die pUp is redelijk eenvoudig, die hoef je namelijk helemaal niet uit te rekenen. Je hebt in een 2d wereld 2 assen, X en Y. In een 3d wereld heb je 3 assen (X, Y en Z). Meestal vat je het X-Y vlak op als de 'grond' (in de 3d wiskunde die ik ooit gehad heb wel tenminste). De 'up' vector is dan dus de vector die loodrecht op je grondvlak staat, dus (0, 0, 1), waarbij de volgorde van de waarden gewoon X, Y, Z is.

Bij computer graphics wordt vaak het scherm 'in' gezien als Z-as, dus je grondvlak is dan het X-Z vlak. De vector die daar loodrecht op staat, dus (0, 1, 0). Afhankelijk van hoe jij e.e.a. hebt geprogrammeerd is het dus een van die 2 vectoren. De 'up' vector mag ook langer dan 1 zijn als dat toevallig zo uitkomt in een berekening, maar meestal is 't gewoon een eenheidsvector.

Mocht ik het trouwens fout hebben mbt pAt, en is het inderdaad een vector die de richting van de camera aangeeft, en niet het doel dan kan je 'm uitrekenen door pAt = doelwitvector (dus vector met coordinaten van je doel) - pCam (of hoe die ook weer heet... in ieder geval de coordinaten van je cam)
Pagina: 1