🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
4 messages
4 total messages Started by Whizzo Sun, 15 Dec 2002 15:33
projectie / transformatie
#6243
Author: Whizzo
Date: Sun, 15 Dec 2002 15:33
15 lines
1277 bytes
Ken hier iemand iets van transformaties ?

3D -> 2D ?

Zit met vervelend foutje !

mvg,

--
Whizzo
( http://www.deeplove.be )
( http://users.pandora.be/whizzo/engine/ )

Dead seems to be fatal in 99.9% of the cases.
Tested on labratory rats.
Re: projectie / transformatie
#6244
Author: KLinZ
Date: Sun, 15 Dec 2002 22:16
13 lines
1337 bytes
Whizzo wrote:
> Ken hier iemand iets van transformaties ?
> 
> 3D -> 2D ?
> 
> Zit met vervelend foutje !
> 


Stel je vraag maar gelijk. Dat is handiger.

-- 
www.zenobits.com
Re: projectie / transformatie
#6246
Author: Slaets F
Date: Mon, 16 Dec 2002 00:37
56 lines
2601 bytes
zit met probleempje bij men 3D engine

ik moet van een 2D scherm (muis) naar 3D wereld gaan (isometric perspective)
dus als ik klik met men muis moet ik men coordinaten op men wereld hebben...

Dit kan je doen in OpenGL (waar ik in bezig ben) door een ray in je scherm
te schieten
onder je kijkhoek en die te transformeren naar je vlak van je landschap en
dan
een intersection te zoeken ....

Nu aangezien dit van geen kanten lukt doe ik het andersom met een hardware
fctie van OpenGL

gluProject(worldX, worldY, worldY, modelviewmatrix, projectionmatrix,
viewport, eyeX, eyeY, eyeZ);

eyeX Y en Z worden teruggegeven in je functie....
en dan weet je met de X en Y waar je cursor moet staan van je muis ... is
boven het punt van je wereld.

Dus ik koppel men muis aan men 3D wereld en projecteer men muis naar men
scherm....
probleem is nu als ik mijn muis verschuif dan loopt men muis weg van men 3D
wereldpositie....

Weet iemand hoe dit komt,

het verloopt precies vrij lineair?
is dit omdat gluproject mogelijk geen rekening houd met camerarotaties ?
of weet iemand hoe did komt???

Please help me

mvg,

Filip


"KLinZ" <klinz@NOSPAMzenobitsSPAMNO.com> wrote in message
news:na7L9.2033$3G4.8513@amstwist00...
> Whizzo wrote:
> > Ken hier iemand iets van transformaties ?
> >
> > 3D -> 2D ?
> >
> > Zit met vervelend foutje !
> >
>
>
> Stel je vraag maar gelijk. Dat is handiger.
>
> --
> www.zenobits.com
>
>
Re: projectie / transformatie
#6359
Author: Bart.Vanhauwaert
Date: Tue, 17 Dec 2002 11:56
53 lines
2687 bytes
Slaets F <whizzo@pandora.be> wrote:
> ik moet van een 2D scherm (muis) naar 3D wereld gaan (isometric perspective)
> dus als ik klik met men muis moet ik men coordinaten op men wereld hebben...

Je weet dat 1 2D coordinaat overeenkomt met een oneindig aantal 3D
coordinaten. Ik neem aan dat je de coordinaat wil van het punt uit
je tafereel (de 'projectieplaat').

Dat hangt natuurlijk af van welke parameters je hebt van je projectie.

Ik veronderstel dat je hebt (in 3D) oog (o), kijkrichting (k) en 
bovenrichting (b) dit laatste is normaal op de horizon in de richting
van de 'bovenkant'. Daarnaast heb je ook nog nodig : afstand tafereel en
oog (d) en de afmetingen van een pixel, meestal onder de vorm van een
zogenaamde 'field of view' hoek (fx en fy).

Eerst zoeken we het punt uit je tafereel dat overeenkomt met het midden
van je schermcoordinaten. Dat is simpel (k en b genormaliseerd):

m = o + d*k

de y-as van je tafereel komt overeen met de bovenrichting

y = b

de x-as van je tafereel staat loodrecht op de y-as en op de kijkrichting
dus

x = o^y

(^ staat voor vectorproduct)

voor de breedte van je tafereel (tx) weten we dat

tan(fx/2) = (tx/2)/d

De pixelbreedte (px) (in 3D) is uiteraard de tafereelbreedte gedeeld door het
aantal pixels in x. Idem dito voor de tafereel- en pixelhoogte.

En dus

t = m + (x2-mx2)*px*x + (y2-my2)*py*y

x2,y2 zijn de coordinaten in 2D, mx2 en en my2 zijn de halve breedte en
hoogte in 2D. Indien de oorsprong van de 2D coordinatenstelsel linksboven
van het scherm is, moet je wel de y-component van teken veranderen.

Hopelijk was het dit wat je zocht, en hopelijk heb ik geen fouten gemaakt.

cu bart

-- 
http://www.irule.be/bvh/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads