Animation ohne Kollision

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Puccini

Betreff: Animation ohne Kollision

BeitragFr, Jul 27, 2007 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
HI!

Ich habe ein animiertes Mesh im .b3d format vorliegen.

dies wird zweckmässig mit Loadanimmesh() geladen und animiert!
Mein próblem hierbei ist,das ich durch dieses objek´t durchlaufen kann! wenn ihc nur schreibe Loadmesh() klappt aber alles!??

Gehen Animierte objekte nicht auf kollision zu überprüfen? und kanns sein das auch CameraPick bei der Animation net funktioniert???

Das wären meine 2 hauptprobleme zur zeit!

Weis einer Rat?
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39
 

Dreamora

BeitragFr, Jul 27, 2007 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Die Kollision hast du doch eh mit Entity Radius oder? Polygon Kollision ist nämlich nicht animiert, die wäre gegen das Model zum Zeitpunkt 0 (Frame 0)

2. Camerapick geht immer, vorausgesetzt du hast den PickMode gesetzt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

peacemaker

BeitragFr, Jul 27, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte das Problem auch immer, dass bei animierten Meshes keine Kollision ging.

Aber ueberhaupt keine.
Wenn ich Polygoncoli gemacht habe, hat es nich gefunzt.
Wenn ich andere genommen habe hat es trotzdem nich gefunzt.

MfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

Puccini

BeitragFr, Jul 27, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
also PickMode is wie Kollision auf 2 gesetzt (also Polygon)

Meinst daran könnte das liegen??

Da muss ich jetzt zu jedem drecks animierten objekt noch ne collbox rumbasteln?? :< och nö, kein bock! gehts net auch anders????
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39
 

Krümel

BeitragSa, Jul 28, 2007 9:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuell hilft dir das weiter:
http://www.blitzbasic.com/Comm...opic=23044

Puccini

BeitragSa, Jul 28, 2007 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, aber bei mir geht der link leider nicht Crying or Very sad
sag mal wo ich den finde Very Happy

Danke!
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

BladeRunner

Moderator

BeitragSa, Jul 28, 2007 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
oh, bb.com hat seine monatliche downtime. Der link wäre okay, nur die Page ist grad off.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Dreamora

BeitragSa, Jul 28, 2007 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
gegen animierte objekte geht keine polygon kollision

man sollte allgemein bei sich bewegenden objekten keine polygon kollision nehmen, das führt in den meisten fällen zu problemen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Moep

BeitragSa, Jul 28, 2007 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,


ich glaube dein Problem lässt sich mit einer Rekursiven Funktion lösen, denn wenn du auf ein Animmeshs EntityPickMode oder Entitytype anwendest wird die Funktion nur auf den Pivot angewendet der alle anderen Entitys als Childs hat.

Bei der Entitytype Funktion kannst du hinter dem Typ angeben ob es Rekursiv sein soll, dann wird es automatisch auf alle Childs angewandt.

z.b.

Code: [AUSKLAPPEN]
EntityType player,PLAYER_TYPE,1


und fürs Picken hier ne Funktion :

Code: [AUSKLAPPEN]
Function EntityPickModeRec(Entity,geometrie,verdecken=1)  ; 'Rec ' steht für Rekursiv
   If Not Entity Return                       ; Wir wollen die Rekursive schleife auch
                                                                                     ;irgendwann verlassen

   EntityPickMode entity,geometrie,verdecken      ; Pickmode setzen
   
   For i = 0 To CountChildren(entity)-1              ;Alle  unterobjekte durchgehen
      ent = GetChild(entity,i)
      EntityPickModeRec(ent,geometrie,verdecken)  ; Auf alle unterobjekte die selbe Funktion
   Next                                 ;anwenden, somit wird auch auf alle unterobjekte unseres unterobjekts
                                       ; die Funktion angewandt
End Function


mfg Moep
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Puccini

BeitragSa, Jul 28, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
also, mein problem mit der kolllision is erstmal erledigt Wink

der trick mit der 1 hinten dran hat geholfen!

Einfach EntityType mesh,CollTyp,1 und es geht!

das mit dem picken geht leider immer noch nich und das mit dem rekursiv machen hab ich net ganz durchschaut! das muss ich mir nochmal zu gemüte führen! weil man soll ja auch mal mit leuten reden können und da is picken ganz gut Wink
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

Moep

BeitragSa, Jul 28, 2007 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann auch sein dass es an meiner Funktion liegt^^, ich hab die nämlich nicht getestet.

Das mit der Rekursion hab ich verstanden , indem ich einfach die eine beispiel Funktion schritt für schritt durchgedacht habe, also was sie eig. macht^^.

Es hilft^^.

mfg Moep
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Puccini

BeitragSa, Jul 28, 2007 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
was sagt mir das "verdecken" in der funktion genau???

hmm, könntest du vielleicht ein kleines beispiel coden? einfach mal die zeilen noch dranhängen wo du
1.das entity läds
2.das entity mit der function bearbeitest
3.das ergebtnis nutz!

muss nicht funktionnieren die funktion, nur der grobe aufbau!
ich hab die funktion so wie sie is in mein programm kopiert und dann nach dem laden den mode festlegenlassen! hat aber net geklappt!
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

Moep

BeitragSa, Jul 28, 2007 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;Für das verdecken sie hier : http://blitzbase.de/befehle3d/EntityPickMode.htm
;lag übrigens an meiner Funktion ^^, CountChildren(Entity)-1 war falsch, die -1 ist zu viel.

Const gw=1024
Const gh=768
Graphics3D gw,gh, 32, 2


Global Cam = CreateCamera()      ; wir brauchen ne Kamera
CameraRange Cam,0.1,10000        ; is ja nurn test

Global mxs#,mys#


mesh=LoadAnimMesh("C:\Programme\Blitz3D\Samples\Blitz 3D Samples\FlameDuck\Walker\walkanim.3DS")  ; von mir aus auch was anderes^^
ScaleEntity mesh,0.03,0.03,0.03      ; das ding wäre sonst viel zu groß
EntityPickModeRec mesh,2         ; Joa die Funktion halt
PointEntity Cam,mesh            ; Auf mesh gucken


Global sp#=0.3                  ;kamera speed
Global txt$                     ;angezeigter Text


light=CreateLight()               ;es werde licht
PositionEntity light,Rand(-100,100),Rand(100,300),Rand(-100,100)
PointEntity light,mesh


CameraClsColor Cam,128,128,128      ;schwarz is zu dunkel^^
HidePointer                     ;keine Maus bitte

While Not KeyDown(1)         
   
   MoveMouse gw/2,gh/2            ;damit uns die Maus nicht ausm Fenster springt
   
   pick=CameraPick(Cam,gw/2,gh/2)   ;wir wollen auch sehen das die Funktion funktioniert^^
   
   If pick
      txt = "Picked Entity : " + EntityName(pick)
   Else
      txt = "No Entity Picked!"
   EndIf
   
   ;--------------Kamerabewegung---------------------
   If KeyDown(17) Then MoveEntity Cam,0,0,sp
   If KeyDown(31) Then MoveEntity Cam,0,0,-sp
   If KeyDown(30) Then MoveEntity Cam,-sp,0,0
   If KeyDown(32) Then MoveEntity Cam,sp,0,0   
   TurnEntity Cam,mys*0.3,-mxs*0.3,0
   RotateEntity Cam,EntityPitch(Cam),EntityYaw(Cam),0
   ;--------------Kamerabewegung---------------------
   
   
   ;-------------Rest ist denk ich Klar-------------
   RenderWorld
   
   Color 255,0,0
   Oval gw/2-5,gh/2-5,10,10,0
   Color 0,0,255
   Text 20,20,txt
   
   Flip
   
   
   mxs=MouseXSpeed()
   mys=MouseYSpeed()
   ;-------------Rest ist denk ich Klar-------------
Wend
End

;----------Die Funktion-------------------------------
Function EntityPickModeRec(Entity,geometrie,verdecken=1) 
   If Not Entity Then Return
   ; Wenn es das Entity nicht gibt, die Funktion garnicht erst ausführen
   
   EntityPickMode Entity,geometrie,verdecken     
   ;Ganz normal Pickmode Setzen
   
   For i = 0 To CountChildren(Entity)
      ;Geht alle Childs durch
      ent = GetChild(Entity,i)
      ;Child 'kriegen'
      EntityPickModeRec(ent,geometrie,verdecken)
      ;Die selbe Funktion von eben nochmal auf alle Childs ausführen
   Next
   ; Ich hoffe du versteht das jetz^^
End Function

Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Puccini

BeitragSa, Jul 28, 2007 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, ok! jetzt klapps Very Happy

wer weis was ich da verkehrt gemacht habe -.- danke nochmals Wink
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group