Objekt in Sicht?

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

StepTiger

Betreff: Objekt in Sicht?

BeitragFr, Aug 11, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
So, mal wieder ne Frage:

Wie kann ich prüfen, ob ein Objekt in Kamerasicht ist?

An sich ja EntityInView aber wie kann ich prüfen, ob das Objekt verdeckt wird?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Suco-X

BeitragFr, Aug 11, 2006 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbase.de/befehl...isible.htm
Sollte auch mit einer Camera funktionieren. Bin mir aber nicht sicher.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

StepTiger

BeitragFr, Aug 11, 2006 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
nimmt das auch rücksicht auf verdeckungen?

genau das ist ja das problem

wenn die kamera nur einen Teil des objektes sehen sollte, dann soll es sozusagen als sichtbar gelten
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Christoph

BeitragFr, Aug 11, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Objekte, die verdecken können werden mit ql:ENTITYPICKMODE bestimmt.

StepTiger

BeitragFr, Aug 11, 2006 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß ich doch!

Am besten ich sag mal genau worum es geht:

Ich will schaun, ob die Kamera auch nur einen Teil des Objektes sieht.

Also selbst wenn die Kamera nur ein Bein sieht dann ist es SICHTBAR
Wenn die Kamera also nichts sieht (entweder durch Verdeckung oder außerhalb der Perspektive) dann ist es nicht SICHTBAR
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragFr, Aug 11, 2006 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht auf Polygonebene und so nicht, wie du ja am InView Befehl von Blitz schon gemerkt hast.

Es gibt allerdings einen Trick: Erzeuge kopien deiner Objekte und färbe den level zb weiss und das objekt das dich interessiert rot. nun kannst du für den "inview" einfach mit diesen objekten rendern und schauen ob ein roter pixel existiert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragFr, Aug 11, 2006 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ist das nicht etwas langsam?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Matthias

Betreff: ReadPixelFast

BeitragFr, Aug 11, 2006 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Um das ganze etwas schneller zu machen kanst du.

1. Tipp: Du kannst doch auch jeden 4 BildPunkt mit Readpixelfast Auslesen
das geht voll Schnell.

2.Tipp:Oder-Und Die Abtastung nur Jede 200 Millisekunden.

Gruß Matthias

Mr.Keks

BeitragFr, Aug 11, 2006 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
1. Tipp: Du kannst doch auch jeden 4 BildPunkt mit Readpixelfast Auslesen
das geht voll Schnell.
... oder gar von vornherein den cameraviewport ordentlich klein stellen Wink
MrKeks.net
 

Dreamora

BeitragFr, Aug 11, 2006 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich ist es langsam.
Warum meinst du macht man in der Realität keine solchen Spielereien bei freier Geometrie?

Wie gesagt, nur BSP und andere kompilierte PVS - Portal Levelsysteme erlauben solche Tests auf sinnvolle Art und Weise ... bei einem polygonbasierten Levelformat ist es nicht wirklich testbar auf Polygonbasis, da macht man das normalerweise mit der boundingbox oder dem boundingellipsoid, das ist mehr als ausreichend genau ... (oder man machts garnicht erst und nutzt einen octTree Scene graph
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragFr, Aug 11, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
sag mir ne bessere variante, wie ich schauen kann, ob mein gegner mich sieht und gut so
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, Aug 11, 2006 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Linepick.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

StepTiger

BeitragFr, Aug 11, 2006 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
linepick sagt mir nur, ob in direkter position jemand/etwas dazwischen ist.

Das will ich nicht wissen. Wie man das in der Mitte prüft weiß ich ja. Da kann ich auch Camerapick machen.

Ich will nur wissen, wie ich schauen kann, ob nur irgendein Teil der Person zu sehen ist. Und für jeden Vertex LinePick kann ich gleich vergessen
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

stfighter01

BeitragFr, Aug 11, 2006 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
dann nimm einfach ein paar charakeristische punkte wie mitte der hände u. füsse, sowie die stirn u. mitt des torso deiner person.
6 linepicks sollten noch zu schaffen sein, und ergibt eine ausreichende genauigkeit.
Denken hilft!

StepTiger

BeitragSa, Aug 12, 2006 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
6 linepicks bei polygonen, bei je 20 Gegnern?

Also sind das pro durchlauf schon 120 Linepicks
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragSa, Aug 12, 2006 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Es sagt ja niemand das du immer alles testen musst.
darüber hinaus ist eigentlich nicht das Linepick das Problem sondern das "wie weit in die Tiefe", welches sich mit einem SceneGraphen doch stark optimieren lässt (wenn du einfach nur objekte positionierst in einem Editor und meinst damit wärs überhaupt irgendwie möglich das ganze zu lösen, so muss ich dich enttäuschen. Für solche Dinge muss der Mögliche Suchraum stark eingeschränkt werden können damits keine Probleme gibt. Sprich du aktivierst das Picking nur auf den Objekten von denen du weisst dass sie potentiell überhaupt im weg sein könnten. Bei den restlichen aktivierst du es garnicht.
nach dem test am besten auch gleich überall wo es nicht gebraucht wird wieder deaktivieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragSa, Aug 12, 2006 8:59
Antworten mit Zitat
Benutzer-Profile anzeigen
es wird bei der ganzen "welt" gebraucht. Die ganzen Räume brauchen es.

Eine Welt modelliert in cartography shop.

Genau das ist ja das Problem
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragSa, Aug 12, 2006 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Fall gibt es nicht, das in der ganzen Welt gebraucht wird, ausser die Figur von welcher dich das Interessiert ist so gross wie die ganze Welt!
In jedem anderen Fall gibt es einen klar definierten Bereich in welchem überhaupt ein Pick entstehen kann nämlich der Bereich erzeugt durch die 8 verbindungen von Kamera zu den 8 Ecken des Bounding Volumes deiner Entity. Ausserhalbs kanns dir egal sein, wenns dort ein Pick gäbe, da es definitiv nicht zur Sichtbarkeit deiner Figur beiträgt.

Aber wie gesagt, ohne einen SceneGraph kannste das ganze vergessen, das geht nicht.
Wenn du dir selbst einen OctTree schreibst (ist eine weit verbreitete Datenstruktur, wirst also im Netz viele Erklärungen dazu finden können), dann kannst du das ganze auch mit deiner CS Map nutzen.
Ich würde dir dazu folgendes empfehlen, was zwar auf den ersten Blick aufwändig aussieht, aber im Endeffekt garnicht so tragisch ist:

1. OctTree SceneGraph initialisieren mit der gewünschten Tiefe (je nachdem wie klein deine Spielfigur sein wird. Musst halt dann mit verschiedenen Tiefen versuchen um zu sehen was die beste Performance liefert)

2. Den Level laden

3. Alle Vertices - Triangles des Levels in Listen speichern und zwar für jede Textur eine Liste (damit du surface optimierungen machen kannst)

4. Nun die verschieden "Blätter" des OctTrees mit den Daten befüllen. (Jedes Blatt stellt ja ein Mesh dar) und zwar jeweils alle Vertices und Triangles die in diesem Bereich liegen landen auf diesem Mesh, für jede Textur eine Surface.

5. Wenn du nun schauen willst, ob etwas sichtbar ist, dann erfragst du erst einmal, welche Bereiche im OctTree dafür in frage kommen und aktivierst das Picking nur auf diesen. Dabei kommt dir sehr zu gute, dass OctTree ja eine Baumhierarchie hat, das heisst wenn du sagen kannst das dich der "grössere Bereich" nicht interessiert, dann musst du die unterbereiche darin garnicht erst untersuchen etc, womit du sehr viel Rechenaufwand direkt verwerfen kannst.


4. ist der einzige knackpunkt, denn es setzt voraus, dass du dich mit 3D Mathe auseinander setzt. Denn das Problem ist, dass nur die wenigsten Vertices genau auf der Kante zwischen 2 Bereichen aufhören, also musst du die Polygone (3D Ebenen in denen sie liegen) schneiden mit der Kante des Würfels und so neue Vertices und Triangles erzeugen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

c64

BeitragDi, Aug 15, 2006 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst
Code: [AUSKLAPPEN]
EntityInview (ENT,CAM)

dann
Code: [AUSKLAPPEN]
EntityVisible (CAM,ENT)


Wenn ich das Problem richtig verstanden habe sollte es das gewesen sein !

Eigentlich hätte es nach Sucos Info klar sein sollen !

[Edit]
Ahso es geht ja um kleinere Punkte, hmm dann würd ich das Modell mit bestimmten Punkten bestücken (pivots,entitys) und diese dann Prüfen.
[/edit]

mfg.

C64
Betreten verboten! Kinder haften für ihre Eltern!

StepTiger

BeitragDi, Aug 15, 2006 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ICH WILL AUCH WISSEN OB WAS IM WEG IST!

Und eigentlich hätte das nach meinen ganzen anderen posts klar sein müssen.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group