Sichtbarkeit von Sprite prüfen
Übersicht BlitzBasic Blitz3D
funkmaster5000Betreff: Sichtbarkeit von Sprite prüfen |
So, Okt 06, 2013 16:12 Antworten mit Zitat |
|
---|---|---|
Hallo an alle,
ich schaffe es einfach nicht zu überprüfen, ob ein Sprite von der Kamera gesehen werden kann oder nicht. Befindet sich das Sprite seitlich der Kamera oder dahinter, erhalte ich das richtige Ergebnis. Aber sobald es in einer Linie mit der Kamera, aber hinter einem Cube/der Wand ist, erhalte ich dennoch die Rückmeldung, dass das Sprite sichtbar ist. Zuerst habe ich gedacht, dass es vielleicht damit zu tun hat, dass die Ecken überprüft werden. Wenn diese sich mit den Maßen des Cubes decken, könnte das vlt als "sichtbar" gewertet werden. Also habe ich das Sprite runterskaliert, aber mit dem selben Ergebnis. Hier mein Testcode: Code: [AUSKLAPPEN] Graphics3D 640,480,32,2
SetBuffer BackBuffer() cam = CreateCamera() MoveEntity cam,0,0,-4 cube = CreateCube() tex = LoadTexture("brix.jpg") tex2 = LoadTexture("grass.jpg") EntityTexture cube,tex ene = LoadSprite("skelett.jpg") MoveEntity ene,0,0,10 AmbientLight 255,255,255 While Not KeyHit(1) If KeyHit(200) Then MoveEntity cam,0,0,1 End If If KeyHit(208) Then MoveEntity cam,0,0,-1 End If If KeyHit(205) Then rotate = rotate - 90 RotateEntity cam,0,rotate,0 End If If KeyHit(203) Then rotate = rotate + 90 RotateEntity cam,0,rotate,0 End If UpdateWorld RenderWorld If EntityInView(ene, cam) = 1 Then Text 0, 0, "Objekt sichtbar" Flip Wend |
||
XeresModerator |
So, Okt 06, 2013 16:23 Antworten mit Zitat |
|
---|---|---|
EntityInView Überprüft nicht, ob sich etwas zwischen der Kamera und dem Objekt befindet. | ||
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) |
funkmaster5000 |
So, Okt 06, 2013 16:27 Antworten mit Zitat |
|
---|---|---|
Gibt es denn einen analogen Befehl? | ||
XeresModerator |
So, Okt 06, 2013 16:33 Antworten mit Zitat |
|
---|---|---|
Vielleicht hilft dir EntityVisible etwas weiter? | ||
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) |
funkmaster5000 |
So, Okt 06, 2013 18:34 Antworten mit Zitat |
|
---|---|---|
Das tut er mit Sicherheit! Welche Auswirkungen hat EntityPickMode und wie würde der Befehl auf mein Beispiel angewandt ausschauen? Muss ich das für jeden Cube auf der Map einstellen? Also:
Code: [AUSKLAPPEN] EntityPickmode cube,2,1 ?
|
||
XeresModerator |
So, Okt 06, 2013 19:00 Antworten mit Zitat |
|
---|---|---|
Das sind Fragen, die du leicht beantworten kannst, wenn du dir das Beispiel zu den Befehlen ansiehst und etwas herum experimentierst. | ||
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) |
funkmaster5000 |
Mo, Okt 07, 2013 20:46 Antworten mit Zitat |
|
---|---|---|
Das habe ich, funktioniert auch wunderbar
Allerdings wertet der Befehl das Sprite noch als sichtbar und zwar auch, wenn dieses hinter/neben der Camera ist. Mache ich was verkehrt, oder muss ich eine zusätzliche if-Abfrage nach der Position einbauen? |
||
DAK |
Mo, Okt 07, 2013 23:27 Antworten mit Zitat |
|
---|---|---|
Ich habe keinen der beiden Befehle verwendet, kann also auch völliger Blödsinn sein: Spricht etwas dagegen, beide Befehle mittels And verknüpft zu verwenden? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
funkmaster5000 |
Mi, Okt 16, 2013 13:28 Antworten mit Zitat |
|
---|---|---|
Das weiß ich nicht, hat jedenfalls bei mir nicht funktioniert! | ||
Jolinah |
Mi, Okt 16, 2013 16:48 Antworten mit Zitat |
|
---|---|---|
EntityVisible ist vermutlich nur ein Raycast (Linien-Test), unabhängig ob die Objekte im Sichtbereich der Kamera sind oder nicht.
EntityInView prüft ob ein Objekt im Sichtbereich der Kamera ist. Folglich müsste es schon funktionieren wenn man beide Funktionen And-verknüpft: Code: [AUSKLAPPEN] If EntityInView(ene, cam) And EntityVisible(cam, ene) Then Text 0, 0, "Objekt sichtbar"
|
||
DAK |
Mi, Okt 16, 2013 19:14 Antworten mit Zitat |
|
---|---|---|
das ist das, was ich oben gemeint habe. Ansonsten könnte man noch die Winkel vergleichen, um zu sehen, ob das Objekt zu einem schaut. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group