Pixelkoords zu Vertexkoords
Übersicht

SharkBetreff: Pixelkoords zu Vertexkoords |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Community.
Kennt jemand von euch vielleicht eine Formel oder besitzt ein Tut, das beschreibt wie man Pixelkoords zu Vertexkoords transformieren kann? Ich persönlich war nicht faul und hab mich mal hin gehockt und mir das mal angeschaut in welchem Verhältnis Vertexpunkte zu Pixelpunkte stehen. Code: [AUSKLAPPEN] ;Pixelkoords to Vertexkoords?
Graphics3D 800,600,16,1 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() CameraClsMode camera,0,1 CameraRange camera,1,GraphicsWidth()*2 PositionEntity camera,0,0,-5 RotateEntity light,90,0,0 ;Erstellt ein Single Surface! Global test = Create_Sprite() Global texture = LoadTexture("ende.png") EntityTexture test,texture Repeat Cls RenderWorld() ;Das Gitter ist für mich dazu da gewesen ;um zuschauen wo die Vertexpunkte sind/verlaufen. For x = 0 To 10 Rect 0+x*80,0,1,600,1 Rect 0,60+x*80,800,1,1 Next Flip 0 Until KeyHit(1) End ;Erstellt ein Single Surface! Function Create_Sprite() Local k#=1,x=200,y=100,weit=10,hoehe=10 brush=CreateBrush() mesh=CreateMesh() surface=CreateSurface(mesh,brush) ;Wird später gebraucht... ;If x11 <> 400 And x11 > 400 Then ; x1 = x11-400 ; v3=AddVertex(surface,(x1*10)/800,k,0,0,0) ;ElseIf x11 <> 400 And x11 < 400 Then ; x1 = 400-x11 ; v3=AddVertex(surface,-(x1*10)/800,k,0,0,0) ;ElseIf x11 = 400 ; v3=AddVertex(surface,0,k,0,0,0) ;EndIf v0=AddVertex(surface,(((x*10)/800)+((weit*10)/800)),Float((y*7.5)/600),0,1,0) ;obenrechts v1=AddVertex(surface,(((x*10)/800)+((weit*10)/800)),Float-(((y*7.5)/600)+((hoehe*7.5)/600)),0,1,1) ;untenrechts v2=AddVertex(surface,-((x*10)/800),Float-(((y*7.5)/600)+((hoehe*7.5)/600)),0,0,1) ;untenlinks v3=AddVertex(surface,-((x*10)/800),Float((y*7.5)/600),0,0,0) ;obenlinks AddTriangle(surface,v0,v1,v2) AddTriangle(surface,v3,v0,v2) UpdateNormals mesh Return mesh End Function Es ist natürlich noch nicht vollständig und läuft nicht richtig. Ein Problem ist z. B. , dass Pixelkoordinaten oben links anfangen und Vertex genau in der Mitte. Konnte es bis jetzt noch nicht hinbekommen. Noch etwas zum Code! Mit der Formel ((x*10)/800) rechne ich den Vertexpunkt für x aus! Warum die 10 dort? Ganz einfach bei 800 pixel gibt es 10 Vertexkoords. bei y gibt es statt dessen 7,5. Ich hoffe jemand kann mir helfen mfg Shark |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dafür gibt es einen einfachen Befehl: CAMERAPROJECT
http://www.blitzbase.de/befehl...roject.htm |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke schön!
Man lernt immer wieder mehr dazu ![]() |
||
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab mich mal heute an den Pc gehockt und hab mir mal den Befehl angeschaut und da steht!
Zitat: Die Anweisung CAMERAPROJECT errechnet aus den absoluten 3D-Raumkoordinaten die 2D-Bildschirmkoordinaten.
Was genau das falsche ist ![]() Denn ich will aus den 2D-Blidschirmkoordinaten 3D-Raumkoordinaten errechnen. mfg Shark |
||
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit CameraPick() und PickedX..Y..Z | ||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist recht einfach
erstelle eine ebene, die du mittels alpha komplett durchsichtig machst, diese musst du mit entitypickmode für das picking freischalten mit camerapick werden aus den 2D Koordinaten 3D koordinaten, die mittels pickedx pickedy und pickedz empfangen werden können |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, danke an allen die mir geholfen haben.
Eigentlich war das ganz anders gemeint ![]() Ich wollte mir eine SingleSurface Engine basteln wo man die Bildschirmkoordinaten X und Y und Weite und Höhe der Grafik eingeben sollte . Ich habe dann weiter drüber nach gedacht und habs selber hinbekommen. Lösungsweg. Die Kamera einfach verschieben, sodass man keine Positive und Negative Einteilung auf dem Bildschirm hat! In meinem Fall war das so! Code: [AUSKLAPPEN] PositionEntity camera,5,-3.75,-5
Ich werde dann mal weiter programmieren nochmal danke an alle ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group