I am having trouble getting the Record Animation setting to work in the BGE. Is it possible to record animated characters that are controlled using BGE's logic bricks with some script? In my script I change the positions of the characters bones.
-
$\begingroup$ I don't think the Record Animation option records armature. I think it's only the position/rotation of rigid bodies. $\endgroup$– CharlesLApr 25, 2014 at 15:05
-
$\begingroup$ It doesn't seem to record rigid bodies in the BGE. The joint constraints fail to work. $\endgroup$– Anthony ForwoodJun 5, 2016 at 22:23
3 Answers
Sadly the Record Animation
does not record logic bricks. It only records the actions for physics. Example: a tower falling down and all the pieces scattering across the ground.
-
$\begingroup$ Ah that is unfortunate, would be a great feature to record come complex systems that could take ages to animate... Thanks anyways! $\endgroup$ Apr 28, 2014 at 14:37
This is an older question, but according to this it now does record logic bricks:
https://docs.blender.org/manual/en/dev/game_engine/physics/introduction.html
-
$\begingroup$ Indeed, it says so in the document,... but it doesn't work, does it? $\endgroup$– IdeogramNov 10, 2018 at 8:51
This is not intented as an answer, but it's too elaborate for a comment.
I had the same situation. I wanted a couple of objects to 'tumble' keeping their original location. This would have been really easy to accomplish using logic bricks and the game engine. Instead, I choose to write a very simple Python script. I just post here in case some one else finds it useful.
(That being said, this can ofcourse also be accomplished using keyframe animation. I found Python to be more effective)
import bpy, math, random
scene = bpy.context.scene
for actFrame in range(1,250):
bpy.context.scene.frame_set(actFrame)
i=0
for ob in scene.objects:
if "dark" in ob.name: # or any other condition that suits your needs
i=i+1
rotx = actFrame / 30
rotx = rotx*(1+i/6)
rotz = actFrame/180
rotz = rotz*(2.5-i)
ob.rotation_euler = (rotx, 0, rotz)
ob.keyframe_insert(data_path="rotation_euler", index=-1)