text:
How to import numerical fluid particle data to Blender?
I have numerical files output from a c++ program for fluid simulation by solving Navier Stokes equation using particles, the file looks like this
-0.09 0.02 0.014737 1.26721e-17 4.34908e-19 -0.326667
-0.09 0.02 0.019737 1.02892e-17 2.54586e-17 -0.326667
-0.09 0.02 0.024737 1.08211e-18 3.22247e-17 -0.326667
-0.09 0.02 0.029737 -5.16105e-18 2.42116e-17 -0.326667
-0.09 0.025 -0.040263 -7.48241e-18 -1.33054e-17 -0.326667
-0.09 0.025 -0.035263 -1.51154e-17 -4.43992e-18 -0.326667
-0.09 0.025 -0.030263 -1.83814e-17 -4.67568e-18 -0.326667
-0.09 0.025 -0.025263 -3.33315e-17 -6.81458e-18 -0.326667
-0.09 0.025 -0.020263 -4.54398e-17 -2.37933e-18 -0.326667
-0.09 0.025 -0.015263 -2.15601e-17 4.90648e-18 -0.326667
-0.09 0.025 -0.010263 -2.87995e-18 4.25644e-18 -0.326667
-0.09 0.025 -0.00526297 7.32533e-18 8.69628e-18 -0.326667
-0.09 0.025 -0.000262971 1.73026e-17 1.31652e-17 -0.326667
-0.09 0.025 0.00473703 1.38162e-17 -5.92466e-18 -0.326667
-0.09 0.025 0.00973703 1.64762e-17 -1.85798e-17 -0.326667

Note the first 3 numbers are the particle positions, the last 3 numbers are velocities of the particles. What is the right file format to import to Blender for animation? I am trying to display or visualize the file (3D fluid) that is shown above in Blender and I am not sure how to do that.
EDIT: [mjf]  I would like to import the array as a collection of particles that represent the initial position and velocity of particles in a fluid flow and then visualize the state of the flow.
Thanks in advance!

What do you want to do with the data?  As it is, there's no importer that will import data in the format of your file so you'd have to write your own, but to know what it would look like, we'd have to know what you want to do with the velocities and positions.

Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.

Thank you for all your advice, I just edited the questions, does that clarify things a little bit better?

@MartyFouts Do you know what is the common format for visualizing fluid in Blender? Or files to import as fluid? Are they positions of the particles only or there are something else? Or if you can provide a extension name, that would be very helpful! Thank you very much!
Sorry that my question is vague, I am new to fluid animation as I am not familiar with data types for fluid simulation, so any help would be very much appreciated!

I don't.  Mostly people use Blender's Mantaflow simulator and it creates its own fluid particles.  I don't know how you would fit an existing array of particles into that simulator, sorry.  But now I do know what you want. I'm going to edit your question slightly to see if it will attract people who do know.

@MartyFouts Thank you, I appreciate your help! I am currently reading a fluid simulation book, and a few online resources, I will keep this post updated

just for my curiosity: i don't know if you have, but if you have all positions, you could just use e.g. spheres and then position them...or do you have just the "starting positions and velocities" and Blender should then calculate it?

@Chris Thank you for your comment. I thought about it too, I can just draw spheres around positions, actually I have a sequence of a flow, what I showed is just one file, so the data should be enough for animation.
To answer your question, I just have the "positions and velocities" and I need to process that into a file format that Blender is able to work with..

but then it is just a "small" and easy python script you need. It should just read your file, convert that to positions/vectors and then you have just to position your spheres/metaballs or whatever you would like to have.

@Chris That sounds like a scatter plot, is that what you are suggesting? Maybe matplotlib is able to do this? Or if not, do you know any graphics libraries or examples that I can refer to?
I will put this in the answer I wrote just now afterwards, many thanks!

I'm curious, what program are you using to generate your simulation data? Also, which book?

@MartyFouts The program I am using is from here: an introduction for physics-based animation. The source code of fluid animation, which just write a bunch of numerical data files.
The book I am reading is: Fluid Simulation for Computer Graphics by Bridson, Robert.

There may be something in add-ons or in the works (Geo point instancing) that would be useful for you to import position and initial velocity, perhaps with geometry nodes and python.   I thought of this post when I read https://blenderartists.org/t/flip-fluids-addon-a-liquid-fluid-simulation-tool-for-blender/702503/1184

@james_t Thanks! I figured this out and will update my answer!

After doing some research, I read from this post that Stanford .PLY file can be used to work with Blender, and the particle positions are called "point cloud"!
What I did was using a python script to write the point clouds into a Stanford .PLY file using open3d, the code is given as follows:
def write(file_name):
    # file format: "fluid.iii.part"
    with open(file_name) as f:
        lines = f.readlines()

    name = file_name[:-5]

    n = len(lines)
    point_cloud = np.zeros((n-1,3))
    for i in range(1,n-1):
        position = lines[i]
        position_numeric = np.array([float(j) for j in position.split()][:3])
        point_cloud[i] = position_numeric

    pcd = o3d.geometry.PointCloud()
    pcd.points = o3d.utility.Vector3dVector(point_cloud)

Then I import all the generated .PLY file into Blender to get the following results:

Quite interesting and useful.  Thanks for the update!   Doesn't seem to use the initial velocities?

You are welcome! No, I didn't use the velocities, I've been doing research about this, it seems we only need point cloud only to generate mesh for liquid. I am trying to give them a mesh in Houdini, cause there seems no mesh generation in Blender. Anyways, I will keep updating if there is anything new!

I tried someting like this years ago based on Blender 2.7x. Back then, the particle system used to cache particle positions for every frame. These were stored in arrays accessible via Blender's Python API. Having loaded the simulated positions it was possible to animate the external simulation. I didn't find enough time to properly implement a stable workflow for this. Maybe the situation improved with all the progress in Blender's development. I'll try to find some time and see if I can find my code again!


text:
Why does connecting colorramp Alpha to Material Output Displacement cause object to turn magenta in Render Preview mode?
I just started learning Blender. According to the lesson, I began to try to adjust the materials for the default cube. When applying such nodes as noise texture and colorramp, I connected from the alpha output to the Material Output's Displacement input. I found out that,
the cube changed color to magenta, and the tutorial shows how to apply a noise texture, i.e. change it. Please tell me what could be the matter, why is this happening to me?

Would you please be so kind as to direct the title of the question to the topic? The title "Help me please!" does not help anyone to see what this is about, so it is unlikely that anyone will help you. Thank you!

Displacement is essentially a Vertex Shader and is used with B&W images through a Displacement Node in order to provide a "heightmap" so to speak for the displacement of vertices. You should not have your alpha (or any alpha for that matter) connected to displacement.  Also - magenta is blender's color for "cannot find texture", so that's a clue somethings amiss.

Hi Please use a title that reflects the content of the question. It should be descriptive but succinct, unique and identifying, summarizing the issue so that users can at a glance understand what your post is about. Use the [edit] link below your post and avoid anything not strictly essential to the post. Remember, your title is the first thing potential visitors will see, and makes your question findable for future users. See "What is the problem with posting an image or link and asking “How do I do this?""

I suggest starting the tutorial again and take your time to find out what you did wrong before.
Try disconnecting the Alpha value from Displacement to see if the gradient is visible.
Second, the displacement should be only visible in Cycles Render, so try to switch to Rendered View.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Non-destructive explosion of vector objects
I have a logo made of little dots, and I'd like to have them 'burst out to space' without losing their individual shape in the process.
I looked up for explosion effects tutorials but I got only the smoky fire kind of explosion, or either fragmentations of solids. So I basically miss the term of the non-destructive bursting effect.
What is it? And in case what tutorial do you suggest?
Thank you very much.

You could cut the Gravity in the Scene panel, give Rigid Body to your objects, create a Force Field > Force at the center, and make it strong enough to make the objects explode:

Or simply enable the Options > Only Affect > Locations and scale to make the objects move away from each other, keyframe the start and end locations.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Export multiple armatures to fbx
I'm pretty new in blender and I have this issue.
I've to export a book from blender to UE4, this book has 2 separate meshes (one for the cover and one for pages) and, each one, has it own skeleton. The root bone of the pages is linked to the rotation of the root bone of the cover so, when I open the cover I also open pages with a simple animation.
The problem is that I don't know how to export to fbx: I can export meshes but I lose relations between skeletons and, when I try the "open" animation, it open just cover while pages stay still.
Some tips?

It's a limitation of the UE4 engine (this works fine in Unity). You can't import multiple armatures to UE in a single file. But anyway you better use only one armature. You can still use multiple meshes, just export them with the same aramture (each mesh to a different fbx), then select the same armature when importing to UE.

Late to the party, but I'm trying to do exactly this. It IS possible with Unreal. I know, because I've done it before, and one of my old models still exports this way. I just can't seem to figure out how with my new model.


text:
Animation twitches/jumps between Keyframes
I'm currently working on my first 3D animation and stumbled upon this:
Blender animates the movement between my keys, but here and there there is weird twitching between them.

It's like there are invisible keys that the body parts just jump to instead of smoothly animating.
My F-Curves are set to Bezier (even though I tried Linear without any changes) and I used the middle mouse button to go down in the timeline to see if there were any keys I missed.
I used the blender rigify addon for the armature.
Blender 2.91
The Project:

Share your file.  Remove the model first if you prefer. I only need to see the rig. https://blend-exchange.com/

yes please share the file. Keeping the model with it is better too.

Thx, I edited my post

Are you trying to create a walk in place? Or a walk through space?

