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 ?
vielleicht weiss ja jemand was
cu
Benubi
Milkshape 3D 1.71 und Ogre ?
- brotkasten-deluxe
- Beiträge: 147
- Registriert: 29.08.2004 01:43
- Wohnort: Germany
- Kontaktdaten:
zu 2. playanim("") ..das heisst AnimateEntity() .. das ging mal zu löschen aber wohl mittlerweile nicht mehr.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 ?
vielleicht weiss ja jemand was
cu
Benubi
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
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.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
hi und danke für den source, ich werde ihn gleich ausprobieren...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.
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
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.Benubi hat geschrieben: ..n muss man wohl das entity schnell löschen und wieder neu initialisieren (?) ...
pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
hmmm... die Lösung gefällt mir ehrlich gesagt nicht so besonders...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.
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