0
$\begingroup$

I have been trying to set the scale of this part from -1.000 to 1.000 but when I do that the faces flip inside out and the object completely looses it's rotation. Is there any way to do this, it is absolutely necessary for my project as it is for Flight Simulator and it does not read the scales as blender does and everything needs to be at 1.000.

scale at -1.0

scale at 1

$\endgroup$
6
  • $\begingroup$ Scale to 1 in object mode, then enter edit mode, select all and scale to -1, the object will keep the scale but the mesh will be flipped the way you had it before. $\endgroup$
    – user1853
    Dec 21, 2017 at 22:54
  • $\begingroup$ Ok if I do that the faces are correct and animations but now it is misaligned . picture above ^ $\endgroup$ Dec 21, 2017 at 23:03
  • $\begingroup$ Enter edit mode and align the geometry there. $\endgroup$
    – user1853
    Dec 21, 2017 at 23:15
  • 1
    $\begingroup$ Is Apply Scale(with Ctrl-A) helpful? This keeps the current size and sets the scale as default.(Sorry. forget it. I tried this on myself and didn't work) $\endgroup$
    – Allosteric
    Dec 22, 2017 at 0:33
  • 1
    $\begingroup$ As a rule, and in future projects, you should always keep your scale at 1 unless you have a strong reason not to. Read: blender.stackexchange.com/questions/7298/… $\endgroup$
    – user1853
    Dec 22, 2017 at 0:49

2 Answers 2

0
$\begingroup$

I recommend using python. (mainly based on How to get keyframes and related information?)

for ob in bpy.context.scene.objects :
    if ob.type in ['MESH','ARMATURE'] and ob.animation_data:
        for fc in ob.animation_data.action.fcurves :
            for key in fc.keyframe_points :
                bpy.context.scene.frame_set(key.co[0])
                if ob.scale[0] < 0:
                    ob.scale *= -1
                    ob.keyframe_insert(data_path = 'scale')

The flow of this code is something like;

  1. look for an object
  2. get the frame number with keyframes
  3. rescale it if the scale is minus
  4. overwrite keyframe

I've tried this with an animated .blend file in blender2.79 and it worked.

$\endgroup$
3
  • $\begingroup$ If you flip the conditions and use the continue statement, the main code can be unindented by 2 levels. $\endgroup$
    – dr. Sybren
    Dec 25, 2017 at 13:09
  • $\begingroup$ I think I got what you mean but I am not quite sure whether it is neccesary. Especially for the first "if", isn't it better to stick with the original code in order to keep it intuitive? $\endgroup$
    – Allosteric
    Dec 26, 2017 at 23:41
  • 1
    $\begingroup$ Intuitive is a subjective term. I find it more intuitive to have the core functionality of a bit of code outside conditionals. See github.com/golang/go/wiki/CodeReviewComments#indent-error-flow for more motivation (the page is about Golang, but the principle can be applied to many languages). $\endgroup$
    – dr. Sybren
    Dec 27, 2017 at 6:51
0
$\begingroup$

This will only work if rescaling is not an integral part of your animations. Given that you've stated that the game doesn't use scaling, I'd hope that is the case.

If so, the first thing you want to do is clean up your animation keyframes by deleting the scale keyframes. For future reference, don't add keyframes for properties that you aren't going to use. After that, all you need to do is apply the scale by selecting the objects, pressing Ctrl+A and selecting "Scale" in the menu that appears.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .