Draw3D und Imagescollide??
Übersicht

![]() |
TimBoBetreff: Draw3D und Imagescollide?? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leuts, ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo nochmal,
danke für eure Antworten, wie kann ich denn eine ganz grobe Kollosion mit einem Polygon erreichen? ![]() 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 ![]() 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. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
ich bins nochmal... also ich bin gerade dabei ALLE imagesoverlap wegzumachen, ![]() jetzt habe ich aber ein Problem und zwar... ![]() 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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/foru...803#282803
Damit. |
||
![]() |
WEBLink |
![]() Antworten mit 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. | ||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hay ![]() 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 ? ![]() 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 ![]() 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. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group