[B3D] Animations Demo

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

antome

!!! gesperrt !!!

Betreff: [B3D] Animations Demo

BeitragMo, Feb 20, 2006 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Animation läuft durch die Gegend und ändert ab und zu die Richtung, das kann man dazu benutzen um z.B. Tiere in einer Landschaft umher laufen zu lassen ohne ihnen Pfade zuteilen zu müssen.

Die Kamera kann man als Player aus der Ich-Perspektive benutzen.

Damit das ganze auf einer Heightmap funktioniert muss man evtl. bei
den Y-Werten von MoveEntity und EntityRadius etwas ändern.

Code: [AUSKLAPPEN]
; ************************************************************************************************************
; Camera vorwärts bewegen durch drücken der rechten Maustaste
;Als Beispiel den Ninja von Psionics Seite laden
;http://www.psionic3d.co.uk/cgi-bin/imageFolio.cgi?action=view&link=Free%20Stuff/3D%20Models&image=ninja.zip&url=1
; ************************************************************************************************************

;Include "C:\Blitz3d\userlibs\keys.bb"
Graphics3D 800,600,0,1

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;Textur für Boden erstellen
tex=CreateTexture(128,128,12)
SetBuffer TextureBuffer(tex)

Color 50,60,80
Rect 0,0,128,20,1
Rect 0,0,20,128
Color 100,120,140
Rect 0,5,128,10,1
Rect 5,0,10,128

ScaleTexture tex,0.001,0.001

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;Camera Licht usw.
SetBuffer BackBuffer()
piv = CreatePivot()
camera=CreateCamera(piv)
CameraRange camera, 0.01,1000
light=CreateLight()
PositionEntity piv,0,0,-15
PositionEntity camera,0,2,0
EntityType piv,3       ;Kollisionstyp für die Kamera
EntityRadius piv,1,1   ;Radius für die Kamera
RotateEntity light,90,0,0

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;Treppe und Boden erstellen
cube = CreateCube()
PositionEntity cube,5,-3.9,-5
EntityType cube,4        ;Kollisionstyp für die Treppe
TurnEntity cube ,0,45,0
c2 = CopyEntity(cube)
MoveEntity c2,0,0.3,-1
c3 = CopyEntity(c2)
MoveEntity c3,0,0.3,-1

plane=CreateCube()
ScaleEntity plane,1000,0.001,1000
PositionEntity plane, 0,-3.3,0
EntityTexture plane,tex
EntityType plane,1   ; Kollisionstyp für den Boden

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; Cube um Animation herum (Parent) erstellen um auf Collision zu testen
pAnim  = CreateCube ()
ScaleEntity pAnim,1,2.5,1 ;auf die richtige Größe skalieren
EntityAlpha pAnim,0.0     ;unsichtbar machen
EntityRadius pAnim,2.1,2.75 ;Größe für die Kollisionsprüfung

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; Animation laden, Parent zuweisen
;Anim = LoadAnimMesh("c:\blitz3d\test\Robby2anim4.b3d") ;Animation laden
Anim = LoadAnimMesh("c:\blitz3d\test\ninja.b3d") ;Animation laden
ScaleEntity Anim,0.5,0.5,0.5  ;Animation auf passende Größe skalieren
;RotateEntity Anim,0,0,0     ;Animation in die selbe Richtung drehen wie Parent Cube
EntityParent Anim,pAnim   ;Cube als Parent einsetzen
MoveEntity Anim,0,-1.1,0  ;Entity Korrektur
RotateEntity pAnim,0,225,0 ;Parent Rotieren damit die Animation in die richtige Richtung läuft.
seq = ExtractAnimSeq(Anim,1,14) ;Die Laufanimation extrahieren

; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;
EntityType pAnim,2        ;Dem Parent nun den Kollisionstyp hinzufügen

Collisions 2,1,2,2        ;Kollision zwischen Anim und Boden
Collisions 3,1,2,2        ;Kollision zwischen Kamera und Boden
Collisions 2,3,1,2        ;Kollision zwischen Anim und Kamera
Collisions 3,2,1,1        ;Kollision zwischen Kamera und Anim
Collisions 2,4,2,2        ;Kollision zwischen Anim und Treppe
Collisions 3,4,2,2        ;Kollision zwischen Kamera und Treppe

SeedRnd MilliSecs()
; ============================================================================================================
; Haupschleife
While Not KeyDown(1)
   
    xx = MouseXSpeed()   ;Horizontale Mausbewegung für Kameradrehung
    xx = 0-xx            ;umkehren
   
    TurnEntity piv,0,xx/4,0 ;Kameradrehung

    If MouseDown(2)          ;Kamera vorwärts bewegen wenn rechte Maustaste gefrückt wird

        If EntityCollided (piv,2)                ;wenn Kamera-Kollision mit der Animation = wahr (true)
            MoveEntity piv,0.0,-0.1,-0.01      ;Animation schiebt Kamera zurück wenn diese auf sie zugeht
            ;MoveEntity pAnim,0.0,-0.1,-0.02    ;wenn die Kamera (Player) stärker als die Animation ist
        ElseIf EntityCollided (piv,4)            ;wenn Kamera-Kollision mit der Treppe = wahr (true)
            MoveEntity piv,0,-0.01,0.1
        Else                                     ;Vorwärtsbewegung wenn keine Kollision getestet wird
            MoveEntity piv,0,-0.5,0.1
        EndIf
       
   EndIf
    If EntityCollided (pAnim, 1) ;or col = 1
        MoveEntity pAnim,0,-0.05,0.043  ;Vorwärtsbewegung und Animationsgeschwindigkeit aufeinander anpassen

        If col = 0 Then Animate(Anim,1,0.14,seq) : col = 1   ;starte Animation wenn pAnim den Boden berührt und Animation bisher nicht gestartet wurde.
       
        ; ############################################################################################################
        ; Zufällige Drehung der Animation
        If rt1 = 0 Or rt2 = 10 Then rt1 = Rand(1,2)
        If rt1 = 1 Then turn# = Rnd#(-5,0) : rt2 = Rand(0,400)
        If rt1 = 2 Then turn# = Rnd#(0,5) : rt2 = Rand(0,400)
        r = Rand(0,30)
        If col = 2 Or now = 1 And r = 0 Then TurnEntity pAnim,0,turn#,0 : now = 1
    ElseIf EntityCollided (pAnim, 3)
        ;Animate(Anim,1,0.1,-0.01)
    ElseIf EntityCollided (pAnim, 4)
        MoveEntity pAnim,0,-0.05,0.043
        col = 2
    Else
       
        MoveEntity pAnim,0,-0.5,0.043
        If col = 0 Then Animate(Anim,1,0.14,seq) : col = 1
        If rt1 = 0 Or rt2 = 100 Then rt1 = Rand(1,2)
        If rt1 = 1 Then turn# = Rnd#(-5,0) : rt2 = Rand(0,400)
        If rt1 = 2 Then turn# = Rnd#(0,5) : rt2 = Rand(0,400)
        r = Rand(0,30)
        If col = 2 Or now = 1 And r = 0 Then TurnEntity pAnim,0,turn#,0 : now = 1
       
    EndIf
    UpdateWorld
    RenderWorld
    MoveMouse 400, 300
    Flip
   

Wend

End



~Editiert~ [B3D] in den Titel eingefügt. Bitte dran denken! MfG D2006
antome

x-pressive

BeitragDi, März 07, 2006 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Memory Access Violation.

-Bitte immer erst mal testen vor dem Posten bzw. Media-Dateien beifügen. Was hat das sonst für einen Sinn? Confused
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Schnuff

BeitragDi, März 07, 2006 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
wo kriege ich diesen Ninja/ein Animiertes mesh her?
Programmers dont die. They gosub without return...
 

JanK

BeitragDi, März 07, 2006 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denk mal hier Idea
http://www.psionic3d.co.uk/cgi...D%20Models
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de
 

antome

!!! gesperrt !!!

BeitragMi, März 08, 2006 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
@x-pressive
Das Programm ist getestet und funktioniert bei mir einwandfrei

wo man die Mediadatei herbekommt steht auch dabei, den Pfad muss man
alledings schon selber richtig einstellen, der ist ja bei jedem anders.

Wenn ich Quellcode mit Mediadatei gezippt zum download hinterlege ist die nur solange da wie die HP gültig ist.

Es wird ja nicht so schwer sein eine Mediadatei runter zu laden.

Für alle welche die URL nicht in den Browser bekommen hier der Link zur Seite mit den freien Animationen
http://www.psionic3d.co.uk/cgi...D%20Models
antome

x-pressive

BeitragFr, März 10, 2006 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@antome: Klar habe ich nichts dagegen, in jedem Quellcode erst mal nach allen möglichen Mediadateien und URLs zu suchen und diese mühsam auszuwechseln oder in den Browser zu kopieren. Warum auch nicht? Macht ja Spaß und wir haben alle nichts besseres zu tun Confused

Zitat:
Wenn ich Quellcode mit Mediadatei gezippt zum download hinterlege ist die nur solange da wie die HP gültig ist.

Ja meinst du denn, das gilt nur für deine HP und nicht für andere?

Aus diesem Grund benutzt man in der Regel einfache Cubes oder dynamisch erstellte Texturen.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group