For now in just place to figure things out.

Okay. I can't find the pole vectors for your leg IKs. I thought I found them at one point, but I was wrong. Without seeing those, I can't figure out if you might have unwanted keyframes on them that are causing the knees to jump.

Note: If you're trying to create a walk in place, you will want the bones that have already been keyframed to have the same positions on the ending keyframe of the cycle as they had on the starting frame of the cycle. Right now, your model ends up farther forward at the end than at the beginning. That causes a lurch backward when the cycle repeats. Copying and pasting keyframes from the beginning of the cycle to the end can fix this. Though it doesn't fix the motion completely in this case because there are still other issues.

@R-800 Note noted :). As stated before it's not how the end product should look like, but thx for the reminder.
As for the pole vectors: Idk where or what they are, sry, noob at work

If you activate foot_ik bone "Toggle Pole" button will be shown in the side bar.

If you activate foot_ik bone "Toggle Pole" button will be shown in the
side bar. - tetii

That was it! After toggling I saw that there was something seriously wrong with my legs. I deleted the key-frames and redid them, now everything works fine.
Thanks.


text:
Can't select some vertices
I've tried to make a model according to the lesson https://www.youtube.com/watch?v=EztmPOhnWwA. After applying the subdivision surface modifier, I faced an issue when one of the "tongues" displayed incorrectly. I suspected that the problem might be caused by duplicated vertices but "Merge -> By distance" didn't help. Then, I've turned on displaying of normals for vertices, and deleted a part of the "tongue's" vertices. After I did it, three normals appeared in a place that was empty (it seems the "tongue" was in this place until I moved it). The vertices which the normals may belong to are not visible. When I'm trying to select them with the box selection tool in wireframe mode, and delete, nothing happens. When I select all the vertices with hotkey "A" and delete them, these three normals remained on the scene while the other vertices were deleted. I suspect that it might be a bug in Blender but since I'm a novice, I'm not sure. I filmed a video with the issue demonstration: https://youtu.be/5QpX0yr1_OY. Blender version - 2.92.0. If someone is interested, link to the .blend file: https://drive.google.com/file/d/12sMXc79xpEDRgyUej0e3-2WO93rTlFcx/view?usp=sharing

Okay I opened your file and I found the best to fix it was to select all of the vertices, press P to separate them - this will then reveal the object/vertices that you can't otherwise see. I made a quick demonstration of what I mean.
https://gyazo.com/f73e369d90b913f9c0df09c04409f39d

Thank you, you helped me out! I wonder why did it happen at all and why those vertices weren't accessible in the regular way. Any ideas?

It looks like you accidentally hid those faces/vertices.. If you open that model again, go into 'Edit Mode' then press 'ALT+H' you'll see that those vertices/faces were, maybe by mistake, hidden. 'H' hides anything that you have selected. and 'ALT+H' unhides them. If you selected those faces, verts or edges and accidentally pressed 'H' then you probably hid them so they'd remain hidden until you press 'ALT+H' to unhide them.

Thank you! Now, everything became clear to me.

It looks like you accidentally hid those faces/vertices.. If you open that model again, go into 'Edit Mode' then press 'ALT+H' you'll see that those vertices/faces were, maybe by mistake, hidden. 'H' hides anything that you have selected. and 'ALT+H' unhides them. If you selected those faces, verts or edges and accidentally pressed 'H' then you probably hid them so they'd remain hidden until you press 'ALT+H' to unhide them.

authors: Андрій Немченко


text:
Objects in render view are misplaced
The pieces are separated from each other, I use cycles, there is no modifier on them. Origins are in the right position.
In the outliner, the render icon is on. The missing pieces appear under the object. In solid and lookdev mode everything looks fine. In solid mode, I have applied all transform. I did not put any animation on them accidentally. I am using Blender 2.92
Thanks in advance


text:
Modifiers not applied in texture paint mode
I want to paint a texture on an object using another object as a mask. The object to paint has a complex shape, and I want to define the mask using a 3D object and a boolean intersection/difference, so I add the boolean modifier to my paintable object - everything works fine. However, when I switch to Texture Paint mode, the boolean modifier is ignored, and I get to paint on the whole surface of the object.
Basically I'm trying to do what I saw in this video: I know it refers to an older version of Blender (2.7x), but I wonder if it's still possible to do this in 2.83 and higher.
UPDATE
I tried starting from scratch, and the modifier is applied as it should. It seems that the issue has something to do with the object I'm using, but I can share that as is because it is a derived work from a file I don't have the rights to (I'm creating an original skin for a car from a game; the model itself won't be part of my end result).
I'm trying to isolate what particular details of that model cause the misbehaviour, but I still haven't succeeded. For now, another object created from scratch, that has a boolean modifier on it, appears bool-cut in Texture Paint mode and in Object mode (of course not in Edit mode); if I Texture Pain the new object, the car model (that is in Object mode) appears bool-cut; as soon as I switch to Texture Paint with the car as the active object, it appears non cut.

it seems to work fine with 2.9, maybe show some screenshots or even share your file?

Should still work - have you tried using a simple cube to try the scenario out and identify the breakdown in results versus method?

In fact I just tried with a new file, a cube intersecting another cube, and it worked. I'll try to isolate the issue and replicate it with the simplest file possible.

I found the solution. There's a button that enables the Paint Mask mode, which caused the behaviour I was experiencing.
If the button is OFF (as in the picture), the whole mesh (after applying modifiers) can be painted on.
If the button is ON, then face selection masking is enabled, and the selected faces of the mesh (without applying modifiers) can be painted on.


text:
Array along a curve that is made up of loose parts
I want to lay out several pieces of a barrier along a race track, but the barrier must have openings and it is generally made up of multiple non-connected pieces. So I thought of making a Bezier curve in which certain segments are missing, then making a mesh representing a single barrier unit, and finally applying the classic Array-Curve modifier trick.
However, when applying the modifiers, only the length of the first part of the curve is considered. Even if I switch to "Fixed Count" to set the number of items manually, the Curve modifier only considers the first part, then goes on in a straight line.
Do I have a way to keep the Bezier curve intact (a single object with many non-connected parts) and use it as the base of my repeating mesh object?
EDIT
Here is a file that demonstrates the issue:

I'd like "Cube" to follow along "BezierCurve", but only the first part of it is used by both modifiers.

Can use several array modifiers (if I understand well... you should show some screenshots here).

@lemon I have thought of that, but I can't see how I could "select" different parts of the curve as the target of the array modifier: it always sticks to the "first" part, and I can't understand how the selection works. I'll post screenshots later today.

Are you sure that you uploaded the correct file?  The file linked contains neither Cube nor BezierCurve.

@Nathan You're right, thank you, I uploaded the wrong file. It's fixed now.

You can't use multiple, separate curve segments to curve modify an object.  The curve modifier will only use the first curve it finds.  This is just not a technique that works with Blender.
You can create divisions between barriers by giving it both a relative and a constant offset:

If you want regular intervals of undivided, divided, you can have a relative array followed by a relative + constant array:

You could make a boolean cutter, with a curve modifier to follow the same curve, and use it to cut shapes out of your boundary with a boolean modifier:

It wouldn't be impossible to make an array that followed multiple curves-- you'd need to UV offset the arrays, then use the UV as a mask texture for a vertex group edit modifier to divide the array into multiple bits with different vertex group weights, then use those vertex groups to specify which particular curve object to follow for a particular bit of the array.  Not impossible.  It would be complicated and totally impractical though.

So my only option is to create separate curves out of the loose parts, then create multiple duplicates of my base object and assign the array-curve modifiers to each, am I correct?


text:
Project vertices on edges
After intersecting (knife) two surfaces that didn't exactly match, I'm left with a vertical wall where the cut was made (circled in red). What can I do to "remove" the wall? Concretely, I would like the vertices of one "lip", say the upper one, to be projected on the lower lip, so that the vertical faces can be safely removed.
What I tried (and why I'd rather not go that way)
Bridge edge loops: it wouldn't work because the vertices don't match. As you can see, the upper lip has more vertices.
Resizing along edge orientation: I could select a pair of vertices that defines an edge in the lower lip, define a transform orientation, select vertices in the upper lip that are above the edge and resize their transform Z (or another fitting axis) to zero. While it would surely work (I don't need adjacent faces to share every vertex, I think), it would be long and tedious, and error prone too. In this case I have four edges, but what if I had a similar case along 50 edges?

EDIT
Here is a Blender file with a scenario similar to mine.

EDIT 2
To avoid the XY problem, I'd better describe in more detail how I came to the problem. Maybe I can work in a different way.
I have two lines - say they're the border of two converging roads. I wish to join them with a smooth surface (but I want to be able to model it, i.e., it should not be "the mathematically smooth" surface).
My approach was to extrude from those edges, along the edge normal, so to "continue" the road surface, then I would intersect knife them. However, one of the roads is the main one, and its extrusion must have a minimum width. In the screenshot above, the green quads are the road side extrusions, and the one in the lower part of the image is the main one.
Look at the following picture: the highlighted line is the main road border. The z axis is exaggerated.

I extrude the road sides:

Now I need to join the two inner edge loops. What I did above is extruding the secondary one towards the first, then knife it using the main border's extrusion along Z. However, this gave me bad topology. Nxdhin2005's process gives me a good mesh, but it would be hard to match the other border just by adjusting the extruded one.
Maybe I'm overthinking this, and I should just bridge the two edge loops, then add detail on the new faces, maybe by sculpting?

Have you tried merging the vertices

@Nxdhin2005 Sure, but not all the vertices of the upper lip have a matching vertex in the lower lip, and I would like to retain the quad formation if possible.

@Nxdhin2005 No :) But I can share a similar, minimal file. See the edit in the question.

I saw you .blend file.. Your topology of the mesh is pretty screwed up .I guess you have knife projected the edges of the mesh onto the vertical wall .I can assure you that it is not the right way to join two mismatching mesh. You have overlapping edges and the mesh lacks continuity of vertices. I don't even have the slightest idea on how to clean it up. : ( . I hope some other community member can help you :)

@Nxdhin2005 Exactly, I did exactly that, followed by a remove doubles (or knife mode "Merge"). What should I do instead? My goal is to join the two surfaces along a certain vertical line (hence the intersection knife), with one of the two surfaces imposing its profile to the other one. What are other ways to achieve that?

OK I found a solution I started from scratch and modeled the entire thing and finally I got what I desired with a perfect topology .Since i didn't know what I was creating I did something similar to retopologising. Can I still post it as the answer?And it is a lengthy process. Do you mind if I don't explain all the common hotkeys and steps? Still it will be an intermediate level...

@Nxhdin2005 Of course, post it, describe what you did, and thanks a lot! :)

