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

Jednostavni problem koordinata

[es] :: 3D programiranje :: Jednostavni problem koordinata

[ Pregleda: 1160 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokiko
Kostic Bojan
Beograd

Član broj: 55172
Poruke: 77
*.vtsb.edu.yu.



Profil

icon Jednostavni problem koordinata30.11.2006. u 11:51

Tek sam poceo sa ucenjem DirectX-a (mada sam dosta radio u Visual C#) i kvalitativno mi je sve jasno, medjutim neki tehnicki detanji mi nisu jasni. Kada radim u koordinatnom sistemu monitora, koordinate se mere u odnosu na gornji levi ugao i to je OK. Ali ako hocu da definisem scenu i da koordinate merim u odnosu na scenu, onda ne znam gde se nalazi moj koordinatki pocetak. Predpostavljam da se nalazi u centru scene ali kada zadam sledece koordinate sve je u redu
Code:


            CustomVertex.PositionColored[] verts = new CustomVertex.PositionColored[3];
            verts[0].SetPosition(new Vector3(0.0f, 1.0f, 1.0f));
            verts[0].Color = System.Drawing.Color.Aqua.ToArgb();
            verts[1].SetPosition(new Vector3(-1.0f, -1.0f, 1.0f));
            verts[1].Color = System.Drawing.Color.Black.ToArgb();
            verts[2].SetPosition(new Vector3(1.0f, -1.0f, 1.0f));
            verts[2].Color = System.Drawing.Color.Purple.ToArgb();


medjutim
Code:

            CustomVertex.PositionColored[] verts = new CustomVertex.PositionColored[3];
            verts[0].SetPosition(new Vector3(5, -5, 0));
            verts[0].Color = System.Drawing.Color.Aqua.ToArgb();
            verts[1].SetPosition(new Vector3(-20, 15, 1.0f));
            verts[1].Color = System.Drawing.Color.Black.ToArgb();
            verts[2].SetPosition(new Vector3(1.0f, -1.0f, 1.0f));
            verts[2].Color = System.Drawing.Color.Purple.ToArgb();

ne desava se nista.
P.S Scena je dobro definisana kao i kamera i svetlo.
Da li su koordinate date u pikselima i gde je taj koordinatni pocetak?
30.11.2006. u 11:51 

yooyo
Centroid / Technical director

Član broj: 4891
Poruke: 1101
*.dynamic.sbb.co.yu.



Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 13:10
U D3D-u postoje 3 matrice koje uticu na iscrtavanje objekata:
- model
- view
- perspective (projection)

view je pozicija kamere, perspective "daje 3d utisak", a model je pozicija 3d modela u prostoru. Sve koordinate koje saljes ce se transformisati kroz model, pa kroz view pa kroz perspektivnu matricu pre iscrtavanja na ekranu.

Mozda nisam bio dovoljno precizan tako da bi vise detalja o ovome mogli reci D3D programeri na ovom forumu.
30.11.2006. u 13:10 

Filip Strugar
Filip Strugar
Leamington Spa, UK

Član broj: 9871
Poruke: 351
213.253.84.*

Sajt: www.rebellion.co.uk


Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 13:45
Mislim da si sasvim dovoljno objasnio, yooyo, al evo jos jednom:

kada das vertex, on se prvo transformise koriscenjem Model, pa View pa Projection matricama, i onda se nalazi u onom (-1,-1,0) (1, 1, 1) cube-u, koji se onda 'razvuce' na Viewport koordinate, tj uglavnom na ekran.

Bokiko, imas u okviru DirectX SDK-a tutoriale, pa kreni od jednog od prvih sa iscrtavanjem trougla, pa ces se snaci sam!
30.11.2006. u 13:45 

bokiko
Kostic Bojan
Beograd

Član broj: 55172
Poruke: 77
*.vtsb.edu.yu.



Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 19:14
Radio sam onaj primer sa trouglom, ali kad ja zadam svoje koordinate trougao jednostavno nestane. Kada prebacim TriangleList u ListPoint nekad mi prikaze tacke a nekad ne. Nikako da ukapiram gde ce se na formi prokazati trougao. Imate li neki savet kako da sam pre pokretanja programa pretpostavim gde ce se prokazati trougao u odnosu na formu ili cu to morati da sticem osecaj kroz iskustvo u 3D-u
30.11.2006. u 19:14 

yooyo
Centroid / Technical director

Član broj: 4891
Poruke: 1101
*.dynamic.sbb.co.yu.



Profil

icon Re: Jednostavni problem koordinata01.12.2006. u 10:41
U 3d programiranju ne postoji forma (prozor) kao kod UI programiranja. Da bi "video" neko 3D objekat, kamera mora da gleda u njega. Najjednostavnije je da pomocu D3DXMATRIXLookAtLH postavis view matricu, da model ostavis idenity, a perspective matricu postavis pomocu D3DXMatrixPerspectiveFovLH. Objekat crtas lokalno u odnosu na model matricu.

Ono sto si ti uradio je da si zadao prevelike koordinate tako da je trougao van ekrana. Takodje, redosled slanja vertexa moze da utice na iscrtavanje ako je ukljucen backface culling.
01.12.2006. u 10:41 

bokiko
Kostic Bojan
Beograd

Član broj: 55172
Poruke: 77
*.vtsb.edu.yu.



Profil

icon Re: Jednostavni problem koordinata01.12.2006. u 13:55
Kako da podesim model matricu?
01.12.2006. u 13:55 

[es] :: 3D programiranje :: Jednostavni problem koordinata

[ Pregleda: 1160 | Odgovora: 5 ]

Postavi temu Odgovori

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