3D-Vertexkoordinate auf 2D umrechnen
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: 3D-Vertexkoordinate auf 2D umrechnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte wissen welche globale Koordinaten ein Vertexpunkt hat wärend das Mesh (mit dem Vertex) als Parent an ein anderem Objekt hängt.
Oder noch besser, welche 2D-Bildschirmkoordinate das Vertex einnimmt und ob es überhaupt im Sichtbereich der Kamera liegt. Leider liefert VertexX ![]() ![]() Im folgendem Code sollte das kleine weiße Rechteck der roten 3D-Pfeilspitze folgen, was es nicht tut: Code: [AUSKLAPPEN] Graphics3D 1024,768,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(60) Local Camera=CreateCamera() Local Light=CreateLight() Local Cube=CreateCube() RotateEntity Light,40,-40,0 PositionEntity Cube,0,0,4 EntityAlpha Cube,0.2 Local Mesh=CreateMesh(Cube) Local Face=CreateSurface(Mesh) Local V0=AddVertex(Face,-1,+1,+1) Local V1=AddVertex(Face,+1,+1,-1) Local V2=AddVertex(Face,+1,-1,-1) VertexColor Face,V0,255,0,0,0.2 ;V0=Rote-Pfeilspitze VertexColor Face,V1,255,255,0,0 ;Restliche-Vertices VertexColor Face,V2,255,255,0,0 ;Restliche-Vertices AddTriangle(Face,V0,V1,V2) EntityFX Mesh,1+2+16+32 Local XP#,YP# While Not KeyHit(1) If KeyDown(203) Then TranslateEntity Cube,-0.1,0,0 If KeyDown(205) Then TranslateEntity Cube,+0.1,0,0 If KeyDown(200) Then TurnEntity Camera,-1,0,0 If KeyDown(208) Then TurnEntity Camera,+1,0,0 TurnEntity Cube,0,1,0 WaitTimer Timer RenderWorld CameraProject Camera,VertexX(Face,V0),VertexY(Face,V0),VertexZ(Face,V0) XP=512+ProjectedX() YP=384-ProjectedY() Rect XP-3,YP-3,7,7,0 Text 20,20,"Cursor Links/Rechts : Cube seitlich verschieben" Text 20,40,"Cursor Hoch/Runter : Camera Höhenschwenken" Flip 0 Wend End Kennt da vielleicht jemand die Rätzelslösung? |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh... TFormPoint![]() ![]() Code: [AUSKLAPPEN] Graphics3D 1024,768,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(60) Local Camera=CreateCamera() Local Light=CreateLight() Local Cube=CreateCube() RotateEntity Light,40,-40,0 PositionEntity Cube,0,0,4 EntityAlpha Cube,0.2 Local Mesh=CreateMesh(Cube) Local Face=CreateSurface(Mesh) Local V0=AddVertex(Face,-1,+1,+1) Local V1=AddVertex(Face,+1,+1,-1) Local V2=AddVertex(Face,+1,-1,-1) VertexColor Face,V0,255,0,0,0.2 ;V0=Rote-Pfeilspitze VertexColor Face,V1,255,255,0,0 ;Restliche-Vertices VertexColor Face,V2,255,255,0,0 ;Restliche-Vertices AddTriangle(Face,V0,V1,V2) EntityFX Mesh,1+2+16+32 Local XP#,YP# While Not KeyHit(1) If KeyDown(203) Then TranslateEntity Cube,-0.1,0,0 If KeyDown(205) Then TranslateEntity Cube,+0.1,0,0 If KeyDown(200) Then TurnEntity Camera,-1,0,0 If KeyDown(208) Then TurnEntity Camera,+1,0,0 TurnEntity Cube,0,1,0 WaitTimer Timer RenderWorld TFormPoint(VertexX(Face,V0),VertexY(Face,V0),VertexZ(Face,V0), Mesh, 0) CameraProject(Camera, TFormedX(), TFormedY(), TFormedZ()) XP=ProjectedX() YP=ProjectedY() Rect XP-3,YP-3,7,7,0 Text 20,20,"Cursor Links/Rechts : Cube seitlich verschieben" Text 20,40,"Cursor Hoch/Runter : Camera Höhenschwenken" Flip 0 Wend End |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja! Das ist ja mal geil, danke...
Funktioniert nun bestens! P.S. Um einen Kameraschwenk mit zu berücksichtigen muß der letzte Parameter ''0'' statt ''Camera'' sein. Code: [AUSKLAPPEN] TFormPoint(VertexX(Face,V0),VertexY(Face,V0),VertexZ(Face,V0), Mesh, 0)
|
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group