Here we go :
Before anything, I used your .blend file as the reference.
Start off by adding in a plane and add in about 10 loopcuts.
Select the bottom edges and extrude it along the X-axis and select the end edges and use the shear tool to make that slanting edge.Tweak it a little bit(I didnt select the last vertex before extruding, to match your mesh.)

Select any vertex in the subdivide portion of the mesh and Use the proportional editing tool to match the mesh to imperfect one.Do a some tweaking and you'll get this:

Select the edges as shown in this image...

Extrude it downwards and scale in it on the z-axis by S
+Z and 0

Now extrude it on the x-axis again to make the base. Now you have the mesh with perfect topology. However you might have to flip the normals of certain faces with Alt+N >and flip Normals.

Don't delete your previous mesh. Use it as the reference to make this mesh (just like retopologizing)

First of all, thank you for all your work - great explanation! However, this still gives me a step with a vertical wall, which I want to get rid of. Besides, I can't freely place the vertices as you did in picture 2 and 3, because they have to match another existing line. I'll clarify my needs in the question - sorry if I wasn't clear.

You are welcome : ) . I still quite don't understand what you want to merge.I thought wanted to make a similar mesh like that but with a good topology. If you are referring to the plane that we started with as the ' vertical wall ' just select those faces and delete it.

If I delete those faces, I'll be left with the wavy part and the flat part having a matching topology when looked from above, but they're actually discontinuous, and the step would remain. I wish for one of the two parts (say, the flat one) to follow along the other's edge.


text:
Can't edit speed of camera with keyframes
I've got a camera following a path in my animation, tracking an empty in the center of my scene. That all seems to be going well, and I've got keyframes set up for the beginning of the movement to where I want the camera to stop. However, I want the camera to slow down and smoothly come to a stop instead of going the same speed the entire time and stopping abruptly. I've followed a couple of tutorials to get to this point, but for some reason when I try to move the keyframes up and down in graph editor, they snap back to their original position after moving them, and/or there does not appear to be an editable curve. I want to add a keyframe between the beginning and end to make the camera slow down.
This is my second attempt with keyframes in Blender so I'm still super new. I'm sure it's just something I've missed but I've tried a million different things and nothing will make those curves appear. The lines between keyframes just remain straight. Here is my setup for reference:

Currently I have the camera set up to follow the path through an object constraint. I have also tried it by parenting the camera and the bezier curve. Trying to add keyframes with the evaluation times gives me an error (if I hit 'additive' under the modifiers in the graph editor the error goes away but the keyframes are still unmovable).
Thanks in advance.
EDIT: I think the keyframes were snapping back to their position was because I had auto-normalization turned on. However, the lines are still straight and the speed is still consistent. Here's another photo:

I've now animated the offset of the camera and the evaluation time at the same?? I want the camera to slow its speed between the last two keyframes. However, as we can see, even though I can now move the keyframes up and down, the lines between keyframes are straight, not curved like I want?? How do I get a gradual slow and stop?

You have to animate the evaluation time of the curve. It's located in the Curve Properties. You have to remove the generator modifier from the evaluation time in the graph editor before insert keyframes.

If you are ow asking only for curvy curve (interpolation), just press "T" (with cursor in Graph Editor) and select "Bezier" type.

@vklidu that worked, thanks!! If I might ask one more question...it still doesn't seem to be affecting the speed of the camera when I move the keyframes up and down...

Never mind....I just fooled around with it some more and it started working. I don't actually know what was causing the problem but thanks for y'all's help.

@Marten: I  never really get it work, I would suggest look for some Motion Trail addon like https://www.blendernation.com/2020/02/05/blender-add-on-review-motiontrail3d/ I hope blender will have some kind of this tool one day by default. For now under Object Properties you can find "Motion Paths" -function that can help to see objects not only  trajectory, but you can better understand how speed is affected (better than nothing).

There is also free (simpler?) addon from Bart Crouch https://vimeo.com/20659756 Here is working version for 2.8 https://github.com/Ikeiwa/Blender-Motion-Trails/blob/master/animation_motion_trail.py


text:
Posing catches vertices on wrong side of child mesh
I could explain what's wrong, but I think it's better if I show it.

The reason for the problem is the weights in the vertex groups that are messed up.
If you switch to Weight Paint mode and examine the Vertex Group section by hovering the mouse over the list and using the arrow up and down keys to scroll through the list then you will see the problem.

For example, there are bones like Bone.10.R, Bone.11.R, and Bone.15.R that have weights for both arms. This causes the problem. Also, there are vertex groups like Bone.017 that have no corresponding bone and are useless.
To fix the weights, open the drop-down menu of the vertex group list and select Delete All Groups to get rid of all weights. Then switch to Object mode, select the mesh, then the armature, and use Parent To > With Automatic Weights (Ctrl+P) to calculate the weights. The armature must be the active object, highlighted in orange.
I highly recommend giving the bones and objects proper names (F2). Also, consider adding a root bone that is the parent of all other bones. It will help you to move the character properly, especially to move it from the spot.


text:
Array Shrink Wrap Curve
tell me pls best way to make this holes
on grey path  it's like insert then looptools
On yellow path i want to try shrinkWrap and array mod along that curves

OR tell me please how to make this faces with the same size then apply insert and looptools

I guess using a Boolean operation is not desirable because of all the odd triangles it makes?

Select the face and snap the cursor to it (Shift+S-->Cursor to Selected). Then delete the face (press X).

Press Shift+Num 7 to align the view to selected face. In Edit Mode add a plane and align it to view (check the Align to View box in Tool Shelf).

Scale the plane to achieve a desired size of the hole and connect the vertices of your helmet mesh to it. Next delete the newly created face.

Now you've got a regular hole.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

authors: Олежка Куликовский


text:
Blender Paint Texture
Hey, Guys. What i need to know in blender to made texture like that using prefer blender, red area. That game doesn't have normal maps. Fbx-model and Tga-texture

That is default game texture without normal map, i want make textures using blender and make like that relief from p90 mastery marked red. what i need to know in blender. Export tga

What exactly are you asking? How to create bump maps and normal maps?

i just need to know how to create that relief using blender tools that i marked as red, the game doesn't require normal map, only color texture

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Make Tileable 45° Rotated Stripes
I'm trying to get this pattern to repeat seamlessly so I can export it to a game engine. It's not too hard to get it working when the stripes are horizontal or vertical, but I'm struggling with the rotation. the stripes have to be slightly irregular, so they cannot be 100% parallel. I'm just using a mapping node small x, large y scale and rotated around z 315°. Solutions outside of Blender are welcome, too.

EDIT: here is the node setup.

Hi. Could you describe the way strips are randomized/irregular (as I think the solution should depend on that).

I added it via edit.

With Gimp, you can simply use the "Make Tileable" filter. Of course a Blender procedural solution would be better.

Gimp offsets the texture 50% in x and y and blurs/fades the seams. As you can see in my question this wouldn't suffice, because with such thin stripes the fade doesn't work well and also I need the stripes to be consistent, not blurred in the middle.

For a 45° angle that can be done from generated texture coordinates with "X+Y distance" and the euclidian distance from the square center.

The node tree is in two parts:

Top line calculates the main diagonals
Bottom line adds random to it

top line
Add X + Y or 1 - X + Y to invert the direction.
Take the modulo in order to repeat regularly the diagonals.
Plug it back as X to the noise texture.
bottom line
This part is to add random variations along the diagonal.
As we want it to be symetrical, we take the distance from the center.
Then we divide the value so that it as less influence (compared to the main diagonal) for the noise texture.
And plug it as Y input of the noise texture.
noise texture
Use its scale to play on the thickness of the lines (adapt the Y influence scale in consequence).

Absolutely awesome. Thank you for putting so much detail into your answer.


text:
Python Geometry Node Trees
I'm trying to make a script that assigns a custom Geometry Node Tree to a bezier curve.
The node tree contains 3 custom node groups. I have created the groups with code but I can't assign them to the Geometry Node Modifier/Root Tree. I basically want the script to create a bezier curve with the Geometry Nodes already assigned, how can I do that? Thanks!!

Hello ! So you want your script to 1. Create a bezier curve object 2. Assign an existing GN tree to the bezier curve object ?

Yes! My script thud far creates the curve with a GN modifier, creates the custom node groups that will be inside the GN tree, but I can't create the actual node tree that is assigned to the curve..

