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.
Asked
Active
Viewed 2,922 times
0
-
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. – Dec 21 '17 at 22:54
-
Ok if I do that the faces are correct and animations but now it is misaligned . picture above ^ – Osian Sodenkamp Dec 21 '17 at 23:03
-
Enter edit mode and align the geometry there. – Dec 21 '17 at 23:15
-
Honestly that does not work for me, I am just going to give up on modeling, I have been stuck at this for 3 years now. – Osian Sodenkamp Dec 22 '17 at 00:09
-
1Is 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) – Allosteric Dec 22 '17 at 00:33
-
1As a rule, and in future projects, you should always keep your scale at 1 unless you have a strong reason not to. Read: https://blender.stackexchange.com/questions/7298/why-is-it-important-to-apply-transformation-to-an-objects-data – Dec 22 '17 at 00:49
2 Answers
0
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.
stphnl329
- 4,817
- 9
- 27
0
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;
- look for an object
- get the frame number with keyframes
- rescale it if the scale is minus
- overwrite keyframe
I've tried this with an animated .blend file in blender2.79 and it worked.
Allosteric
- 643
- 4
- 19
-
If you flip the conditions and use the
continuestatement, the main code can be unindented by 2 levels. – dr. Sybren Dec 25 '17 at 13:09 -
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? – Allosteric Dec 26 '17 at 23:41
-
1Intuitive is a subjective term. I find it more intuitive to have the core functionality of a bit of code outside conditionals. See https://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). – dr. Sybren Dec 27 '17 at 06:51


