Draw3D und Imagescollide??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

TimBo

Betreff: Draw3D und Imagescollide??

BeitragDi, Jan 22, 2008 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leuts, Very Happy

also ich bin gerade dabei mein Spiel komplett auf DrawImage3D umzuschreiben.
Es ist ein 2D Spiel.
Aber jetzt habe ich ein großes Problem und zwar...
wie mache ich eine ImagesCollide abfrage mit DrawImage3D ?
muss ich dafür CreateImage machen ,das Bild mit DrawImage3D darein malen und dann das neue Bild abfragen lassen?

Hier im Forum habe ich nicht wirklich was über imagesoverlap/collide was gefunden.

mfg
Intel Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Jo0oker

BeitragDi, Jan 22, 2008 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
mach es doc einfach so, und überprüf die koordinaten.

Ich glaub es gibt keine, oder?^^
lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jan 22, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Draw3D hat kein ImagesCollide. In der neuen Version wird es aber möglich sein, einen Punkt auf ein Image ''colidieren'' zu lassen. Man gibt dann die Punktkoordinate und die Koordiante eines Images ein, dabei wird noch die Skallierung und Rotation vom Image benötigt. Das Ergebnis der Kollision ist dann eine gefilterte Farbrückgabe. Man kann also zum Beispiel nach dem Alphakanal über ein Schwellenwert abfragen.

Pixelgenaue Bild-auf-Bild Kollision ist unter 3D wirklich schwierig bishin unmöglich. Zumindest mit Blitz3D Bordmitteln. Was man allerdings machen könnte, ist ein Rechtsoverlap mit Einziehung von Rotation und Skallierung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragDi, Jan 22, 2008 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Es hält sich in Grenzen mit dem unmöglich mit 3D pixel perfekt ... sonst hätte BM ernsthafte Probleme, da es genau das macht defakto.
Aber es ist in der Tat so das man normalerweise Swept Polykollision mit S.A.T. nutzt weil es einem bei der kollision eine normale und kollisionpunkt zurück gibt was für physik und kollisionshandling wichtig ist. SAT sorgt dabei primär dafür das man nur sehr sehr wenige potentielle Kollisionssituationen prüfen muss statt n^2 *X bei n objekten.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TimBo

BeitragDi, Jan 22, 2008 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo nochmal,

danke für eure Antworten,
wie kann ich denn eine ganz grobe Kollosion mit einem Polygon erreichen? Very Happy
ich denke zb. daran also ein Achteck (wenn Kreise gehen auch gerne mit einem Kreis),
welches man nicht sieht mit einem Bild collidieren zu lassen, das wäre doch machbar, oder Confused

mfg
Intel Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jan 22, 2008 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wie gesagt, die V.3.1 (kommt demnächst) kann ein beliebigen Punkt auf Pixelgenaue Kollision auf ein Image prüfen. Image auf Image jedoch nicht. Ich könnte noch eine Funktion machen, die zumindest sowas wie ImagesRectsOverlas mit Bezug des Rotationswinkels als auch Skallierung berücksichtig.

Das ganze könnte dann so aussehen:

If ImagesRectsOverlap3D(Handle1, X, Y, Angle, Scale, Handle2, X, Y, Angle, Scale)=1 Then

Es müsste dann jeder Eckpunkt auf Überlapung der gegnerischem Image geprüft werden. Dieses wäre aber nur unwesentlich genauer, als es Mit ql:Sqr zu machen.

Zu dem was schon in der V.3.1 funktioniert, sieht so aus:

If GetTexel3D(Handle1, X1, Y1, X2, Y2, Angle, Scale, $FF000000) > 128 Then

In diesem Fall müsste also ein Alphaimage geladen sein. Alles was weniger als die hälfte transparent ist, wird mit > 128 geprüft.

Ansonsten könntest du auch mit zuhilfenahme von Pivots EntityRadius gegeneinander auf Kollision prüfen. Das erfordert allerdings für jedes Image das ''Zusammenbasteln'' mit Grobstrukturen des Images. Du bewegst dann nicht mehr primär die Images selbst, sondern die Pivots und ggf. auch weitere Childs der Pivots. Jedes Pivot hat dabei ein eigenes EntityRadius, welcher dann auf gegnerische Kollidiert und auch automatisch stoppt! Die Bilder positionierst du dann anhand der einzelnen ParentPivots.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

TimBo

BeitragDo, Jan 24, 2008 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

ich bins nochmal...
also ich bin gerade dabei ALLE imagesoverlap wegzumachen, Surprised
jetzt habe ich aber ein Problem und zwar... Shocked

wie kann man rein Mathematisch eine Kolision zwischen einem Rechteck und einem Kreis überprüfen?
Also mit Pytaguras Lehrsatz kann ich easy 2 Kreise auf Kolisionen überprüfen...wie geht das aber mit dem Rechteck Confused

Viele Grüße
Intel Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

The_Nici

BeitragFr, Jan 25, 2008 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...803#282803

Damit.

WEBLink

BeitragMo, Jan 28, 2008 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du wirklich keine Koordinatenprüfungen machen möchtest, dann kannst du ein normales image laden und dies transparents machen und dann mit Imageoverlap überprüfen leider wird auf die Art keine Rotation oder Skalierung berücksichtig, ist also Müll.

TimBo

BeitragMi, Jan 30, 2008 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay Smile

Zitat:
Also wenn du wirklich keine Koordinatenprüfungen machen möchtest, dann kannst du ein normales image laden und dies transparents machen und dann mit Imageoverlap überprüfen leider wird auf die Art keine Rotation oder Skalierung berücksichtig, ist also Müll.


wie kann das funktionieren ? Shocked
Draw3D arbeitet doch mit der Blitz3D Engine, da gibt es kein Imagesoverlap.... oder?

also habe jetzt alles mit:
Zitat:
;RectCircleIntersect
Function RectCircleIntersect(rectX, rectY, rectWidth, rectHeight, circleX, circleY, circleRadius)
tX = circleX
tY = circleY

If tX < rectX Then tX = rectX
If tX > rectX + rectWidth Then tX = rectX + rectWidth
If tY < rectY Then tY = rectY
If tY > rectY + rectHeight Then tY = rectY + rectHeight

Return ((circleX - tX) * (circleX - tX) + (circleY - tY) * (circleY - tY)) < circleRadius * circleRadius
End Function

gelöst...

aber wenn es jetzt geht, mit ImagesOverlap mache ich das in Zukunft wieder mit ImagesOverlap Very Happy

mfg
Intel Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 30, 2008 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das oben aufgeführt Zitat liesse sich genauso gut mit If-Abfragen oder mit RectsOverlap (ohne Image...) machen. Wie aber gesagt, wird die Drehung des Images nicht berücksichtigt. Leider - und das ist ein großer Nachteil der Draw3D - kann keine Texel kollisionsprüfung mit Blitz3D zweier Triangles durchgeführt werden. Ich könnte es zwar mit viel Aufwand genau programmieren, doch wäre dann nach jeder Abfrage mit einer Diaschow zu rechnen.

Ich werde mir aber nach einer Möglichkeit überlegen, die man gescheit und schnell berechnet eine simple Kollisionserkennung in einer Form anwenden kann. Allerdings - wenn überhaupt - wird es in der übernächsten Version zur Verfügung stehen. So wie ich mich kenne, kommen dann Prefunktionen raus, die dann an bestimmte Leute ausgeteilt werden. Du wärst dann der erste, der diese testen könnte.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group