You need to access the node tree through the geometry nodes modifier.  Here's the start of a script that would allow you to do that:
import bpy
from mathutils import Vector

bpy.ops.curve.primitive_bezier_curve_add()
bpy.ops.object.modifier_add(type='NODES')

curve = bpy.context.active_object

def new_GeometryNodes_group():
    ''' Create a new empty node group that can be used
        in a GeometryNodes modifier.
    '''
    node_group = bpy.data.node_groups.new('GeometryNodes', 'GeometryNodeTree')
    inNode = node_group.nodes.new('NodeGroupInput')
    inNode.outputs.new('NodeSocketGeometry', 'Geometry')
    outNode = node_group.nodes.new('NodeGroupOutput')
    outNode.inputs.new('NodeSocketGeometry', 'Geometry')
    node_group.links.new(inNode.outputs['Geometry'], outNode.inputs['Geometry'])
    inNode.location = Vector((-1.5*inNode.width, 0))
    outNode.location = Vector((1.5*outNode.width, 0))
    return node_group

# In 3.2 Adding the modifier no longer automatically creates a node group.
# This test could be done with versioning, but this approach is more general
# in case a later version of Blender goes back to including a node group.
if curve.modifiers[-1].node_group:
    node_group = curve.modifiers[-1].node_group
else:
    node_group = new_GeometryNodes_group()
    curve.modifiers[-1].node_group = node_group

nodes = node_group.nodes

Update: As per an edit by Gorgious, Blender 3.2 no longer creates a node tree when you add the modifier.  I've updated that edit to handle both older versions of Blender and Blender 3.2
You still have to hook the Geometry output of the Group Input node to your first node and the Geometry output of your last node to the Geometry Input node of the Group Output node. Here's an example with a single node:
group_in = nodes.get('Group Input')
group_out = nodes.get('Group Output')

new_node = nodes.new('GeometryNodeMeshToPoints')

node_group.links.new(group_in.outputs['Geometry'], new_node.inputs['Mesh'])
node_group.links.new(new_node.outputs['Points'], group_out.inputs['Geometry'])

For Blender 3.6
import bpy
from mathutils import Vector

bpy.ops.curve.primitive_bezier_curve_add()
bpy.ops.object.modifier_add(type='NODES')

curve = bpy.context.active_object

def new_GeometryNodes_group():
    ''' Create a new empty node group that can be used
        in a GeometryNodes modifier.
    '''
    node_group = bpy.data.node_groups.new('GeometryNodes', 'GeometryNodeTree')
    inNode = node_group.nodes.new('NodeGroupInput')
    node_group.outputs.new('NodeSocketGeometry', 'Geometry')
    outNode = node_group.nodes.new('NodeGroupOutput')
    node_group.inputs.new('NodeSocketGeometry', 'Geometry')
    node_group.links.new(inNode.outputs['Geometry'], outNode.inputs['Geometry'])
    inNode.location = Vector((-1.5*inNode.width, 0))
    outNode.location = Vector((1.5*outNode.width, 0))
    return node_group

# In 3.2 Adding the modifier no longer automatically creates a node group.
# This test could be done with versioning, but this approach is more general
# in case a later version of Blender goes back to including a node group.
if curve.modifiers[-1].node_group:
    node_group = curve.modifiers[-1].node_group
else:
    node_group = new_GeometryNodes_group()
    curve.modifiers[-1].node_group = node_group

nodes = node_group.nodes

A list of node sockets can be added with reference to this document.
https://docs.blender.org/api/current/bpy.types.NodeSocketStandard.html

Thanks! That was it!

@gorgious thanks for the edit.  I modified it so that it doesn't create an extra node tree in versions of blender prior to 3.2  As a bonus I threw in a function to create the node group.

Hello ! This setup throws on V3.4 a RuntimeError: Error: Cannot add socket to built-in node on this line inNode.outputs.new("NodeSocketGeometry", "Geometry") would you happen to know a solution ? I'm resorting to creating a temporary join geometry node to link the input and output, then deleting it but I don't like it :)

In 3.5 using node_group.outputs.new('NodeSocketGeometry', 'Geometry') instead of inNode.outputs.new('NodeSocketGeometry', 'Geometry') appears to fix that issue. Same case for inNode.inputs.

In case someone reached here when trying to create a new socket in Group Input/Output, this answer was helpful for me since I was creating the new socket in the Group Input node and called new directly from that node, while I should have been calling it from the node_group.inputs, e.g. bpy.context.active_object.modifiers['GeometryNodes'].node_group.inputs.new('NodeSocketMaterial', 'Material')

Blender 4.0
inputs and outputs has been replaced by this:
node_group.interface.new_socket(name="Geometry", in_out="INPUT", socket_type="NodeSocketGeometry")
in_out= can be "INPUT" or "OUTPUT"
Changelog:
https://docs.blender.org/api/4.0/change_log.html#bpy-types-nodetree
Full script:
import bpy
from mathutils import Vector

bpy.ops.curve.primitive_bezier_curve_add()
bpy.ops.object.modifier_add(type='NODES')

curve = bpy.context.active_object

def new_GeometryNodes_group():
    ''' Create a new empty node group that can be used
        in a GeometryNodes modifier.
    '''
    node_group = bpy.data.node_groups.new('GeometryNodes', 'GeometryNodeTree')
    inNode = node_group.nodes.new('NodeGroupInput')
    node_group.outputs.new('NodeSocketGeometry', 'Geometry')
    # NEW IN BLENDER > 4.0 -> creates a Group Input Socket
    node_group.interface.new_socket(name="Geometry", in_out="INPUT", socket_type="NodeSocketGeometry")
    outNode = node_group.nodes.new('NodeGroupOutput')
    # NEW IN BLENDER > 4.0 -> creates a Group Ouput Socket
    node_group.interface.new_socket(name="Geometry", in_out="OUTPUT", socket_type="NodeSocketGeometry")
    node_group.links.new(inNode.outputs['Geometry'], outNode.inputs['Geometry'])
    inNode.location = Vector((-1.5*inNode.width, 0))
    outNode.location = Vector((1.5*outNode.width, 0))
    return node_group

# In 3.2 Adding the modifier no longer automatically creates a node group.
# This test could be done with versioning, but this approach is more general
# in case a later version of Blender goes back to including a node group.
if curve.modifiers[-1].node_group:
    node_group = curve.modifiers[-1].node_group
else:
    node_group = new_GeometryNodes_group()
    curve.modifiers[-1].node_group = node_group

nodes = node_group.nodes

thanks, that helped a lot!

In Blender 4.1, the following script will produce the following screenshot:
import bpy
from mathutils import Vector

bpy.ops.object.select_all(action='DESELECT')
bpy.ops.curve.primitive_bezier_curve_add(radius=2)
bezier_curve = bpy.context.active_object
bezier_curve.name = 'MyBezierCurve'

geo_nodes = bezier_curve.modifiers.new(name='GeometryNodes', type='NODES')
node_group = bpy.data.node_groups.new('GeometryNodes', 'GeometryNodeTree')
geo_nodes.node_group = node_group

inNode = node_group.nodes.new('NodeGroupInput')
outNode = node_group.nodes.new('NodeGroupOutput')
transformNode = node_group.nodes.new('GeometryNodeTransform')

node_group.interface.new_socket(name="Geometry", in_out="INPUT", socket_type="NodeSocketGeometry")
node_group.interface.new_socket(name="Geometry", in_out="OUTPUT", socket_type="NodeSocketGeometry")

node_group.links.new(inNode.outputs['Geometry'], transformNode.inputs['Geometry'])
node_group.links.new(transformNode.outputs['Geometry'], outNode.inputs['Geometry'])

inNode.location = Vector((-3 * inNode.width, 0))
transformNode.location = Vector((0, 0))
outNode.location = Vector((3 * outNode.width, 0))

transformNode.inputs['Translation'].default_value = (0, 2, 2)

bpy.context.view_layer.update()

You don't have to use Vector just like you don't use it on line 27 (second last line). Welcome to BSE!

Good point and thanks for the welcome! :)


text:
I was learning how to rig and now I can't figure out why the eyes are not moving with the body nor the rig
I can't figure out why the eyes are not moving with the body nor the rig, I checked if the eyes are parented with the body and it seems they are. I'm new to blender

Add An Eye Rig To Your Meta Rig

please provide blend file

The eyes must be parented to the armature, then you need to assign their weights to the head bone, a vertex group that has the same name as the head bone.

@Blunder , i have tried to do that but i can't select the eyes, i can't find them, when clicking on them it selects the body instead

The problem is that the eyes of your model are a separate (loose) mesh in the bunny object. You need to fix the weights manually because the Parent To > With Automatic Weights operation doesn't work well when the mesh object has loose parts such as eyebrows and eyes.
And if there are intersecting faces within the same mesh or duplicated vertices then it does not work at all. See Heat weighting failed to find solution for one or more bones for details.

check your mesh for duplicated vertices and if the face orientation is correct.
to control the eyebrows and eyes you can add a few more bones. Two for each eyebrow and one bone in the center of each eyeball pointing in the direction of view.
check your bone hierarchy. It looks like the first ear bones are not children of the head bone. Parent them to the head bone with Keep Offset.
parent the mesh to the armature with automatic weights. Make sure there is no error in the status bar popping up.
time to fix the weights. Repeat the steps for the eyes and the eyebrows:

Select the bunny mesh, go to Edit mode, deselect everything (Alt+A)
then hover the mouse over the eye and select the mesh with L. Then go to the Vertex Group list. Use the drop-down arrow and select Remove From All Groups. The mesh is no longer connected to any bone.
Look for the correct vertex group in the list and press the Assign button to assign the selected mesh to the vertex group of the eye bone.

In the Edit mode you can activate the Vertex Group Weights overlay to see the weights. Or switch to the Weight Paint mode. Here you need to paint the weights. Make sure you select the correct vertex group.

omg thank you so much! it helped me understand, and your animation of my bunny is really cute :) again, really gratefull


text:
How to render exact colors?
I can't find the way to have in the video (simple animation with Flat colors) exact HEX colors that I set in materials.
I set :

Blender > Render Properties > Color management > View Transform : Standard.
Light : Sun

My file is here, if you have any idea :

Thanks !

https://docs.blender.org/manual/en/latest/render/color_management.html#settings These are the options

Your web site wasn't serving blend files properly, so I used the rmb and select "Save link as" to copy it to my computer and then to blend-exchange.  In the future, you might prefer using blend-exchange ((How to add a blend file) as that's the most approachable place to store files.

Use Emission nodes for the Principled BSDFs. For some reason, the result still has tiny color variations (dither). You can see it in Gimp when you adjust the color curves or check the histogram. The hex codes of the picked colors reveals it, too: F95278 <-> F85177 or F9D81A <-> F9D81B. This is not visible to the naked eye.

Have you tried using an emission shader already? Otherwise please elaborate on your goal.


text:
How do I insert keyframe to match my physics simulation?
I am trying to learn python for blender and a good place to start would be by creating a physics engine.
I made a function that uses F = ma to calculate the position and velocity of an object using the mass, force, initial position and initial velocity.
import bpy

mass = 1.0
substeps = 5
initial_velocity = [0.0, 0.0, 0.0]

timestep = 1/(bpy.data.scenes["Scene"].render.fps * substeps)

def simulate(force = [0.0, 0.0, 0.0], position = [0.0, 0.0, 0.0], velocity = [0.0, 0.0, 0.0]):
    x = position[0]
    y = position[1]
    z = position[2]
    vx = velocity[0]
    vy = velocity[1]
    vz = velocity[2]
    acceleration = [force[0]/mass, force[1]/mass, force[2]/mass]
    for j in range(substeps):
        vx += acceleration[0] * timestep
        vy += acceleration[1] * timestep
        vz += acceleration[2] * timestep
        x += vx * timestep
        y += vy * timestep
        z += vz * timestep
    return [[x, y, z], [vx, vy, vz]]

current_speed = initial_velocity

for bpy.data.scenes["Scene"].frame_current in range(10,240):
    simulation_data = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
    simulation_data = simulate([(bpy.data.scenes["Scene"].gravity[0] * mass), (bpy.data.scenes["Scene"].gravity[1] * mass), (bpy.data.scenes["Scene"].gravity[2] * mass)] , bpy.data.objects["Sphere"].location, current_speed)
    bpy.data.objects["Sphere"].location = simulation_data[0]
    bpy.ops.anim.keyframe_insert_menu(type='Location')
    current_speed = simulation_data[1]

I have added unnecessary variables for better understanding, I will remove them.
Running this script makes the ball nudge a bit but it does not move over different frames.

Two dupes show two options either use scene.frame_set(frame) to set the frame, or ob.keyframe_insert(data_path, frame=frame) to insert a kf on frame. Btw with vectors can F = mass * scene.gravity rather than splitting into components

That was a big help. Thank you sir


text:
Need help to make rig for rotating object to pull second object in a straight line?
Can anyone help me to make this simple rig?
I have tried so many IK but still no good

is it what you want to do? https://zupimages.net/up/21/51/n4yf.gif ... in that case you can use the Damped Track constraint

absolutely yes! so damped track is to choose, right? i will try this now

anyway, can you share the blend file of that sample please? hehe

ah, ignore my comment above. i already got it. thanks alot

Hello and welcome. Please use a title that reflects the content of the question. It should be succinct, unique and identifying, and summarize what the issue is so that users can at a glance broadly understand what your post is about before opening it. Use the [edit] link below your post and avoid any emojis salutations or extraneous text not essential to the question. Remember, your title is the first thing potential visitors will see, and will weight heavily on their decision to open your question, which will directly affect the number of answers you might get.

@ApasipepOyong: please click on "accept answer" so other users although know that the answer helped you. thanks.

You can do it with the Damped Track constraint:

Just for the fun of it, I decided to do this with a driver, instead of the much easier Damped Track:

The Z rotation of the first bone is used to drive the Z location of the second bone.  Here's the driver for the second bone:

There's no reason to prefer the Damped Track or the driver over the other in general, but sometimes other constraints will prevent you from selecting one, so it's good to know the other is available.


text:
Blender Glitching Text and mesh
I am trying to render an animation of my graduation project in Blender.
https://www.youtube.com/watch?v=mTeM0ja2mDc&ab_channel=MusicWithFreak
I have a problem which is glitching my texts and some of my mesh objects. At the very start of the video you can see that my mesh is "glitching black color" and after that when the camera is close to the pool, you can see glitching the fence as well. Texts "HFMN Industries" and "Fashion Icon" which you can see in the video at 0:50 and 1:21 are glitching and jumping like crazy. Project is bein rendered in EEVEE, 1920x1080 200% (100% do nothing) and 128 Render Sample (already lowered from 512).
Ambient Oclusion, Bloom, Screen Space Reflections, Motion Blur and Volumetric Lighting are turned on. My shadows are set to 1024px Cube Size and 1024px Cascade size - High Bit Depth is on and Soft shadows are off.
I really need your help guys, thank you for any ideas.
EDIT:
Examples of Glitching:
In my animation some of my meshes are constantly blinking and glitching from this:

To this:

Same thing happens with some of my text objects. It looks like they are changing font or something.
As you can see both names of the buildings change from this:

To this:

Oh, very good. I cannot tell the difference with the first two screenshots, but the second two screenshots are very clear. Why it is switching arbitrarily to blender’s internal font, I don’t know.

In those first 2 pictures is orangle light which is pointing the light on the cube. Under this cube is another cube which is glitching like crazy from black back to my material.

What GPU are you using, and does any of this happen in the viewport?

My main GPU is RTX 2060, tried also with GTX1050Ti with the same effect. It is not happening in my viewport. I was thinking of converting these two text objects into individual meshes?

Umm, maybe. I would file a bug report since this is not supposed to happen.

I am gonna try converting it into meshes and we will see. I will stay in touch. Thank you for now. I really appreciate your time and effort.

Tried converting it into mesh with no result. So I tried to delete the text and create it again but still with that glitching error. I am starting to think maybe the font I am using is broken?

After you converted to mesh, is it in the correct font all the time, some of the time, or none of the time?

It is still blinking as before, nothing has changed

Ok that is really weird. Are you rendering to frames or video? Is this going through the Blender Sequencer?

Weird as hell, standard animation is being rendered, it is not going through sequencer.


text:
Character Modeling problems- frankensteining meshes and retopo
My first question on the forum.
I chose a historical person that I wanted to model.
I am an intermediate user, but I still have  trouble with modeling the human body accurately, so I am not opposed to using add-ons if they can help me save time.
I am satisfied with where I am with the head as it is really beginning to look like the person. Now I am at the point where I start to create the body, clothes and hair.  It is easy enough to grab a body mesh from another add on, but the geometry won't match the head.  If I go this route, I have to bridge two meshes that don't match precisely.
(I have a texture working for the head as well, if I bridge these, it is going to be a task getting a new texture to match.)
I am including a screen shot of the problem. I really don't know where to start.
What advice do you have?

there are tricks to reduce the topology but maybe you should first tty to work with less faces, are you sure you need so many?

You are right, it is quite a lot, but then it is also accurate to the face I want to model.  There might be a way to bake the extra detail in after, I suppose.

yes, this is probably a good idea to keep this version and to lower down the topology on a new version

So,  I have a full body model with simpler topology (not shown here) but the face isn't exactly what I want.   I also have this face and head that is almost perfect with no body.   What I would hope is not to start from scratch, of course, and I don't know how to combine the two models  if they aren't almost alike.

have you tried to simplified the current head? Delete one edge out of 2, or maybe try Ctrl E > Un-Subdivide but it may give bad result

The Un-Subdivide has produced a promising result.  I will see what I can do with the simplified mesh.

1.I used unsubdivide
2.I enabled statistics, and then I saw that the body had 42 vertices on the neck and the head had 46 vertices.
3 I chose adding vertices body because I thought deleting edge loops on the head might just get rid of some details I liked.
4.I prepared the body loops by adding edge loops with the mirror modifier on.

Bridge edge loops worked.


text:
How do you align modular instances so they face outward using geometry nodes?
I am trying to align a number of instanced cubes around the perimeter of a grid, and all the cubes should be rotated so they instance facing outward and upward.
It is not a perfect grid, the intention is that some of the squares can be deleted in the top view to create different shapes.
The cubes are intended to have a blue upward side (Z) and a green outward side.(Y)
The way the perimeter is created is by duplicating the edges and then making a curve.  Then a wall is created that can provide normals for positioning.
As you can see, some of the squares are facing the right direction, but not all of them.
The cubes will eventually be replaced of course.

This illustrates  it may not be possible with only one cube instance, it may require 'corner cubes' or at least a corner rule.  Here is what I am trying to accomplish.

Blender 4.0 file:

