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

Jednostavni problem koordinata

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

[ Pregleda: 3291 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokiko
Kostic Bojan
programer
Beograd

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



Profil

icon Jednostavni problem koordinata30.11.2006. u 11:51 - pre 211 meseci
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?
 
Odgovor na temu

yooyo

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



Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 13:10 - pre 211 meseci
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.
 
Odgovor na temu

Filip Strugar
Filip Strugar
UK

Član broj: 9871
Poruke: 383
213.253.84.*



+1 Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 13:45 - pre 211 meseci
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!
 
Odgovor na temu

bokiko
Kostic Bojan
programer
Beograd

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



Profil

icon Re: Jednostavni problem koordinata30.11.2006. u 19:14 - pre 211 meseci
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
 
Odgovor na temu

yooyo

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



Profil

icon Re: Jednostavni problem koordinata01.12.2006. u 10:41 - pre 211 meseci
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.
 
Odgovor na temu

bokiko
Kostic Bojan
programer
Beograd

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



Profil

icon Re: Jednostavni problem koordinata01.12.2006. u 13:55 - pre 211 meseci
Kako da podesim model matricu?
 
Odgovor na temu

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

[ Pregleda: 3291 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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