Objekt an Bildschirmkoordinate platzieren
Übersicht

ChristianKBetreff: Objekt an Bildschirmkoordinate platzieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann man irgendwie die Bildschirmkoordinaten in Weltkoordinaten umrechnen? In etwa so wie beim Picking. Das Problem ist nur das ich nichts zum picken habe, also keinen Hintergrund. | ||
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wenn du einen pivot als pickedentity angibts??
dann kannste anhand von dme dann alles weitere ausrichten oder?? |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weltkoordinaten zu Bildschirmkoordinaten geht mit ql:CameraProject
Bildschirmkoordinaten zu Weltkoordinaten geht nicht, da es keine Koordinaten dazu gibt. Das was ''entsteht'' ist eine unedlich lange Linie, deren lediglich der Vector bestimmbar ist. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal.
Hab gerade mal nachgeschaut: SpriteCandy kann seine Sprites pixelgenau platzieren. Ich hab es zwar nicht, deshalb weiss ich nicht, ob es stimmt, aber auf der Website steht Folgendes: Zitat: HUD_PositionObject ( Group_Handle%|Object_Handle%, x#, y#, [onScreen%] )
Positions an object (or all objects of a group) either at an absolute screen coordinate (as seen on the monitor) or using the (relative) coordinate system of it's parent layer (which could be rotated or scaled, for example). Habt ihr eine Idee, wie x-pressive das hinbekommen hat? Edit: @Puccini, ich versteh nicht ganz, was du meinst. ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zwei Möglichkeiten, Sprites pixelgenau positionieren zu können:
1. Man bewegt die Kamera um die hälfte der Bildschirm-X-Auflösung nach hinten, dann werden alle Sprites die in der Z-Ebene 0 gezeichnet werden, Pixelganau verschoben (eine Weltkoordinate = ein Pixel auf Bildschirm). 2. Bei CameraProjMode=2 werden Entfernungen nicht verzogen, daher muss ein Zoomfaktor her. Der geht so: CamerZoom camera,1.0/(GraphicsWidth()/2.0). Dann ist wieder eine Weltkoordinate = ein Pixel auf dem Bildschirm. Bei beiden geht das ganze natürlich auch einfacher, wenn man einfach ein Pivot an die Kamera hängt. Dann kann man mit der Kamera ganz normal durch die Gegend laufen, und alle Sprites werden dann ans Pivot gezeichnet. Siehe dazu Draw3D https://www.blitzforum.de/foru...hp?t=21659 wo ich es genauso gemacht habe (in den nächsten Tagen, kommt eine neue Version). Oder hier ein Beispiel: Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
SetBuffer BackBuffer() camera=CreateCamera() sprite=CreateSprite() PositionEntity camera,400,-300,-400 ;PositionEntity camera,0,0,-400 HidePointer While Not KeyHit(1) mx=MouseX() my=MouseY() PositionEntity sprite,mx,-my,0 RenderWorld Rect mx-3,my-3,6,6,0 Text 0,0,mx+" "+my Flip Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, hectic! ![]() Genau das, was ich brauche. |
||
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Tag!
Ich bin durch das Suchen zu diesem Theard gelangt und hab mal spontan versucht hectic's zweite Version zu programmieren, um Sprites pixelgenau positionieren zu können. Leider funktioniert sie nicht so wie die Erste, deshalb wollte ich fragen was ich falsch gemacht haben, denn ich hab mich an deine Anweisungen gehalten hectic. Hier der Code: Code: [AUSKLAPPEN] Graphics3D ScreenW,ScreenH,0,2
SetBuffer BackBuffer() Const ScreenW=800,ScreenH=600 camera=CreateCamera() sprite=CreateSprite() ScaleSprite sprite,10,10 CameraProjMode camera,2 CameraZoom camera,1.0/(ScreenW/2.0) HidePointer MoveMouse ScreenW/2,ScreenH/2 Repeat mx=MouseX() my=MouseY() PositionEntity sprite,mx,-my,0 RenderWorld() Rect mx-3,my-3,6,6,0 Text 0,0,mx+" "+my Text 0,15,EntityX(sprite)+" "+EntityY(sprite) Flip Until KeyHit(1) End mfg Shark |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
CameraProjMode macht keine perspektivische Verzerung, denoch aber muss man die Kamera nach hinten ziehen um was zu sehen. Also: In der Entfernung von 0 oder gar hinter der Kamera wird natürlich nicht angezeigt.
Setze mal MoveEntity camera,0,0,-10 oder so da ein. Alles ab -1 bis -KameraRange kannst du da eingeben, es wird immer gleich angezeigt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group