Some examples of other questions that relate to it:
How to select the outer edges of a plane in Geometry Nodes?
Geometry nodes - Align Instance object to face orientation, rotate normal to longest edge
Geometry Nodes: rotational alignment of objects with reference to other object
The ways to attach object to other object in certain places
The question that started this:
How to make instances around the grid?

your question is not totally clear to me: how should that two cubes be rotated who are on the diagonal? [1]: https://i.sstatic.net/JSmwo.png

@Chris, I see your point, there is no way of doing what I intended unless there is a corner piece in the collection with two green sides.

The best that can be done is if the green and the red sides of the object are always on the outside, even with a corner.  The blank or white sides would always face the inside or bottom of the object.

I was able to produce a limited success with most of the geo nodes I worked on from this question.
The proviso was that a) the corner squares can have two instances on them.  This means the instances aren't exactly the same size as the grid squares.   b)when editing the base plane, any changes made are extruded edges rather than deletions of squares.
I'd still be open to a better solution.


text:
How to copy mesh to new files with Python?
I have a blend file with hundreds of mesh objects as part of a kit bash pack.
I want to copy each mesh to its own file and turn those files into KPacks for Kit Ops addon.
To export each mesh into a new file I tried to use this code:
import bpy

base_path = "c:\\temp\\"

for idx, obj in enumerate(bpy.data.objects):
    bpy.data.libraries.write(f'{base_path}obj_{idx}.blend', {obj}, fake_user=True)

The problem is that in the files created by the script, only the data blocks are copied, there are no meshes created.
How can I copy each mesh to a new file? It would be very tedious to do that manually for hundreds of files.

Could simply libraries.write(fp, use_fake_user=True) to stop orphans. Seems over kill to add a  collection for a one object file.  If using collections would add multiple objects to collection then write collection to lib.

@batFINGER You're right, that does stop the data from being orphaned. I was mistaken though, I don't need to copy just the data, but actual mesh. I need to have the objects visible and editable. Seems that just copying the data block is not enough, I have to find a way to copy the entire mesh to a new file. I updated my question to reflect this.

Can't find the link, sure this has been asked before. Will notice on opening a library file that there is no scene.  In later versions a dummy scene is created, to which it is simply a matter of linking objects, or using script as answered below.

Found how to do it. The code I had was half the solution.
After creating a new file, executing the following script adds the mesh to a collection in the scene as I needed. It assumes there's no collection and only one data block in the blend file.
add_object.py
import bpy

collection = bpy.data.collections.new("Collection 1")
bpy.context.scene.collection.children.link(collection)
collection.objects.link(bpy.data.objects[0])
bpy.ops.wm.save_as_mainfile(filepath=bpy.data.filepath)

To execute the script, I executed this in a loop:
blender.exe  <path_to_new_blend_file> --background --python add_object.py


text:
Clone brush is cloning from material colour, not texture?
I've pressed ctrl+lmb to pick the part of my texture I want to clone from, but it isn't cloning the texture, it's cloning my material diffuse colour. (I've purposely turned my diffuse colour red to be sure). Anybody know how to get it to clone from my texture? I'm in multi texture at mo but it doesn't work in glsl either. Thanks.

images of my texture tab, and the results of the clone brush in both glsl and multi texture mode. If you need to see any particular tabs within the texture tab let me know. Thank you.

Can you upload a Texture tab in the Properties Panel, the one after Materials tab

Thanks for looking @IgorTatarnikov. I think I've done what you asked.

I know some great tutorials  https://m.youtube.com/watch?v=yDGZZYRsyCk.             https://m.youtube.com/watch?v=uxD0qaTFZnk

I've not been able to figure out what's happened here, but I've managed to get the clone brush working by appending my model into a brand new file with factory settings. The clone brush is now acting like a clone brush!


text:
Using Lattices to create non-spherical eyes cause problems when rigging the eyes for tracking. What can I do to fix it?
https://www.youtube.com/watch?v=SBs8rjlUbwI
This video basically goes over how I've rigged this model's eyes. It goes over the constraints used, and how things are parented. The problem I am having isn't apparent until I rotate the head. When I rotate the head, the eyes start to not properly track to the eye controllers I have set up. Obviously, the way I have the eyes rigged with the lattices are part of the problem, but I haven't figured out a proper solution yet.
Here's the .blend file plus the eye texture if anyone wants to have a closer look at the rig.
https://www.dropbox.com/s/jknki5xbbuf7l1x/eevee.zip?dl=0
EDIT:
Animating UVs won't be an ideal solution. I'll eventually be adding geometric detail to the eyes, which wouldn't be able to animate with the UVs.

I would use an UV Warp modifier to offset the texture of eyes. Then you don't need such complicated setup. The modifier could be constrained only on eye vertices with vertex map. You can use some global bone position offset as source for the modifier transformation or transform the head and target relation from local to global coords and use that as a source (with copy rotation on some other pair of bones which tips you would track). This will work with everything, even with softbody sims or complicated spline IKs.

I made this work using an eye-bone and a bone track-to constraint.
https://dl.dropboxusercontent.com/u/428467/eye-lattice-rig.blend
Use an eye-bone at the center of your eye, parented to the head bone, pointing out the eye. Add a bone constraint for the eye-bone to track your eye-target. Test that the eye-bone properly tracks your target as the head moves.
Parent your lattice to the head bone (you might need to manually create a lattice vertex group with the same name as the head bone). Test that the lattice moves with the head bone.
Select your eyeball, and add a copy-rotation constraint copying the rotation of your eye-bone. It should be local space to local space.
If your eye doesn't line up afterwords, go into edit mode on it and rotate it to line up. (if you have an object scale on your lattice, edit-mode rotating your eye will cause it to wobble out of the lattice. I don't scale my lattice, I edit it's shape in a shape key.)
The copy-rotation is local-to-local because the rig is rotating both your bone and your eye-lattice. As the eye-bone tracks the target, you want to copy it's local space rotation to the local space rotation of your eyeball.
One consequence of using a lattice to flatten an eye-sphere, is that as the eye-bone tracks the target further off-center, and the eye copies it's rotation, the eye itself will appear to be looking a bit further than the bone is pointing. This is a consequence of the deformation. If you center your head and turn off the lattice deformer (edit mode your eye-sphere), you'll see that the un-deformed eye is pointed the same place as the eye bone. If it is important to compensate for this, you can use a driver equation instead of a copy-rotation constraint to set the eyeball rotation. This will give you a coefficient to tweak the relative rotations.


text:
Normal map looking weird on mesh
I've been studying more and more about creating normal maps and texturing the mesh.
However, I can' t really find a solution for my question in the Internet and I was wondering maybe you could help.
Here's the problem. I baked the normal map for the mesh by creating a duplicate of the mesh and making some details on the duplicated mesh with multires modifier. However, the normal map creates really weird shapes on my mesh.
I was wondering and read that the problem can be caused when I have small amount of seams when creating UV map.
Also, there are some really weird holes in my UV map, might it be caused due to fact that the meshes aren' t at the same exact place?
Here' s a pic for illustrating my problem:

Here's a little bit better picture of the problematic place of my mesh + additional view of my material nodes.

The problem is somehow associated with the neck of this humanoid. I made a duplicate of the face and just raised the level of the multires modifier. Whenever I raise the level of multires subdivisions, it will look like this. When I remove the modifier, it won' t affect the mesh.

Could you post a zoomed version of the normal map showing the interested area? And your material's node setup too?

Ye sure. In addition, I have some more questions about the smooth vs flat shading when baking normal maps.
Is it really so, when you bake normal map with flat shading, you need have higher polycount so it wouldn' t look ugly?
With smooth shading however, it just looks a bit ugly, I want my mesh to have sharp wrinkles for example.

I think that it's very strong, so try to decrease the value in the node "Normal Map", try to reverse it, too.

The normals are not correctly projected from high to low. Probably the cage you are using is not good enough, but without seeing it I cannot say more. Consider to upload your blendfile on http://blend-exchange.giantcowfilms.com/. (Bounus advice: plug the normal map output in the shader's normal imput. It's not related with the normal baking proces but it will give better shading results when you'll fix the normal map.)

The problem with adding it to blend-exchange is that the file itself is too damn large. it's approximaely 70 MB's... How do I adjust my file size (I have the whole body with modifiers applied - there are clothes, boots, leggings, hands, head, headwear). You are allowed to facepalm on my situation :D

Facepalm DONE! :) . Well, you could try to upload a file with just what is needed to solve the situation. I would say they are the lowpoly face, the highpoly face, the cage and nothing more. I would make a copy of the file and just erase the unnecessary geometry and all the eventually packed textures.

Here' s the .blend file:  http://www.pasteall.org/blend/38030
Finally managed to change its' size.

I hope this file shows my problem. There's no cage object there though.

In the first screenshot, bottom right corner, I see you where using a cage, that's why I excpected it. You also have an high poly (made with multires) and a lowpoly, but there is no difference between the two object. What are you trying to bake? And how? Where are the wrinkles of the first picture coming from?

I was trying to bake wrinkles in normal map, but it didn' t end up right. So I deleted it... my bad, that I didn' t tell it at first. I deleted the sculpted wrinkles high poly mesh so I could see where comes the problem. It seemed that there is no difference whether I had high poly sculpted mesh or high poly face without sculpted mesh. Either way it had holes in it.
One of my friends said, it might be due to a fact that the low poly mesh is under high poly mesh. Might the problem be caused by that?

I was struggling days to find out what caused the problem with baking normal maps and think I found a nice solution. I could have used much easier way to bake normal maps for my mesh.
To bake normal map for my mesh, I needed to do the following:

