"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

3d koordinaten -> 2d koordinaten

MetalBlade 15.11.2001 - 22:03 1626 14
Posts

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
wie das topic schon sagt, will ne 3d koordinaten auf ne 2d koordinaten (am bildschirm) abbilden. wär froh über ein paar einfache (schnelle) formeln, wenn möglich auch mit erklärung...

die ich früher verwendet habe waren zwar für kleine 'demos' ok, aber wenn das objekt zu nah an die kamera kommt wirds ziemlich unrealistisch verzogen : /

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
lol du brauchst formel fürs clipping oder?
weil bei pc-3dgfx normalerweise die z-achse nach 'innen' geht, also rein für die darstellung kannst du sie ignorieren.

wenns ums clipping oder irgendeine form von rendering geht ist es natürlich was anderes :D

also schreib was du genau brauchst und dann sehen wir weiter.

twistn@z

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
hehe, na also es is ned >so< komisch verzogen wie du jez vielleicht glaubst :D - kein clipping problem, will einfach die 2d koordinaten fürn bilschirm von nem beliebigen punkt im 3dimensionalen raum haben.

so hab ichs immer gemacht, 320x200 (13h mode ;)):
screen_x=160+(3d_x*camera_distance)/((3d_z+camera_distance)+0.0001);
screen_y=100+(3d_y*camera_distance)/((3d_z+camera_distance)+0.0001);

die +0.0001 san nur dazu da um a division by zero zu verhindern...


i such ned nach irgendwelchen grossartigen sachen, nur nach anderen (einfachen) möglichkeiten...
Bearbeitet von MetalBlade am 15.11.2001, 23:01

noledge

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6837
hehe, immer noch voll auf ausgfallene sachen.. was wirds denn? jump & run 3d? mit leveleditor? *g*

noledge

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
ein kahkcuf-killer-shooter in 3d natürlich ;)
na, is nur für a kleines flash skriptchen, nix aufregendens...
:)

noledge

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6837
Zitat von MetalBlade
ein kahkcuf-killer-shooter in 3d natürlich ;)

mah, mit #32-marines? :D
mah, des war eine der w00testen zeiten meines lebens :)

noledge

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
Zitat von noledge
mah, des war eine der w00testen zeiten meines lebens :)

definitiv... war eine verdammt coole zeit damals, werd i sicher nie vergessn...
hast eh noch unser geniales 'last_hak' program? auf meiner '286er schreibmaschine isses noch immer drauf :)

MetalBlade (a proud member of I.N.A.K.)

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
kannst doch die "anti division durch 0" mit /1 umgehen, anstatt dieses +0.00001 zeugs ;)

is genauer :p

noledge

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6837
Zitat von MetalBlade
hast eh noch unser geniales 'last_hak' program? auf meiner '286er schreibmaschine isses noch immer drauf :)

jo, auf irgendeiner disk isses noch drauf... :)
compiled am letzten schultag auf dem rechner, den wir in der pause wegen dem bios-passwort zerlegt haben *rofl*

wirst du richtig antworten wenn ich jetzt was sage? :)

PSIG! :D

noledge

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
VG :D

und übrigends... psigdgdpadmmnkpuss!

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Normalerweise macht man das mit 4x4 Matrizen. Gibt haufenweise gute Beispiele und Tutorials für sowas. Ich hab's aus dem cube Beispiel vom SDK für WinG von Microsoft gelernt, der gleich Code ist auch in irgendeinem DirectX SDK Sample drin, cube3d oder so ähnlich heißt's dort.

Lactobacillus

Addicted
Registered: Sep 2000
Location: gone
Posts: 389
Ich hab da

-- snip --
2DX = 3DX / 3DZ
2DY = 3DY / 3DZ
-- snip --

Schaut irgendwie primitiver aus als die anderen :D

Lactobacillus

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
Wie war das nochmal?


y' = (a*y)/z
x' = (a*x)/z

wobei a der abstand des auges zum bildschirm ist, z die 'tiefe' des objektes 'hinter' dem bildschirm, was jetzt aber mit x und y gemeint ist..... keine ahnung ;)

supi wars in assembler wennst für a eine zweierpotenz genommen hast, dann konnte man die multiplikation durch shiften (SHL/SHR) enorm beschleunigen....

ciao

Harry
Bearbeitet von DirtyHarry am 22.11.2001, 20:43

MetalBlade

stainless steel
Avatar
Registered: Feb 2001
Location: Linz
Posts: 1052
thx, die formeln sind meiner im prinzip eh ziemlich ähnlich/gleich...

@ringding - jo des mit den matrizen ist mir bekannt, damit berechnet ma aber eher die drehungen, oder?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Da geht gleich alles auf einmal, das ist ja das w00te dran. Drehung, Skalierung, Perspektive, Translation - alles was du willlst.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz