Milkshape 3D 1.71 und Ogre ?

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Beitrag von Benubi »

ja das ist vielleicht die sicherste lösung, ich weiss ja nicht wie Milkshape intern arbeitet, aber es ist nicht auszuschliessen dass bei hin-und-her-konvertierungen daten verloren gehen, da ja verschiedene formate verschiedene einschränkungen und features haben können...

schön dass es jetzt klappt :)

fragen kostet nichts, also spare ich jetzt eine runde:

1.hast du auch schon eigene animationen erstellt/exportiert ?

ich bin noch nicht ganz so weit, aber da stand irgendwo in der exporter-hilfe(?), dass man die anims nochmal in einer textdatei (?) editieren soll bzw. ihre frame-bereiche festlegen muss... mit anims kenne ich mich nun garnicht aus, und ich dachte, eine animation hat immer eine bestimme anzahl von frames (30), und wäre "logisch" von den anderen anims getrennt !?

2.falls jemand noch viel weiter sein sollte:
Wie kann man animationen stoppen ? Mit PlayAnim("") ?
Wie funktionieren mehrfachanimationen (z.b. laufen+reden) ? kann ich mehrere animationen hintereinander aufrufen, die sich addieren !? geheimbefehl ?
auf den ogre hilfen steht nämlich, dass dies schon vor der version 0.11.1 auch unterstützt wurde!?

3.und noch ein bohrende frage:
in der Engine3D.dll befinden sich hunderte funktionen aus ogre (alle?)... kann man auf die auch zugreifen ? zB. "VertexBoneAssignement" ?
muss ich dann die dll als library mit openlibrary laden ?
oder wird jeder "direkte" zugriff durch die rechtevererbung vereitelt ? ist das der grund, weshalb hier einige ihre eigenen engines bauen :cry: ?

vielleicht weiss ja jemand was :)

cu

Benubi
Benutzeravatar
brotkasten-deluxe
Beiträge: 147
Registriert: 29.08.2004 01:43
Wohnort: Germany
Kontaktdaten:

Beitrag von brotkasten-deluxe »

was heist bei mir klapts? :shock: nur dein mesh funzte meine eigenen wiedermal net ! HILFE !!!!! :freak:
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Benubi hat geschrieben:ja das ist vielleicht die sicherste lösung, ich weiss ja nicht wie Milkshape intern arbeitet, aber es ist nicht auszuschliessen dass bei hin-und-her-konvertierungen daten verloren gehen, da ja verschiedene formate verschiedene einschränkungen und features haben können...

schön dass es jetzt klappt :)

fragen kostet nichts, also spare ich jetzt eine runde:

1.hast du auch schon eigene animationen erstellt/exportiert ?

ich bin noch nicht ganz so weit, aber da stand irgendwo in der exporter-hilfe(?), dass man die anims nochmal in einer textdatei (?) editieren soll bzw. ihre frame-bereiche festlegen muss... mit anims kenne ich mich nun garnicht aus, und ich dachte, eine animation hat immer eine bestimme anzahl von frames (30), und wäre "logisch" von den anderen anims getrennt !?

2.falls jemand noch viel weiter sein sollte:
Wie kann man animationen stoppen ? Mit PlayAnim("") ?
Wie funktionieren mehrfachanimationen (z.b. laufen+reden) ? kann ich mehrere animationen hintereinander aufrufen, die sich addieren !? geheimbefehl ?
auf den ogre hilfen steht nämlich, dass dies schon vor der version 0.11.1 auch unterstützt wurde!?

3.und noch ein bohrende frage:
in der Engine3D.dll befinden sich hunderte funktionen aus ogre (alle?)... kann man auf die auch zugreifen ? zB. "VertexBoneAssignement" ?
muss ich dann die dll als library mit openlibrary laden ?
oder wird jeder "direkte" zugriff durch die rechtevererbung vereitelt ? ist das der grund, weshalb hier einige ihre eigenen engines bauen :cry: ?

vielleicht weiss ja jemand was :)

cu

Benubi
zu 2. playanim("") ..das heisst AnimateEntity() .. das ging mal zu löschen aber wohl mittlerweile nicht mehr.
animationen hinzufügen geht allerdings sehrwohl .. einfach die gewünschten Anims per animateEntity() dazuladen.

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Light
;
;    (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 10

Enumeration
#Robot0
#Robot1
#Robot2

EndEnumeration



IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY



If InitEngine3D()

  Add3DArchive("Data", #PB_3DArchive_FileSystem)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    LoadMesh   (0, "Robot.mesh")
    LoadTexture(0, "r2skin.jpg")
    
    CreateEntity (#Robot0, MeshID(0), CreateMaterial(0, TextureID(0)))
    CopyEntity(#Robot0,#Robot1)
    CopyEntity(#Robot0,#Robot2)
    HideEntity(#Robot1,1)
    HideEntity(#Robot2,1)
    
    
;    AnimateEntity(#Robot0, "Idle")
;    AnimateEntity(#Robot0, "Shoot")
    AnimateEntity(#Robot0, "Slump")
    AnimateEntity(#Robot0, "Walk")
    AnimateEntity(#Robot0, "Walk")
    AnimateEntity(#Robot0, "Walk")
    AnimateEntity(#Robot0, "Walk")
    AnimateEntity(#Robot0, "Walk")
    
    
    AnimateEntity(#Robot1, "")
    AnimateEntity(#Robot2, "Die")

    
    
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0)   ; Blue light
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0)  ; Red light
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0,0,0,100)
    sterbenb=0
    
    Repeat
      Screen3DEvents()
      
      ClearScreen(0, 0, 0)
            
      If ExamineKeyboard()
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf
        
        If KeyboardReleased(#PB_Key_Return)
          
          HideEntity(#Robot2,1)
          HideEntity(#Robot1,1)
          HideEntity(#Robot0,0)
        EndIf
        
        If KeyboardPushed(#PB_Key_Return)
          
          HideEntity(#Robot0,1)
          HideEntity(#Robot1,1)
          HideEntity(#Robot2,0)
          sterben=sterben+1
          
        EndIf
        
        
        If KeyboardPushed(#PB_Key_Space)
          HideEntity(#Robot0,1)
          HideEntity(#Robot1,0)
          HideEntity(#Robot2,1)
          
        EndIf
        
        If KeyboardReleased(#PB_Key_Space)
          HideEntity(#Robot1,1)
          HideEntity(#Robot0,0)
          
        EndIf
        

      EndIf
      
      If ExamineMouse()
        MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
      EndIf
      
      ;RotateEntity(0, 1, 0, 0)
      ;RotateEntity(1, 1, 0, 0)
      r1.f=(Random(100)-50)/15000 +1
      r2.f=(Random(100)-50)/15000 +1
      r3.f=(Random(100)-50)/15000 +1
      Debug r1
      
      ScaleEntity(#Robot0, r1, r2, r3) ; Macht die Breite des Entity 3-mal größer   
      ScaleEntity(#Robot1, r1, r2, r3) ; Macht die Breite des Entity 3-mal größer   
      ScaleEntity(#Robot2, r1, r2, r3) ; Macht die Breite des Entity 3-mal größer   
      
      RotateCamera(0, MouseX, MouseY, RollZ)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      If sterben >20
        Debug "totgehen"
        Goto sterben
        
      EndIf
        
      
      
        
      
      
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End

sterben:

For i=1 To 541667 Step 541
  fall.f=i/1000000
  SetEntityAnimationTime(#Robot2,fall)
  
  
  RenderWorld()
  FlipBuffers()
Next i
MessageRequester("","Ich bin platt",0)
End
        
Dieser Code ist ein etwas anngepasster von dem Code der sowieso mit PB ausgeliefert wird.
Zuletzt geändert von bobobo am 28.10.2004 10:38, insgesamt 1-mal geändert.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Beitrag von Benubi »

bobobo hat geschrieben:zu 2. playanim("") ..das heisst AnimateEntity() .. das ging mal zu löschen aber wohl mittlerweile nicht mehr.
animationen hinzufügen geht allerdings sehrwohl .. einfach die gewünschten Anims per animateEntity() dazuladen.
hi und danke für den source, ich werde ihn gleich ausprobieren...
das mit dem löschen ist ja schade... dann muss man wohl das entity schnell löschen und wieder neu initialisieren (?) ...

hmm... kann man auch bei den entitys den start-zeitpunkt bzw. den aktuellen-zeitpunkt direkt festlegen, oder auslesen, so dass man "theoretisch" in einer Queue/Liste die noch zu laufenden anims speichert ?!
nunja vielleicht schaue ich mir das vielleicht einfach mal an :)

@brotkasten-deluxe:
das verstehe ich nicht. du musst doch irgend eine Fehlermeldung haben...
hast du schon unter "Tools/Clean" versucht überflüssiges Zeug aus deinem model zu nehmen oder Ähnliches ? wenn du etwas genauer sagen oder zeigen könntest was passiert könnten wir vielleicht schneller das problem finden :wink:
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Benubi hat geschrieben: ..n muss man wohl das entity schnell löschen und wieder neu initialisieren (?) ...
Du legst dir zu Beginn Koien der Entity an ..bestückst diese Kopien mit den unterschiedlichen Animationen und schaltest die dann je nach Bedarf mit HideEntity() in den Sichtbarkeitszustand den sie erfordern.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Beitrag von Benubi »

bobobo hat geschrieben:Du legst dir zu Beginn Koien der Entity an ..bestückst diese Kopien mit den unterschiedlichen Animationen und schaltest die dann je nach Bedarf mit HideEntity() in den Sichtbarkeitszustand den sie erfordern.
hmmm... die Lösung gefällt mir ehrlich gesagt nicht so besonders...
da geht doch viel spiecher verloren, oder werden die entitys nur mit einem zeiger auf die mesh- und material- daten verwiesen?

demnach müsste man für >jede kombination< von anims ein entity pro "Einheit" anlegen... bei 3 animationen (+ animation "nixtun" ) hätte man schon ehm... 4x4 = 16 entitys !? stimmt das !?

hmm... danke für den tipp... es zeigt sich wiedermal, dass man über alles 2mal nachdenken muss, bevor man es angeht /:->

hey.. da du ich auskennst muss ich dich mit einer weiteren frage nerven. <) ich hoffe du musst dich nicht ärgern, dass du langwierig gesammeltes know-how preisgeben musst , aber...
... hast du schon eine ahnung wie du Mesh-Kollisionen ermitteln könntest ? oder 'ziehst' du vorerst nur eine grosse box um den gesamten mesh ?

gibt es eine geheime "GetMeshData()" Routine, mit der man alle aktuellen flächenkoordinaten ermittln kann ?

selbst wenn du es nicht wissen solltest, hast du mir schon viel geholfen.
danke :)
Antworten