Viewport in Hud einbetten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

timo_81

Betreff: Viewport in Hud einbetten

BeitragFr, Aug 26, 2011 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Werte Freunde,

mach einer 5 Jährigen Blitzabstinenz, bin ich per Zufall wieder auf die Sprache gestoßen und
habe mal wieder mit einem Weltraumspiel angefangen. In dieser Frage dreht es sich um das Thema,
wie man einen Viewport in ein HUD einbetten kann ohne dass der HUD den Viewport überschreibt,.

Folgende Szenario:

Ein Element wird durch CameraPick ausgewählt. (Pickmode is 2 btw) Dieses Element soll nun herangezoomt werden (nur im Viewport) und in den HUD eingebettet dargestellt werden.
Meine bisherigen Versuche schlugen fehl. Das HUD überschreibt immer den Viewport.
Hier mal mein Ansatz:

[syntax="bb"]

hud_normal=LoadImage("hud_normal_quer.jpg")
hud_planet=LoadImage("hud_normal_rechts.jpg")

;#Erstellt die Kamera und das Licht
AmbientLight 70,70,70
pivot=CreatePivot()
pv1=CreatePivot()
camera=CreateCamera(pivot)

objektcamera = CreateCamera()
CameraViewport objektcamera,100,500,200,200 ;Einzubettender Viewport

;--------------------------------
;Main Loop
;--------------------------------
While Not KeyHit(1)
If MouseHit(1)=True Then
pick=CameraPick(camera,MouseX(),MouseY())
If pick Then
name$=EntityName(pick)
distanz#=EntityDistance(camera,pick)
PositionEntity objektcamera, PickedX#,PickedY#,PickedZ# ;Viewportkamera auf Objekt ausrichten
EndIf
EndIf
[/syntax]

Dann die Ausgabe des Huds:

[syntax="bb"]
UpdateWorld
RenderWorld

;2D-Ausgaben (Mauszeiger, Selektierte Objekte, Distanzen
;######################################################
DrawImage (mauszeiger, MouseX(), MouseY())
ShowPointer()

DrawImage hud_normal,0,700
DrawImage hud_planet,1030,395

Color 0,0,0
Text 560,810,name$
Text 560,885,distanz#
Flip
Wend

[/syntax]

Das Problem ist der Viewport updated sich nicht (wenn ich ein neues Objekt
picke ändert sich der Text aber die Kamera im Viewport richtet sich nicht aus.
Desweiteren ist ein einbetten nicht möglich, da der Viewport nicht mehr sichtbar ist
wenn der HUD gezeichnet wird)

Vielen Dank für Eure Hilfe und es ist schön mal wieder hier zu sein nach der langen Zeit!
Viele Grüße Timo

Xeres

Moderator

BeitragFr, Aug 26, 2011 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du ein lauffähiges Beispiel? Ohne Bilder oder Objekte dauert es länger den Fehler aus zu machen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

timo_81

BeitragFr, Aug 26, 2011 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Anbei die Rar Datei des ganzen Projekts. Mein Grafiken sind bislang auf den Modus
"33" ausgelegt (hinsichtlich der pixelgenauen Platzierung). Deshalb sollte man
dieses Modus auswählen wenn man es testen will.

Vielen Dank dass ihr es euch anschaut - der Mauszeiger verschwindet auch sobald
er sich über das HUD bewegt. Das Design des Mauzeigers ist nicht auf meinen Mist gewachsen und wird noch angepasst ...


Link: [url] http://www.file-upload.net/dow...html[/url]

Grüße und abermals Vielen Dank
Timo

Xeres

Moderator

BeitragFr, Aug 26, 2011 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Ahnung was du mit Modus 33 meinst, start.bb liegt jedenfalls nicht bei. Es gibt auch keine zweite Kamera oder ein HUD im Code.
Ein kurzer Code, der ohne Medien auskommt und genau das Problem aufzeigt, wäre immer das beste.

Edit: Vielleicht hilft das: Mit HideEntity eine kamera abschalten, Rendern, HUD zeichnen, ShowEntity, die andere kamera abschalten, Rendern - Flip.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

timo_81

BeitragFr, Aug 26, 2011 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

doch die gibt es heißt dort aber "Objektkamera" im Source.
Das ganze Projekt basiert auf dem orbit_nebula_source von Richard Betson,
welches sich in den Samples Ordnern von Blitz3D befindet. Da ist auch die start.bb
sorry das hab ich vergessen mitzuschicken. Ich hab dieses Projekt als Framework
genommen und soweit abgespeckt, dass es für mich verständlich blieb.

Ich kann Dir leider nicht mehr Code liefern, da es da ja gerade hapert.
Die Idee ist einfach, ein CameraViewport auf ein 2D HUD (der ja nur ein Bild ist )
drüberzuzeichnen. Das Problem ist nun eben, dass der Viewport wie auch der Mauszeiger
verschwindet sobald er an den Koordinaten des HUD landet.

Naja trotzdem Danke für die Mühen...
Grüße
Timo

PS: Den einzigen Code den ich liefern konnte ist der, den ich oben gepostet habe...

Holzchopf

Meisterpacker

BeitragFr, Aug 26, 2011 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal nur so nebenbei: Du beachtest schon die Reihenfolge der Grafikausgabe? Also zuerst HUD-Hintergrund, dann CameraViewport, Updaten und Rendern. Und nicht etwa zuerst die Kamera Rendern und dann HUD drüber malen?

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

timo_81

BeitragFr, Aug 26, 2011 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Code sieht wie folgt aus:

BlitzBasic: [AUSKLAPPEN]


...
UpdateWorld
RenderWorld

;2D-Ausgaben (Mauszeiger, Selektierte Objekte, Distanzen
;######################################################
DrawImage (mauszeiger, MouseX(), MouseY())
ShowPointer()

Color 0,0,0
Text 560,810,name$
Text 560,885,distanz#
DrawImage hud_normal,0,700 ;Hud in den der Viewport eingebetet werden soll wird gezeichnet
DrawImage hud_planet,1030,395;Anderer Hud der damit nichts zu tun hat
CameraViewport objektcamera,100,700,200,200; Einzubettender Viewport der zweiten Kamera wird gezeichnet

Flip
Wend

ZaP

BeitragFr, Aug 26, 2011 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ja zuerst die Hauptkamera ganz normal rendern, die HUD Kamera aber verstecken, dann das HUD zeichnen, die Hauptkamera verstecken, die HUD Kamera entstecken (Very Happy) und nochmals rendern, bestimmt geht das.
Starfare: Worklog, Website (download)
 

timo_81

BeitragFr, Aug 26, 2011 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi vielen Dank für die ANtwort.
Könntest Du mir die Idee codetechnisch kurz erläutern?

Grüße
Timo
 

timo_81

BeitragSa, Aug 27, 2011 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Gott bin ich ein Depp, ich mach die Stelle einfach schwarz dann wird sie durchsichtig und da kommt der viewport rein...man man man ...*kopf gegen die hau*

Thread kann geschlossen werden...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group