Have only one mesh for baking normal map
Use multires modifier on that object
Raise the levels of subdivisions as high as I need to have nice details
Once I've created details in sculpt mode, go to Cycles Render Engine
Go to "Render" tab and open "Bake" option
Make sure that "Selected to Active" is disabled (becaused baking normal maps with this option is based on other method)
Change "Bake Type" to "Normal"
Hit the "Bake" button and be happy to have good normal map.

This way of baking normal maps for mesh is usually used when your mesh has fine topology (the mesh consists of square-shaped faces and not triangles), because multires modifier will subdivide all faces and mesh that consists of triangles, will deform the mesh alot. However, it's easier to subdivide squares and it doesn't cause any problems this way.

I'd say you should have added for clarity that if baking normal maps from Multiresolution modifier  then: 1) you set its Preview option to something lower 2) work with only one mesh (as opposed to baking from high poly to low poly method).

Yes. I feel I should have done that. Next time I am smarter then :)
Thanks.


text:
Pose mirroring being glitchy
I'm learning to animate a creature I recently created and I need your help. I know that it's possible to mirror poses by naming the bones of the armature correctly using the following naming system: example.L and example.R
I've named my bones so the mirror pose action would work properly. The body of the creature is also done by using the mirror modifier (so it should be symmetrical along the y-axis). In addition, the weight paint of the bones is also mirrored. Here's also a picture of my named bones - right leg in green and left leg in purple:

Here's also a mirror animation I've been trying to do.. Purple bones show the mirror effect..
The left leg is 30 frames behind the right leg so one leg is on the floor at a time.

EDIT: Added one more problem associated with the glitchy pose mirroring.
I have an IK target that somehow won't mirror the Y-axis location. I don' t understand what may cause it. There's no lock icon next to the y-axis location parameter which is strange. Here's a picture to visualize the problem:

Here's a picture of a graph - the green line shows the y-axis location frame by frame. It shouldn't be constantly linear as you can see the movement of the other leg.

The leg animation.

Can you explain how you mirrored the pose? What were the steps you took?

I selected the right leg, pressed the copy pose button (or used CTRL + C keyboard shortcut), moved 30 frames ahead (because the left leg should have the same pose after 30 frames) and pressed the mirror pose button (or used CTRL + SHIFT + V keyboard shortcut).

It should have worked. Try recalculating the bone roll for the top purple bone and the one below it.

I'm sorry, but what do you mean by recalculating the bone roll?
Do you mean I should clear the pose? If so, then I've done this about three times already and tried to mirror the poses again, but apparently it doesn' t solve the problem..

Could the problem be somehow associated with the fact that I haven' t applied rotation nor position for my model nor the armature?

Select your bones, go into the Pose menu, and you'll see an option for recalculating the bone roll. I can see that the top two bones are out of line by the way they twist. That's sometimes caused by a misplaced bone roll. You can see what the bone roll value is in the properties panel of the 3d viewer when the bone is selected. You can also change it from there. Make sure the bone rolls are mirrored values of the other leg.I.e. if the good leg bone is at -45 degreees, try changing the other leg bone to 45 degrees.

Thanks. It partly solved my problem. The upper part of the leg won't twist anymore. But there's another problem I didn' t mention earlier. I edited my question to show the problem (can add some pictures there)

I don't know what the problem is. I would post it as a new question to get better help.

Okay. I'll do it :)
Thanks for helping me out with the bone roll problem though :)


text:
How to make all quads or ngons on your mesh planar (2d)?
I want the quads in my mesh to be planar, or flat, that is, the 4 points of the quad could all be on the same plane. Or in other words, they need only x and y values to describe their "local" position.
Difficult part is if you do it to one face, the vertices shared by neighbouring faces get transformed which makes them non-planar...
Doing Mesh-> Cleanup-> Make Planar Faces on all faces doesn't work right.
Every time you apply it the mesh visibly changes. If it worked the first time it wouldn't change more than once. Besides, the non-planar quads are visible to the eye.
Reason: modelling a low polygon mesh to be converted to individual flat faces in a program called Pepakura and make into a real life sculpture from flat MDF pieces.
Each quad has to be planar ("flat") so I can build this from flat MDF pieces.
Obviously the overall shape of the mesh will change, but not much.

I think the term you are looking for is Planar.

The script in the linked topic might be useful for papercraft, not wood or similar material, because you can fold paper, but for wood each face has to be separate. Also, with a program like Pepakura you can move around those separated faces to use your sheet of whatever material you use more economically.

Share the model to encourage us to look at automated approaches.

Link to the blend file added.

Are ngons in the final result ok?

You mean planar ngons? Sure. No problem in papercraft or similar.

Do you have skype or something? Before I write a new answer, can I show you?

Nevermind, I'll write my new answer.

OK, no problem.

I just wanted to comment that all answers are great ones and recommend anyone interested in this to read all of them as each has something unique to teach.  That said please give me some time to decide which one to accept and which one to give the bounty. Again, all contain valuable information.

This is a completely different method. It is more manual work but will give you 100% planar ngons.
In short: split all your faces. Scale each of them along their normal to 0. This will make them planar. Join them back again using booleans.
Split your mesh: Go into edit mode. Go to mesh select mode faces. Select all faces, press spacebar and type "edge split". Now you should be able to move one face without it dragging the others with it.

Set your Transform orientation to "Normal". Scale it along it's normal to 0:
hit Szz0Enter. Scale it up five times or so: hit S5Enter.

Extrude it some: hit e5Enter. Recalculate normals: hit Ctrl+N. Split this box into a new object: hit P and select "Selection".

Do the same for another face but extrude it the other way.

Subtract the second from the first:

You can also use intersection:

Continue with more faces:

By now, the central crossing of these four faces have produced two vertices. If you don't want this. Slide one of them into the other.
You probably want to use the mirror modifier to reduce the work by half.

Genius. I think Blender devs could make this into an automated script/part of Blender if they found this.

Thanks. :-) You can experiment with scaling them along normal Z all at once if you use Pivot center around "Individual origins". It could make reduce the workload.

Come to think of it I think this is what Jerryno meant when he said he could write a script for making faces planar. I'll wait and see if he replies to my comment or does that.

@LeoErvin Yes this is it but just manual method. It's the chiseling from solid by planes from face normals. Didn't had much time last 2 days but it will be weekend so I'll look into it again.

First thing first: How to check for non planar faces and amount of their distortion:

Second thing: How to make them planar?
There is no way to make them all planar without changing overall shape of the mesh a lot or the topology. Here is why:
To make faces planar, we need to move the vertices. So for each vertex we will see all the faces around it, get their normals, from each of these normals construct a plane and where those planes intersect store a new vertex. From all these new vertices then make a new mesh with the same topology and switch it for the old one. Very simple, but it has one catch: when a vertex has more than 3 surrounding faces, their planar intersection does not necessarily exist - it would be actually very rate if it did:

To meet them at single point, some plane translation is inevitable and depending on the angles this translation can be huge and ruin the shape of object.
So to create mesh from these intersecting planes (made from normals of faces) one would have to create a different mesh with a totally new topology, different vertex count (depending on the mesh shape) by basically chiseling a solid with these planes (would you accept this solution?).
The other solution is not exact and is an iterative approach to a solution. This solution Blender offers under Mesh > Cleanup > Make Planar Faces. We call these iterative methods to a solution Numerical methods. Each numeric method (which is an algorithm) has it's stability. Making faces planar is in general a very unstable algorithm. You may find your mesh oscillating between different shapes never closing on a solution or vertices getting very far from their original location sliding away to infinity - also never closing on a solution. What will happen depends on the mesh shape and you may actually find meshes that this approach solves and converges to a single solution.
But usually it's best to apply this operator not on the entire mesh, but only to selected parts that you know will solve. That's also why the operator has limited iterations to 200 - if it does not converge in that many steps it's very unlikely it will converge in more.
So to make a mesh from planar faces one must start from the beginning:

Use the Bisect tool to make planar cuts.
Use the F2 Addon to make planar faces:

Rotate faces around edges to keep them planar: What's the easiest way to rotate around an edge that is not parallel to a primary axis?
Slide vertices on edges Shift V to maintain planar face (C to extend outside face)

I appreciate the explanation of how to create a mesh planar and the explanation of why its best to do so from the beginning, but would you please add to the answer how to make all faces of a mesh planar, even if it will change the shape "a lot"? Because the latter is subjective as well as depends on the individual model.

@LeoErvin "A lot" means the model is not guaranteed to look the same after the process. The only process that would work is that chiseling from a solid. Is this something you want? If yes I can make a script to do that.

It's not a problem if it looks different for me, and I believe for most papercraft models. Papercraft models are already very lowpoly and not very accurate/precise by nature. But I don't think I undertsand what you mean by "chiseling from a solid", sorry. I've uploaded my model if that helps explain what you mean by that differently. Thank you for offering to write a script.

Jerryno, please make the script when you get the time.

@LeoErvin I did code for couple hours through weekend but it's not finished yet. There are couple difficulties yet to overcome: solving edges that have only one face (= open ends of mesh) and solving cavities in the mesh. I am not sure it will give better results than manual method of Leon Chung on open mesh, but for closed meshes it should be the best solution.

For open meshes you can temporary close them then delete the polygons you had created for doing that, right?

Here is a a demo video to show how I did it.
First, you have to admit that nothing is perfect. It totally depends on how accurate you want.
As Gunslinger mentioned, there is already a build-in operation called Make Planar Faces in Mesh > Clean up menu. However, if the result is not as good as expected by taking more iterations, there is a spin-off from this post.
Here is a way to make it happen in a few minutes by using it (combined with other operations of course), not so effective, but seems to be the only affordable way to get the most accurate result:
Download the attached addon, which is the same as the one in the post above. Install. Then follow steps below:

Delete one side of the model, luckily this is a symetrical mesh, it is enough to edit half of it, then mirror it for the other side.
Select all vertices on a quad IN TURN (you have to do this right clicking on each verts instead of using tools like border select or cicle select). This first quad should be around the center of the topology structure (eye in this case, you'll realize why I recommend to do so later). Then click Coplanar by 3 Verts button in Mesh Tools panel in Tool tab. In the option below, set Reference Plane to First, which mean taking the first three selected vertices to define the reference plane.
Then select two vertices on either edge first, then select one adjacent quad which shares the same edge with this quad, then repeat step 2.
Repeat it until you finish this operation on every quad. Now, all quads should be "perfectly" planar. (Note that you have to avoid re-touching all polygons that have been tweaked, otherwise the distortion will be distributed back!)
To check it, there are generally three ways in Edit Mode:

Select all polygons then use Mesh > Clean up > Split Non-Planar Faces (or find it in Spacebar searcher), set Max Angle to 0.001 in the option panel, which is the smallest accepted value (0 means to split all quads or ngons no matter what). If no quads splitted, then congratulations.
In Properties sidebar (N panel), toggle Mesh Analysis panel, then set Type to Distortion. set the min angle to 0°, and the second angle to a very small degree like 0.1° (values smaller than that will not that helpful here anyway). If all quads appear as dark blue identically, then congratulations.
Go to File > User Preferences... > Add-ons, enable 3D Print Toolbox addon. Find 3D Printing tab in tool sidebar (T panel), click Distorted under Checks section, while keepting the degree value 0 as default. If any non-flat polygons found, You'll see the check result in Output Section Below, click that button will select all non-flat faces so you can see where further tweaks needed. If it shows 0, then congratulations. This is the most recommended way for final check.

However, not all cases can be done by this solution. Your case got some luck because:

it is an open mesh (not solid);
it is symetrical (make it more affordable for manual tweaking);
it has a relatively simple topology;
there are a few triangles, which can be used to make adjacent quads happy if you have to.

However, more tweaks have to be taken for fine tuning (mainly for avoiding distortion happening again while mirroring).
Example file:
Script used (run it in Text Editor, or save as .py file then install as addon):

bl_info = {
    "name": "Coplanar by 3 Verts",
    "author": "NirenYang[BlenderCN]",
    "version": (0, 1),
    "blender": (2, 75, 5),
    "location": "3d view - toolbar",
    "description": "Make vertices coplanar using a plane defined by the first/last three selected verts.",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": "mesh",
}
import bpy
import bmesh
from mathutils.geometry import intersect_line_plane, distance_point_to_plane, normal
enum_ref = [( 'first', 'First', 'Defined by the first three selected verts' ),
            ( 'last', 'Last', 'Defined by the last three selected verts' )]
class MESH_OT_3points_flat_trim(bpy.types.Operator):
    """
    Manually pick three vertices to define the reference plane
    """
    bl_idname = 'mesh.3points_flat_trim'
    bl_label = 'Coplanar by 3 Verts'
    bl_options = {'REGISTER', 'UNDO'}
ref_order = bpy.props.EnumProperty(name='Refferece Plane', description='Use the first/last three selected vertices to define the reference plane', items=enum_ref, default="last")
filter_distance = bpy.props.FloatProperty(name='Filter Distance', description='Only affects vertices further than this distance', default=0.0, precision=3, min=0.0)

@classmethod
def poll(cls, context):
    obj = context.active_object
    return (obj and obj.type == 'MESH')

def execute(self, context):
    C = context
    D = bpy.data
    ob = C.active_object

    #if bpy.app.debug != True:
    #    bpy.app.debug = True
    #    if C.active_object.show_extra_indices != True:
    #        C.active_object.show_extra_indices = True

    if ob.mode == 'OBJECT':
        me = C.object.data
        bm = bmesh.new()
        bm.from_mesh(me)
    else:
        obj = C.edit_object
        me = obj.data
        bm = bmesh.from_edit_mesh(me)

    bm.select_history.validate()
    if len(bm.select_history) < 3:
        self.report({'INFO'}, 'Pick three vertices first')
        return {'CANCELLED'}

    points3Index = []
    points3 = []
    _ordering = bm.select_history if self.ref_order=="first" else list(bm.select_history)[::-1]
    for i in _ordering:
        if len(points3) >= 3:
            break
        elif isinstance(i, bmesh.types.BMVert):
            points3.append(i.co)
            points3Index.append(i.index)
    print(points3Index)
    if len(points3) < 3:
        self.report({'INFO'}, 'at least three vertices are needed to be selected')
        return {'CANCELLED'}

    points3Normal = normal(*points3)
    for v in bm.verts:
        if v.select and v.index not in points3Index:
            _move = True
            if self.filter_distance > 0.0:
                _move = abs(distance_point_to_plane(v.co, points3[0], points3Normal)) < self.filter_distance
            if _move == True:
                v.co = intersect_line_plane(v.co, v.co+points3Normal, points3[0], points3Normal)

    if ob.mode == 'OBJECT':
        bm.to_mesh(me)
        bm.free()
    else:
        bmesh.update_edit_mesh(me, True)

    return {'FINISHED'}

def menu_func_MESH_OT_3points_flat_trim(self, context):
    self.layout.operator(MESH_OT_3points_flat_trim.bl_idname,
                        text=MESH_OT_3points_flat_trim.bl_label)

def register():
    bpy.utils.register_class(MESH_OT_3points_flat_trim)
    bpy.types.VIEW3D_PT_tools_meshedit.append(menu_func_MESH_OT_3points_flat_trim)

def unregister():
    bpy.types.VIEW3D_PT_tools_meshedit.remove(menu_func_MESH_OT_3points_flat_trim)
    bpy.utils.unregister_class(MESH_OT_3points_flat_trim)

if __name__ == "__main__":
    register()

Thank you, I've upvoted the answer, but to be honest I'm confused what it does. From what I understood and correct me if I'm wrong it makes almost ("perfectly") planar faces? So does it do the same as Clenup->Make Planaer Faces if you run the latter dozens of times, or does it do anything more than that? Because if there's some manual selections need to be done I don't see the advantage.

I know, it can be hard to understand literally, I'll try make a video to show what I did it. "Almost perfectly" means that although I believe there is no absolutely perfect thing existing even in digital 3D world, it can be much much more accrurate than using the built-in operation. You can test it by either of the three ways I suggested above.

I've uploaded a demo video link, to show the details. Hope it helps.

To step 4: This is not guaranteed as usually closed meshes cannot be solved to have all faces planar. What you are doing is only distributing the distortion to some place else.

@Jerryno I've stressed in the answer that this mesh got some luck partially because it is open. Second, actually it is possible to avoid distributing distortions to the polygons that have been tweaked, please check the video link to see what I did. (probably I should complement a bit to that part)

Yes on this exact simple open mesh it is possible, but until you read to the end of answer it sounds a bit general. You are of course right.

"Make planar faces" works with iterations. Each iteration only affects the non-planar faces a tiny amount.
This is with 1 iteration:

And this is with 200 iterations:

Quite a difference huh? But the cube was very distorted in the first place. I hade to apply the "Make planar faces" like 6 times before it was done.
What I think you should try is crank the iteration setting up to max. If your faces are almost planar already, it will flatten out after a while. It does for me when used on a real case (the cube was not).

Thanks for the answer, but there's one issue here: there's no way as far as I can tell to know when the faces are planar and when you can stop applying that operator. Visually you can make a guess but you can't know if you guessed correctly.

@LeoErvin You can check that with distortion visualization, but the main problem is that vertices slide away from their original location a lot (which is also what happened here)

Isn't the distortion visualization also depending on visual representation (darkest blue being less and red being the most?) which is enough to make a guess but not know?

@LeoErvin You can set the threshold to for instance 0.001 degrees. Is that good enough?

Sorry, what I mean is here you have to rely on visual preception too. I mean first you have to assume the faces are indeed the same shade of dark blue as it seems to your eyes. I guess you could do a screencap and open in your 2d editor and use a color picker on each face, but even then if there are 0-255 shades and 0.001-x degrees doesn't Blender make an approximation when drawing the angle as a color already?

No worries, if they are under the threshold, they will turn grey instead of blue.

Oh. I'm sorry...


text:
Blender particle computations don't get updated
It seems in latest Blender versions it's common that Blender will precompute particle transforms, but when you change some setting, it won't get recalculated and the old animation will play. For example, changing the normal of the particle won't change anything, enabling/disabling physics won't change anything.
Is this a known bug and is there a way to force Blender to redo the calculations? Right now my only option has been remaking the particle system from scratch.
While there is a "Free All Bakes" option for Particles, it doesn't always seem to work, especially with "Keyed" mode.

At the Particles > Cache settings, have you tried "Free All Bakes" to reset the particles Cache? Then press "Bake All Dynamics" to recalculate...

Seems to be missing when in Keyed particle mode. That, or it doesn't actually clear the cache.

I see now. Uhm maybe if you emty your tmp folder the actual cache gets deleted (if there is any in keyed mode).

tmp folder? As in C:\tmp, the default folder frames are saved in? Because there is no file in there.