text:
Does Blender have a transform modifier (such as scaling, rotation, translating)?
Does Blender have a transform modifier? I mean a modifier that can do scaling, rotation and translation, just like s, r and g respectively, as you would normally do with a mesh. However, s, r and g do this permanently to a mesh, but I am asking for a modifier that you can undo or change easily, and will be permanent only if you apply the modifier. If yes, then can the modifier use different pivot points, such as , active element, 3d cursor, median point and individual origins?

I think there's no modifier for that. To achieve undoable transforms either add an empty which is used for transforms and object is parented to it or a constraint which points to some other object (and which is actually rotated / scaled etc).

@MrZak Sorry, I only just saw your comment suggesting this. I wrote my answer suggesting the same and then saw your comment. I would have left it to you to answer if I had noticed.

Yes, I was thinking of using an empty too but then I figured that maybe a modifier would be useful

@RayMairlot there's nothing wrong with that, I wasn't really going to answer this one.

With Blender 2.92 this is now possible using the Geometry Nodes modifier.

Add the modifier.
Change the editor type of an area to Geometry Node Editor.
Add a node (Shift+A).
Search for and select the Transform node.
Put it on top of the connection between the group input and group output.
Change translation, rotation and scale to your liking.

It cannot use the 3D cursor, but you can change the pivot point to a different object like an empty. That empty can then be parented to a vertex or the like. To do this, add two more transform nodes before and after your transform. The first one takes a transform values from an Object Info node with the pivot object, the second one takes those same transforms but inverted using a Vector Math node to translate/rotate/scale it back again.

You can also use a Hook: https://blender.stackexchange.com/a/220156/35559

I don't think there is a modifier that can do this. The Lattice modifier is close but it doesn't transform the object as you might expect if you rotate it.
I think the best thing you can do is to parent the object you want to non-destructively transform to an Empty and perform all the transforms on the Empty instead of the object. If you want to 'undo' all the transforms then just un-parent the object and it will revert to its pre-transformed state (as long as you choose the standard Clear Parent option from the Alt+P menu).
If you want to 'apply' the transforms you did on the Empty to the object itself then choose Clear and Keep Transformations from the Clear Parent menu.

if you need a modifier then the warp is what I would use, just disable falloff and see will need two empties... so yes, parenting to an empty or using a constraint seems better options
https://dl.dropboxusercontent.com/u/16486113/Blender/archivos/WARP.blend

Lattice exactly worked for me as I wanted. +1. The biggest advantage for me using lattice is that it transforms the object AFTER the other modifiers (e.g. boolean)

Alt-S will undo scaling (ie. set scale factors to 1.00)
Alt-R, and Alt-G will, in the same way, undo rotation and translation respectively.
In that sense, S,R, and G are not permanently changing your mesh objects.
If you want to make transformations permanent, Ctrl-A and Apply rotation etc.
Does that answer your question?

Note though that transform operations don't change mesh permanently only if were done in Object mode and thus weren't applied to the object data. If they were done on Edit mode then this won't work.

Yeah, fair point.

IMHO, the best way to transform an object, especially on top of modifiers such as Mirror or Array (that will change the look of your object when you move it) is to add a bone on the same position as your object and then parent it using the automatic weights option.
You just have to make sure that your object is entirely weight painted in RED.
This let you move objects with mirror modifier without having to apply it.

If all you need is translation (as opposed to rotation or scaling), the Displace modifier appears to work. It supports both local and global translation, on any of the three axes. Just make sure to set "Midlevel" to 0.
Example:

authors: Виктория Шишмагаева


text:
change camera into multi-view camera?
When I am trying to use multi-view (highlight) and I press Render, then it says this: 'camera "camera" is not a multi-view camera'

But in the camera settings I don't know to change my camera into a multi-view camera

A camera being ‘multi view’ or not isn't a specific camera setting but relates to the configuration of multiple cameras, with one camera object for each 'view'.
If you look at the bottom of the Views panel of your first screenshot you'll see the 'Camera Suffix' property. This can be defined for each 'view' of the camera.
To link the cameras into a 'multi view camera' you simply need to name them to have the camera 'name' (eg, 'Camera') followed by the suffix.
So, for a multi-view camera named 'MyCamera' with views of 'Left' (suffix '_L') and 'Right (suffix '_R') you would name your two cameras 'MyCamera_L' and 'MyCamera_R'. Selecting either camera as the 'active' one will effectively select both for rendering.
All of the defined Views must exist as cameras in the scene for it to be considered "multi-view".
See Is there a way to batch render images from several cameras? and continuous sequence of frames with multiple cameras with each camera starting at start of animation?

Because _L and _R are so very specific to stereoscopy, let me help make this clear for Multi-View users: if you currently have cameras named Overview, ChautauquaTrail, and Sanitas, you should rename them to Cam_Overview, Cam_ChautauquaTrail, and Cam_Sanitas, and then select each of the lines under Multi-View and put _Overview, _ChautauquaTrail, and _Sanitas as the Camera Suffix. In a program with Object references, this feels like a horrible, hacked-on solution, but it's what we have (as of Blender 4.2).

source: Stack Exchange

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

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

sort: votes


text:
How can I find out the variable name in python?
I know how I can find out the python command by clicking a button in the Blender interface, and then look in the info window:

For example, as can be seen, I added a cube, UV sphere, plane, camera, lamp, pressed A twice.
But how can I find out an object variable name, for example the y-rotation of an object. Because I can't find the y-rotation, when I point my mouse over it, I can only find the rotation:

Rotation is a vector, for Eulers (x, y, z).  rotation_euler[1] or  rotation_euler.y is the y rotation component.

the name of the objects as set in the "outliner" are the names of the objects. type  bpy.data.objects.items() to see all current objects and their names

Does this addon help? https://github.com/adhihargo/display_matrix

This has been turned off by default in 2.80. Turn it back on in Edit > Preferences > Interface > Display > Python Tooltips

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


text:
displaying a powerpoint presentation in the background of a video clip
How do I display a powerpoint presentation in the background of a video clip, changing the slides in time with the speaker talking in the foreground? thanks.

Are you asking how to transition between slides? Do you have the individual slides as images? Or do you have an actual presentation in powerpoint?

Blender doesn't have support for reading powerpoint presentations. However you can save the presentation as a sequence of images and display the image sequence within blender.

In powerpoint choose "Save as" and select an image format.
In blender you can easily setup a plane to display the images with the import image as plane addon.
Adjust the texture to display an image sequence.

You can also find the same settings in blender internals image settings.


text:
How would I make these parts of this pocket watch?
You guys have been super helpful so like the neighborhood cat who you fed once... I'm back for more. I'm wondering how I would do these two parts of this stop watch. Specifically that sharp curve that comes up from the body and the handle that the chain clasps on to. I have an idea on how to do the gear turning knob and the two structures on either side of it, but if you want to show me the technique to mold those I won't be unhappy. I'm trying to learn proper technique since I've only been using Blender for two weeks now. Don't want to get any bad habits. Thanks again!

I would suggest having a go and coming back here if you run into trouble with a specific problem.

I just don't know how to approach it. I'm not sure what mesh to start with and what methods to use it.


text:
Why am I getting this shadow on the top of my pocket watch?
This is driving me crazy. I've tried a bunch of lighting setups and the top is always dark like that. I think it's a shadow. I'm using a glossy material set to gold. Any help would really be appreciated.

The lighter part is a reflection. It's simply brighter than everything else because of that. What's that plane that's over everything for?

The panel over it is an emission plane. I'll check out that link thanks.


text:
Big issues with 6Gb 980 Ti and particles rendering. Help is appreciated. .blend file and image included
So I'm having some issues with GPU rendering particles. I'm new at this and have created a pretty big scene with a decent amount of particles and image textures. When it starts rendering it renders the cabin, but once it starts rendering the particles of the landscape my GPU usage goes crazy. About an hour into the render I get a CUDA error and the rendering stops. I looked it up and it's supposedly an error that the memory is all used up, but MSI Afterburner shows the VRAM as only about half used up. I updated Blender and my drivers today and haven't had a chance to see if I still get the error, but my GPU usage is still all wonky once the particles start to get rendered.
Here is an example I quickly put together. On the left is a pretty simple project rendered. The GPU usage fluctuates a bit, but no errors or anything. On the right is the big project. You can see at the beginning it is just rendering the cabin and it's obvious when the particles start to be rendered because of the crazy GPU fluctuation.

I had someone online render it with a Titan X and they said there was no issues and it took about 4 hours with 600 samples and 1080p. Here is the finished product that they saved the screenshot of. Still needs some work, but this is the full render that I haven't been able to see.

and here is the blend file. It's big!
https://drive.google.com/file/d/0B8smgBA_H8ClV01pMVpDSEkwYk0/view?usp=sharing
I appreciate any help. Thanks!

Use lower resolution particles on the hill in the background.


text:
Compare two objects
Can one compare the geometry of two objects and show how/where they differ?  Thought this would be an existing built-in feature, but I've been unable to find anything on it.
Occasionally I have two objects, and one may have been tweaked a little bit, but I don't remember the details of what I had been doing, and maybe I've been poor in my object naming. I would like to pick one object and request "compare" or "diff" then chose a another object as comparator. Then I'd see if they're the same or different, and if different, maybe highlight the geometry where they differ.
Occasionally I might duplicate an object but not get around to altering it, so would like to just delete it on the next visit, but don't want to delete it if it turns out to be an incremental improvement.
Currently using Blender 2.90 on MacOS 11. Current use is for designing 3Dprintable objects.

This geometry nodes setup (3.2 version) may help you find differences:

The Geometry Nodes:

Shader:

If you have added points, switch Transfer Attribute node mode from Index to Nearest

very nice!!!!!! Geometry nodes is jus amazing! +1

thats pretty awesome!

As far as I know Blender does not have a built-in 3D models compare functionality. Autodesk has one though here but they only support their own proprietary file types RVT, DWG, DXF, IFC, NWD, F3D. There's also a 3D Files Diff software that might be useful. There are numerous other CAD software that let you compare 3D models such as MagicCheck, KeyCreator Direct CAD, CompareVidia, Solidworks, EnSuite, CADIQ, AutoVue. Other than that, when worse comes to worst, you could manually export one .OBJ file for v1 and another for v2 of the 3D model and use the diff command diff v1.obj v2.obj to see textual differences.

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


text:
Can I control depth of focus (v depth deph of field)
I'm creating some studio-shot style images of products. I'm trying to get the foreground elements in focus while having the background blur slightly.
I've done a lot of real world studio photography and I know that depth of focus and depth of field are two different parameters (though frequently confused). Put simply, depth of field references the precise centre of the plane of focus as parallel to the image plane, while depth of focus reference the sum of the distance on either side of this plane that remains in focus.
But 2.6x only seems to offer control of the depth of field, so that only that exact plane is in focus, and everything either side gradually defocusses. Or am I missing something?
The point is, I want to know if there is a way to control the z-depth of the area in focus, not just it's distance from the camera.

You can find it under the camera property.
Select the camera and go to the camera tab.
There is a panel named "Depth Of Field". Either select an object to be your focal point or set the distance.
Set Focal length and radius (f/stops) to adjust the depth.
Here with Radius 0.06

...and here with radius 0.3

From one photographer to another, as you know the Focal length and f/stop produce the DOF effect. Same in Blender where F/stop is better expressed in radius.
You can of course use F/stop instead of radius but don't forget to change the focal length, otherwise you will have to use ridiculously small F/stops. :D


text:
Mesh deformed after changing pose
I've rigged a model and why I try to change the pose, the mesh deforms badly on the legs.
The model has a mirror modifier (on X and has Vertex Groups option checked) and the armature has X-Axis Mirror. Automatic weights was used and after that I've cleaned a bit the vertex groups (mainly in the head and arms).
But I cannot find what's happening with the legs.

Just realized that the body/neck/head were having all the vertices on the right side, even though the mesh has a mirror modifier.
I've deleted half of the body/neck/head, deleted the vertex groups and the armature modifier and used Automatic weights again and now it works fine.

This is a classic weight issue. The vertices that aren't moving correctly are either weighted to the wrong bone, aren't weighted to a bone at all, or aren't weighted enough to the right bone.
Vertices follow the movement of the bone they're assigned to, but they can be assigned to only follow a percentage of a given bone's movement. For example, if you assign a vertex to a bone at 50% (or 0.5) and then rotate the bone 90 degrees, the vertex will only follow half of that movement... 45 degrees. Furthermore, you can assign a vertex to more than one bone. For example, you might assign a vertex on the knee to 50% on the lower leg and 50% on the upper leg so that smooths between both of them.
It looks to me like you have a handful of vertices on the (left?) leg that are not assigned to the bone going back to the left. Consequently, the bone moves to the left, but the vertices don't follow. A similar thing is probably happening with the ones on the right. Note: "not assigned to" might also mean "assigned to a different bone."
Interesting note: it's possible (depending on your Blender settings) to have a vertex with more than 100% total influence. Unless you have "normalize all" turned on, all the weights will get added together and do weird things.

I'll check where the vertices belong to. Thanks


text:
Checking if boolean true or false not working
I'm trying to make my character jump using python script. And the character jumps but I want to check if the character is already jumping, and if he is, then not be able to jump again. But for some reason this code doesn't work.
# this triggers when I press space.
if isJump.positive:       #<-- this one doesnt work. but it still prints 'jumped'
   if jumping == False
       cont.activate(j)
       jumping = True
       print("Jumped")
       cont.deactivate(j)

# this triggers when I collide with an object with a property 'ground'
if collide.positive: #<-- This whole block works fine
   jumping = False
   num = 0
   print(num)
   cont.deactivate(j)

can we see the rest of the code please? this will help us help you.

You store the current state in an intermediate variable. This can't work. You need to store it in a storage that will survive at least till the next call access. I wondered that you did not get any errors.
There are many ways to solve that issue.
FSM (build in state machine)
One way is to use the build-in state machine.
You can define a "jumping" state that, (when current) tells the character is currently jumping. On the other hand, if it is not current the character is not jumping. You do not even need Python to do that.
any state can transit to jumping state:

The jumping state cares the jump e.g. playing animations, detecting collisions and switch to other states

Property
You can create your own state machine. E.g. by using a property of the game object:
jumping = cont.owner.get("jumping")

# this triggers when I press space.
if not jumping and isJump.positive:
       cont.activate(j) # what is a "j"?
       cont.owner["jumping"] = True
       print("Jumped")
       cont.deactivate(j) # this will not take effect

# Better separate start jumping from jumping.
# This code does not need to be executed when there is no jumping, regardless of the collision sensor result.

if jumping and collide.positive: #<-- This whole block works fine
   cont.owner["jumping"] = False
   num = 0
   print(num)
   cont.deactivate(j)

There are much more ways. I hope it helps a bit.


text:
How to start an animation at a different frame than that of the start of the loop
Is it possible in the Blender Game Engine to start an animation at say frame 1 and end at frame 20, but after the first playback to start looping frames 5-20?

Try this:
It starts one animation and plays it once from frame 1 to 20. Once that animation reached frame 20 the actuator isn't active anymore. This means that if you set up an actuator sensor to a Nand controller to a action loop frame 5 to 20 it will work.

If it is working please accept this answer. Thanks


text:
Python BGL Draw text in the node editor
I have an operator (MyOperatorTest). How can I make it so that when this operator is run, text is printed on the screen to the top left corner of the node editor? (The operator is in the node editor)

http://blender.stackexchange.com/questions/57709/how-to-draw-shapes-in-the-node-editor-with-python-bgl showed  how to draw bgl, blf in node editor.  Make the modal operator in @poor 's answer a modal timer operator, you can call it from within your operator,  and display some message on screen for a designated number of seconds, then cancel.


text:
Python: Array of objects error
I am trying to make an array of columns and rows like this:

but when I run my code
I get

why is this?

Not sure this question is really suited here, but well…
 x = 0
 y = 0
 for row in range(rows):
     x = x + scene.formationArrayColumnMargin
     for ag in range(int(agentsPerRow)):
         y = y + scene.formationArrayRowMargin

y must be reset to zero each time you run outer x loop, otherwise it keeps growing. Something like that:
x = 0
for row in range(rows):
    y = 0
    x = x + scene.formationArrayColumnMargin
    for ag in range(int(agentsPerRow)):
        y = y + scene.formationArrayRowMargin


text:
Python: Duplicating a group with animation
I have a group. The first object is a mesh and the second is an armature with multiple actions that controls the mesh. How can I duplicate this group with python in a for x in range(number) statement and be able to set the action on each armature that is created. This way, each duplicate group will have it's own animation.

Make a copy of all objects in group "Group" and assign to a number of new groups, "NewGroup[.nnn]"  If the object in the new group has a parent or an armature modifier object in "Group" then it is assigned to the respective copy in the new group.
import bpy
scene = bpy.context.scene
number = 5 # make 5 group copies
group = bpy.data.groups.get("Group")
obs = [o for o in group.objects]
if group is not None:
    for g in range(number):
        group_objects = [o.copy() for o in bpy.data.groups['Group'].objects]
        new_group = bpy.data.groups.new("NewGroup")
        for o in group_objects:
            # parent
            if o.parent in obs:
                o.parent = group_objects[obs.index(o.parent)]
            # armature modifiers
            armature_mods = [m for m in o.modifiers if m.type == 'ARMATURE']
            for m in armature_mods:
                if m.object in obs:
                    m.object = group_objects[obs.index(m.object)]
            new_group.objects.link(o)
            scene.objects.link(o)

To check if an object is armature and change action, something like
    for o in group_objects:
        if o.type == 'ARMATURE':
            o.animation_data.action = someaction
        new_group.objects.link(o)

How can I set the location after duplication?

This duplicated both objects but did not apply the armature to the mesh.

Look again! It dupes all objects in the group, however it will get the relationships wrong tho, by keeping the original parent etc.  Need to amend to suit your needs re relations, modifiers, constraints etc.  As it stood before the "Group" Armature parent object would have all the other groups' mesh objects as children.  Fixed for single parent.  ..  armature would need to be amended as the armature modifier object too.

My question was specifically how to duplicate with animation. I wouldn't be asking if I knew how to do it. Duplicating the objects themselves is not a problem. I need to know how to duplicate them so that each duplicate is animated by it's own armature.


text:
How to add a displacement modifier and source image with blender python
I want to add a displacement modifier to the active object and set the source image in python when you press a button. How can I do this?

The code is
heightTex = bpy.data.textures.new('Texture name', type = 'IMAGE')
heightTex.image = bpy.data.images['Myimage.jpg']
dispMod = ob.modifiers.new("Displace", type='DISPLACE')
dispMod.texture = heightTex


text:
How to make feathers on a mesh?
This is my first question here. So hello. Anyway, my question is: how could I make it look like a mesh is covered in feathers?
For example I am making a few scientifically acurate dinosaur models i.e velociraptor and many were covered in feathers.
I need to be able to see it both on render (cycles) and when I export my mesh into the unity game engine.
Textures or a modifier of some sort? any help would be fantastic!

You're in luck - Pierrick Picaut recently posted a timelapse modeling video and .blend of a fantastic bird model on Blender Artists. His is more on the cartoon side stylistically but there's no reason you couldn't use the technique for realism too. http://blenderartists.org/forum/showthread.php?377202-The-Bird-blend-file-included As for exporting a mesh with particles into Unity, I don't know. Maybe someone else can comment on that.

If you have feathers as a particle system you can go to the modifier stack and hit convert. That way it made the particles into seperate objects which can be transported ( it will probably be resource heavy unless the feather models aren't that high poly )


text:
Eevee & particles: hide mesh emitter at render
It was simple to hide the object that emits particles in Cycles by unchecking
emitter in PropertiesEditor-->Particles-->Render.
But there is no such option with Eevee.
How could I do ?

Depending on your needs, deselect "Display duplicator" and/or "Render duplicator" in the Object properties panel.
This works in Blender 2.8 regardless of the rendering engine (it works with Cycles too). It applies to every situation in which an object is used to create instances of other objects.

Note that unchecking "Display Duplicator" will prevent you from selecting the object with right-click in the Viewport: you'll still be able to select it from the Outliner.
(As of today, the viewport doesn't update correctly once you uncheck the boxes, but if you advance one frame in the timeline it should refresh)

now duplication is called "instancing".


text:
Grease Pencil: customize the eraser as of in the old versions
Since a few builds, Grease Pencil in Blender 2.8 has a new eraser, which is "fading" a stroke until it is transparent, like in many softwares.

But before those last builds, the default eraser had another behaviour: it was reducing the thickness of the stroke until it was disappearing totally, without affecting the opacity.

That old eraser had a nice feeling, I felt good with it, how could I bring it back ?

With a new 2.80 GP object, while in draw mode, we have three erasers in the toolshelf - Erase Soft - Erase Hard - Erase Stroke.

The soft eraser now has two new parameters:
Affect Stroke Strength and Affect Stroke Thickness. These parameters define how the eraser affect the opacity and the thickness. The old eraser only affected the thickness, and the new default parameters affect the opacity (strength) in a 100% and the thickness in a 10%, so the stroke gets less and less opacity and the thickness is reduced in a small proportion (10%). We set this values after a lot of test to get the feeling of erasing in a paper.
If you want back to the "old" soft eraser, just set the Stroke Strength to 0% and the Stroke Thickness to 100%.
With these parameters you can configure the "feeling" of the eraser.

Hi, this seems to have changed in the 2.8 beta ?


text:
Animation Nodes : how can I switch between different setups?
Is it possible to work on several animation nodes NodeTrees and to switch between them / select the active one ?
I see AN generates a "Animation Nodes Object Container" object.
Is the nodetree attached to it ? And how ?
Thanks for your lights.
G

Animation Nodes Object Container
The Animation Nodes Object Container is created as a helper object for the Object Instancer node, in other words, it is only created when the Object Instancer node is used. Notice that it doesn't get removed when the Object Instancer node is removed and it is a single object even if you have multiple Object Instancer nodes.
Node Trees
If multiple Node Trees are presents, all of them executes based on the defined Auto Execution settings. So if both have Always option enabled, both will execute simultaneously. So there really isn't an "Active Node Tree". Subprograms are shared across Node Trees, so you can call a subprogram defined in one node tree in another.
Animation Nodes provide a fast way to disable/enable Auto Execution for the available node trees, this is done through the Overview Panel:

Thanks for those informations. And then, is it possible to have multiple node trees and to execulte only one of them (in a simple way) ? Thanks

@gordie Sure, just disable Auto Execution on the ones you don't want to execute. A fast and simple way to do this is by using the Overview panel in the T menu, you will see a dot beside each node tree, pressing that disable/enable Auto execution.

Ok Omar, I didn't get that !  If you edit your answer to add this, I'll validate it.  Thanks !

@gordie Edited the answer.


text:
How can I edit an action strip while seeing the global NLA animation playing?
I'm playing with the NLA editor so I can use action strips, but I think I don't understand how it works.
From what I understand, I can see the NLA (global) animation only if there is no action opened in the Action Editor.
I can edit an Action Strip by right-clicking it then Start Editing Stashed Action from within the NLA.  It is now open in the action editor.  But I don't see anymore the global animation of the NLA so it's difficult to work correctly.
Is there a way to edit an Action Strip while the global animation plays ?
Thanks

If anyone needs the answer, it's possible now with menu Edit -> Start Tweaking Strip Actions (Full Stack)
And it's default mode in Blender 4.0. Before 4.0 the default is Start Editing Stashed Action, which edits the action in isolation.

If you select the strip in the NLA and press Tab, the action will open in the Dope Sheet and the other objects will continue to be animated.
The only problem is that the action you want to edit will stick to the beginning of the timeline, or at the frame where it is supposed to begin in the Dope Sheet as an action, not at the frame where the strip is placed in the NLA.
To make it begin at the same frame as in the NLA, enable the track pinning option:

when I press tab, it seems to isolate my action - I can't see the "sum" of the NLA...

that's weird, it works fine here, I hope someone will understand your problem

I received this answer from @GuitlyGhost on blender.chat :

strips have blend modes. To prevent the top most action track (orange) from completely overriding your lower strips, change its blend mode to Combine instead of Replace.

If you want to edit a strip while still viewing the complete NLA result, that's not supported yet and currently in development


text:
Float Curve node : is there something similar that can be used for anticipation / bounce?
I like to use the Float Curve node in Geometry Nodes, it allows me to tweak how data evolves (let's say from 0 to 1) and break how linear they are.

But I'm searching for something a bit different.  I would like to make a transition that would have some anticipation then a bounce.
Instead of the "diagonal" default curve of the Float Curve node, I would then need a node that works the same (progression from 0 to 1), but with an horizontal line instead of the "diagonal" line of the Float Curve node.
Then I could tweak it to have some anticipation and "elasticity" to my transition:

The difference is that I can go lower than 0 and higher than 1, if you see what I mean.
Is there something like this existing, or how do you handle this ?
Thanks !

no, there is no node for that. Either you use math nodes for that or you adapt the float curve that it looks like you want.

I'm not sure I get what you mean, but do you know you can change the limits of the float curve by going into the dropdown in the top right of the node ?

Unclip the float curve.

Disable the Clipping.
Click on the "-" Magnifying Glass.


text:
how would you light such a scene?
I'm trying to build a light setup to get a render like this reference:

Background gradient, a lot of light on the front and quite dark and blue shadows.
But I'm not sure how to achieve it.
Eg : what type of "world" would you use ?
Would you use a gradient, or a solid color, and which one ?
What kind of lamp ? Is a sun enough ?
Well, any tip/lighting advice is welcome.
Here's what I got for know, which is not exactly what I would like to get.. :/

And my Blend here (I got the city on Blendswap).
Thanks !

Final

Lights
As a light use Sun Lamp with Size 0. This will make shadows completely sharp. I've also changed Strength to 2.

World
For World I've used simple Linear Gradient to look similar to your reference image. This will give blueish tint to whole image, but we will take care of it later.

Compositing:
First of all you will need to give your objects same Pass Index. Take a look here how to do it: Object ID to a whole group.
And check Object Index under Render Layers > Passes.

Now we can use our objects as mask for Color Correction and reduce unnecessary saturation for shadows/highlights and everything we need without affecting World Background.

Hi LukeD, that's better; but in the reference the shadows are cleary blue, while they are grey here... any idea ? Or is it post-production ?

@gordie Mostly it's due to post-production. I'll have a look in Compositor how to achieve this effect. I'm not an specialist in that area though. It could be pretty easily be achieved in Photoshop for example.

@gordie I've reworked my answer. Check World and Compositing section.


text:
Solidify modifier: have a rim material that takes account of alpha
I'm playing with sprites within Blender.
My goal is to display a 2D animation in a 3D world, and to give thickness to my drawings.
The thing that I would like to achieve is to give thickness to my drawings (using the Solidify modifier) depending of the drawings alpha.
Actually, I'm able to give my mesh thickness and to assign a different texture to the rim, but...  It doesn't give the drawing a rim, it gives its "container" a rim.
How could I do ?

Here's my actual process:

Load my image using the 'Import Images as planes' addon
Give that plane a material that displays the drawing; but is transparent depending of the alpha channel of the drawing.
Add a Solidify modifier on the generated plane.
In the Solidify modifier, assign another material using the "Material Index Offset"

How could I achieve this ?
Thanks !

Solidify modifier can't follow alpha. But you can fake it as in this question: https://blender.stackexchange.com/questions/84129/is-there-a-way-to-add-fake-thickness-to-an-alpha-image-texture

It's possible to use alpha to modulate a solidify (via a vertex weight edit modifier) but that's not really what you want.  Check out https://blender.stackexchange.com/questions/84129/is-there-a-way-to-add-fake-thickness-to-an-alpha-image-texture for an example of what you want.  But what you should do is just cut your plane into appropriate shapes for your drawings.

The thing is that I want to use animated textures; so I can afford animate the mesh by hand...


text:
Animate a plane that transforms to a mesh?
How could I animate a plane that transforms to a sphere using Blender ?
I know you can transform a cube to a sphere using shape keys, but is this possible for a plane ?

I just found out this technique from a tutorial that uses another software.
But it applies on Blender:

create a plane and subdivise it so it has enough vertexes (eg. 10 times)
add an empty at the same place, and set the rotation to X:90°
add a SimpleDeform modifier on the plane

Switch mode to Bend
Set Axis, Origin to your empty
Set Deform Angle to 360° so it becomes a tube

duplicate your empty and sets its rotation to X:90° / Z:90°
add a second SimpleDeform modifier on the plane

Switch mode to Bend
Set Axis, Origin to your second empty
Set Deform Angle to 360° so it becomes a sphere !

Et voilà ! You can now animate both deform angle from the SimpleDeform Modifiers to animate it.


text:
Dope Sheet mode in 2.8 : is it possible to display Grease Pencil & regular Dope Sheet keys at the same time?
Is it possible to display at the same time "regular" keyframes from the Dope Sheet (eg. camera) and grease pencil keyframes, in Blender 2.8 ?
When retiming an animation, it is not very intuitive (and takes more steps) to toggle between those modes.
Any chance you can do both at the same time ?  Thanks !

AFAIK there is no way, for now, to display several Dope sheet editing contexts in the same area. The best you can do is to stack two dope sheets and give them each editing context you need:

Maybe this could be a nice feature request though.


text:
How can I paint and animate a mask with the new Grease Pencil?
does anyone know how to paint (and animate) a mask within the new Grease Pencil (Blender 2.8) ?
I guess that it should be possible to either define a Grease Pencil layer as mask; or to use an holdout material or something ?
Thanks !

Using Subtract as a Blend mode for a Grease Pencil layer acts just like a mask:

Subtracted layers will act as holdout for every other layer that is listed below them, but regardless of their view-depth (layers in front are masked out too). Layers in other GP objects are not affected

Seems perfect but it is not working here (2.8 beta), don't know why ?  I use a black material like you, my GP layer blend mode is set to "substract" too.  And I get this : https://imgur.com/a/rM5Rxky

is it the top layer and in the same object? it should work.. keep in mind the feature was added in the last month so you need an updated beta

Got the last nighlty.  Maybe you need a background color for this to work ? (not working on transparent) ?

The contents of a subtract layer become visible wherever they don't overlay with the contents of other layers. This is quite different from the behaviour of masks in other graphics/animation software. Is there any way to have the contents of a masking layer be invisible in all cases, but still mask other layers when they overlap?


text:
Hotkey for toggling pivot center?
Hi read about the hotkeys for changing pivot center, but is there another hotkey to toggle between those modes ?
Thanks

AFAIK there isn't one, but there should be.  I'm stuck with "." and Ctrl ",".

With the 'Pie Menu: UI Pie Menu Official' addon enabled, press the semicolon ";" key to change the the pivot point with a Pie interface.


text:
why does my cloth simulations "bounces" when previewing?
I'm playing with cloth simulation, and I got some weird shit.
It's like the simulation wasn't linear; but was calculating a frame every ~10 frames; then interpolating between for the preview.  Is this possible ?
When I keep it playing, it seems that the cache continues to fill, but at the end of my animation - here near frame ~75.
Why isn't this linear / How can I make it simulate in a linear way ?
Thanks!

Thanks !

can this be related to my "sync" parameter being actually on "AV Sync" ?

Is your frame step set to 1?

Yes of course :)


text:
How can I select every nth objects?
I converted a particle system to "real" objects.
I got thousand of them...
I would like to be able to select every nth object.
I've seen it is possible to select items with a pattern, but is it possible to select every n item ?
Thanks.

Hoorray
I made my first Blender python script, and it works !
See here.
"""
nthObjectSelector by gordielachance
This will reduce your current selection of object to nth objects.
https://gist.github.com/gordielachance/ba32a3087f8d327bfdeb9d0ea7fb4935
"""
import bpy

#SETUP
nth = 3 #Specify your nth value here !

#list of selected objects
list_all = bpy.context.selected_objects

#start by unselecting everything
for obj in list_all:
    obj.select = False

#now only select nth
list_reduced = list_all[::nth]

for obj in list_reduced:
    obj.select = True

#debug
print("nthObjectSelector ({}) : selected {} out {} objects".format(nth,len(list_reduced), len(list_all)))


text:
cycles VS evee : seems that some shadows are ignored?
I'm testing Eevee and it seems quite nice !
This is a scene with just a sun.
Here's how it looks in Eevee:

And now, with Cycles:

The mugs and the computers on the table almost don't have shadows with Eevee...
I know it is NOT Cycles and that shadows won't render as good as it.
But anyway, this look almost unrealistic.
What should I do to get better shadows ?
Thanks a lot !

Maybe EEVEE is in development, so it would be fixed in future!:)

Hi, thanks, I know it is... But what I don't know is if this is a bug of Eevee or if my setup could be improved to get better shadows.

I don't work with Eevee, but you can see in cycles render that it has rendered as expected, maybe Eevee has a different node setup for showing shadows highlighted and noticeable like cycles! So wait till someone else could answer ;)

I think I found out for this particular problem !
Enable the "contact shadows" in the light panel !


text:
object parented to bone does not stick to its place
I have attached an empty to the head bone of a rig.
This empty is the parent of a face - it has a nose, eyes, hair... attached to it.
(I did this because I need to toggle the face attributes in my animation).
Thing is, when I'm moving the head, the parented elements are not sticking where they should, it seems to slide and I don't understand why.
I DID have parented it in rest pose as answered here for the same problem...

Does someone understand that or could have a look ? Here's the blend.
Thanks !
PS file has been made under 2.8

Your headbone's base is in the same place as the neck's base. In edit mode move the headbone's base to the neck bone's head.

Your rig uses weight paint for moving the body parts, whereas your glasses are curves with empty parent, which is parented to the bone - head.
Rotating bones causes them to affect the body with the weight used from weight paint, and the decorations are just parented to them, so body is deformed with weight (more or less), and decorations are just copying full rotation from it's parent.
So, when you rotate head you are affeting the neck as well, so weights are applied. However, your accesories use only head bone transform info.


text:
Is Eevee ignoring motion blur on particles?
I have enabled motion blur on Eevee.
It works fine, but it seems that it is ignoring particles (and also meshes moving along a curve modifier).
By any chance, is there a way to make it work ?
Thanks

According to the documentation the object motion blur (particles as well) is not yet supported. It probably will be but we have to wait to get all the features in Eevee.
The only way is to use cycles now.


text:
2.8 - has the "slow parent" feature been removed?
Has the "slow parent" feature been deprecated in Blender 2.8 ?
It was quite useful :/
Are there any alternatives ?
Thanks !

Looking at https://developer.blender.org/T55026, it does appear that Slow Parent is no longer available and is unlikely to be reinstated.
As an alternative, you could use a Driver to average between the 'desired' location of an object and its 'previous' location. I've done similar in the past before I knew of the existence of the Slow Parent or where I just wanted more control. As an example, see this answer to Moving objects create wind


text:
(2.8) how should I use a particles texture to stop emitting?
I read this post about using a texture to affect the particules size; and it works fine.
I have also read that to stop my emitter emitting particles,
I could do the same on the "density" parameter.
But I can't make it work.
1 - could particles have several textures ?
2 - how should I fix my texture to stop emitting ?
Thanks

Particles will emit where the texture has white color (in your case) and not at where the texture is black. So to stop emitting the particles, make the "brightness and contrast"  value zero of the texture for density.

Ok, so I don't have to use the "mapping" parameters but the "brightness" and "contrast" parameters ? And set them to zero ?  Thanks.

You do not need mapping. But as far as I know in the blender 2.8, particle texture does not update in animation.


text:
2.8 evee - can I "mask" a mesh/material outside of a container (like a domain)?
Is there a way to easily define a volume where an object is visible, and hide it elsewhere ?
Thanks.

If the object intersects the volume partially, should it be (A) partially visible (B) transparent or (C) invisible and only appear once its origin enters the volume?

C would be nice, I guess A is more complicated...

A is just an intersect boolean modifier.

This sound like a boolean modifier could help you.

Simplified setup, with a cube and a VolumeMesh.

Add a boolean modifier to the object which needs to be invisible outside of the volume. Choose the Intersect operation (default) and choose the VolumeMesh as the object of the modifier.

won't make the meshes flickers or something, if there are modifiers on the object ?


text:
Geometry Nodes: How to get Object Rotation in Local space?
Object Info Node returns Transforms in World Space. How does one get Local Space Rotation? (relative to Parent)
Edit: The end goal is to reliably extract bone rotations by parenting/constraining some object to them, as there is no direct bone access currently.

Object Info 'Original' returns the transforms in World Space. Object Info 'Relative' returns the transforms in the modified object's space. Do you mean you want the info-d object in the space of a third-party parent that's not  the modified object?

@Robin Betts
Hi, thanks and sorry for a slow reply.
"'Relative' returns the transforms in the modified object's space" - correct.
What I mean is I need the cordinates of a target object as they are stored in it, without conversions to other spaces (which, yes, in case of parenting is in the space of an object that is not the modified object).
Edit: To be clear, I'm trying to reliably extract bone rotations by parenting something else to them, as there is no bone access currently.

Hi, kivig! No problem, I've had to be away myself. I think it would pay off, if you copy-pasted your motivation into your original question Then folks could run a few tests on your use-case before answering, if they can.


text:
Rendered video pulses to lower quality and back to high quality
In my output video there a pulse that occurs after the number of frames specified in the "GOP Size" setting. With the setting of 18 that I have in the image shown below, the pulse occurs every 18 frames. During this "pulse", the video seems to move to a lower picture quality and then quickly returns back to a high quality.
Here are my output settings:

If I set "GOP Size" to zero, the picture quality of the video degrades substantially. The maximum value for "GOP Size" seems to be 100, so the pulses occur a little over 3 seconds apart.
Is there anything I can do to alleviate this?
Any idea what I might be doing wrong?

I think you need to increase the bitrate, or at least the gap between minimum and maximum. A GOP is group of pictures, it contains a full image followed by areas of the image that have changed. By having to keep the bitrate within a narrow margin the full image uses most of the bitrate so the following frames need to use less to prevent going over the maximum, therefore the lower quality to maintain the bitrate within given limits.

That's a typical behaviour in the MPEG-4 Codec. You should switch to H.264 and that should be much better. Worked for me. Some people advice to set the GOP to the Framerate, others say half the Framerate, maybe that helps as well.

The problem may be caused by some sort of glitch in the encoder included in Blender. The poor quality can be avoided by using lossless output. In v2.71 this is done by choosing H.264 format under Encoding, and ticking the Lossless Output box.

Here is a detailed video explaining lossless rendering in Blender.

The minimum bitrate is the problem. You need to set the Minimum and Maxium bitrate number to be the same. That fixed it for me. :)


text:
Motion tracking: object in my scene bonces around
For whatever reason when ever i insert an object into my scene, it bounces around. The markers I have placed, work perfectly, 0.183 solve error, but the object just bounces and moves when I render the video. The object it's self isn't moving, but for some reason the camera sees it that way or something like that. I don't really get it, I'm new to this whole motion tracking thing.

Okay here is my first render (I am using the white dots as markers):https://www.youtube.com/watch?v=h4unNN6z7Qg&feature=youtu.be besides the weird glitch at the end, I don't understand why it slides around instead of staying in one place.


text:
My Model is not rendering after adding hair !! The uploading BVH value goes to 100 % and the blender program closes
There maybe some possible outcomes .. i rendered it succcessfully without adding the particle system : hair !!

It appears you already asked this question - http://blender.stackexchange.com/questions/49708/blender-crash-while-rendering-image-after-building-bvh?rq=1. Please don't post it more then once; edit original one with more details / screenshots / blend file.

Sir,This is not a duplicate ..in last question i asked about not rendering ..but in this i gav the reason also ..that hair is not rendering,,it is crashing ..https://www.youtube.com/watch?v=LCghBIUZyuM
i am following this video ....Anyways in last post my doubt was not cleared !!!!!


text:
How can I use Blenders Face Maps as a Selection input for Geometry Nodes?
I'm trying to delete specific faces from my model in a Geometry Nodes node tree. What I am looking for is an easy way to manually specify which faces should get deleted. Deleting vertices is not an option, as the vertex area changes with the amount of subdivisions on the model (the selection then grows in an unwanted fashion, while face maps and material index data remains stable). Blender since a while offers the beautiful Face Maps in the mesh tab, which are perfectly suited for such a task.
What I'm missing is how to access that data from Geometry Nodes. Is there a way to do this? At the moment I'm working around the issue by abusing the Material Index data. Kind of does the same, but using Face Maps would be more flexible and a lot cleaner.

Short and sweet: No, definitely not possible.

Face maps cannot be used in Geometry Nodes, unfortunately.
In Geometry Nodes you can only process data that is stored in a specific domain (Points, Edges, Faces, Face Corners, Instances). Face Maps, however, are not stored in any of these domains, but have their own data area, which contains Faces.
"Face Maps create custom gizmos to deform meshes by assigning faces to Face Maps." Source
So this is unfortunately the only valid answer to your question.


text:
Geometry Nodes: how to compute a difference between every point position and a vector?
I'm trying to connect some points to a "target" object.
I managed to create a GN setup to connect a curve between two points, then i've instanciated that setup on points :

But now, I would like to join all the curves on the empty that controls the animation.
I guess I have to compute a target position that would be computed based relatively on each point position.

How can I do that ?
Here's my actual blend.
Thanks !

If your question was solved, please be so kind and mark the answer that contributed to the solution as "Accepted Answer". This will make it easier for others to see which way leads to the solution, and the question will no longer appear as unsolved. Thank you! Here you can find more information: What should I do when someone answers my question?. If you still didn't get a solution to your question, please be kind enough to address it.

I'm not answering your exact question here, but your actual problem:
Since all your curves are an instance of a single curve, you can't subsequently change them the way you'd like once they've been instantiated.
That is, you can change the mesh at any time, of course, but you want access here to the individual parameters you have available when you create a curve.
Therefore, to be able to edit the instances afterwards, you would have to use the Realize Instances node.
However, this does not work with your curve of the type Quadratic Bezier. If you use this curve with Realize Instances, you have the single splines, but many points instead of beginning, middle and end.
Therefore, you would have to create a simple curve before instantiating, then instantiate, turn the instances into individual curves using the Realize Instances node, and then start editing the curves there.
Since you have curves with two points (start, end) at the beginning, you can divide them into several parts with the Subdivide node and change the points as you like.
In this example, I set the endpoints all to the same position, and apply an offset to the middle points.
This example translated into Geometry Nodes looks like this:

And here is the blend file:

+1 nice one!!!!

Thanks for this great explanation!  So, if I understand correctly, instances will always behave as… instances, even if, in this case, my instance is a node group (which has a « target » param) ?  So when I want to customize those instances, I have to Realize them ?

Yes, instances are a "copy" of an object as long as you don't separate the copies with "Realize Instances". But in Blender language, it should correctly be called "Linked Duplicate", not "Copy". Although instantiated objects have their own transformation, the object data are identical to each other.

if you change your node setup like this:

you get this:

Note: if you ever change the resolution of your curve, you have to adapt the 17 in modulo and the 16 in divide. But i think you know how to do that... ;)
and of course you can then give the curve again some bevel:

then it looks better:

little explanation:
I let the curve be as it was, but i didn't gave a profile circle here:

by that i can access and change your curve with resolution 16.
I move the endpoint of the curve to the emptys location and all other points in between by the mix node with the factor according to their position. So the nearest to the empties point will get 15/16 of his curve position to the empty, the most far away get 0/16 of the mix of curve position to the empty -> that's the curve point itself. It's a cheap trick, it won't make your curve nicer, but maybe you are satisfied with that.


text:
any way to inspect the value of a node's unconnected output socket?
I know that you can inspect the value of the output socket of a geometry node when hovering it.  That is nice.

But is there a way to inspect the value of the output socket of a node when it is not connected ?
I guess that unconnected sockets are not computed to spare memory.
But it makes debugging more difficult.
It would be awesome to have it computed somehow, eg. when pressing a key while hovering the socket.

i think you are totally right. It makes no sense to compute something which isn't used at all. Not just to spare memory, but even more important: to be more performant.

Well, you link to the manual where it is clearly stated, no need for speculation: "Socket values are only logged from when the node tree was executed, so a node must be connected to the Group Output to have a value for inspection. Values are not logged during rendering, to improve performance." So, no values if the socket is not connected. If you still want to inspect them, you should maybe connect them to a Viewer node and inspect them in the Spreadsheet.

@GordonBrinkmann seems like a reasonable answer to the question :)

Idea suggested on right-click select here.


text:
Geometry Nodes : is it possible to get the acceleration/speed of an attribute?
Is there a way to get the acceleration or speed of an attribute, for instance about the Z location of a point ?
Having this would permit to work on effects like bounces.
Thanks !

GN doesn't work with physics yet

I think that this is not really about physics.  An acceleration could be computed if we were able to, let's say, to get the value of something on the X last frames.

Just use the field at index node and calculate the location of the vertex/object from another frame, then you can subtract between e.g. loc(x) - loc(x+1) so you get the location difference. You know how many frames are between these location, so you will get the (average) speed which is (loc2 - loc1) / time_difference

You could "bake" the positions of each point into an array with python, create a path with this positions and use it in GN.

@quellenform etc  It would really open up GN if you could implement feedback/recursion, by modifying an incoming attribute, and stashing it back out as vertex-weights/colors.. refreshing per-frame. I've tried.. even with double-buffering. No luck.

Finally,it comes!!! We can do reaction-diffursion https://m.youtube.com/watch?v=-gIk_ZH4ySE


text:
Exporting to WebGL
I want to create models for website and interact with it. I chose Blender since it is open source. My intention is to create some model, say a table and export to webGL. How can I export the model using Blender in order to view it in a webpage? Thanks.

For Blender prior to version 2.6 you can use the Blender WebGL exporter wich exports to json..It supports native WebGL. Looks like the script is no longer maintained..
I think you should also have success with formats like obj, collada or md2.

The link says the script will not work for 2.6+. (https://code.google.com/p/blender-webgl-exporter/wiki/InstallScript) Have you used this for v2.74?

@Kaushik I see, the scripts is no longer maintained .. I looked into it and the is too much to repair to work in 2.6+.. Does your model use something specific to v.2.6+? Otherwise you should be able to export from older blender..

I am not specific about versions, want to give it a try.


text:
Using VSE. Rendered video and now nothing is showing up.
I've been using the VSE for awhile now and have yet to encounter this problem.
I finished editing my video and clicked render animation. Everything seemed to be going fine. After the video finished rendering I went back through to watch the rendered video and it was just a black screen with no sound. Image overlays I had added to the video would still show up at the appropriate times, but no video or sound.
I tried reloading the file and restarting Blender, but neither of these things works. Can anyone give me any advice? It took me 3 hours to finish editing this video and now it's just gone.

Is it possible that the video files that the strips are pointing to have been moved or the path has changed in some way?

You should really provide some more details or upload a blend file for further investigation.

Possible duplicate of Preview and rendered video from VSE suddenly shows nothing

Related: http://blender.stackexchange.com/q/44720/2843

In order for overlays to actually overlay existing video, you need to add an effects strip to tell Blender how to mix it. Generally I use the alpha over strip, but there are other options like alpha under, add, subtract, etc).
Otherwise, the VSE takes the top most strip and uses that. Without the effect strip all you'll see is the overlay and nothing but black.
Now if you had some B-roll or stock footage or images that will cover the whole screen, then you wont need a effect strip. Just make sure it's in a higher channel than any other video channel.


text:
How do I name a mesh using Python, when I don't know its present name?
In a loop, I'm calling bpy.ops.mesh.separate(type="SELECTED") to separate some faces into new meshes. The newly created mesh doesn't seem to automatically become the "active" object, and so it seems like I need to know the name of the newly created mesh before I can rename it.
I'd really like to have the script be able to give these new meshes a meaningful name. However, trying to figure out what they're getting called by default is proving very tedious.
Is there any easy way to do this?

related: http://blender.stackexchange.com/questions/9207/script-to-separate-an-objects-mesh-without-using-bpy-ops?rq=1

I made http://web.purplefrog.com/~thoth/blender/python-cookbook/find-new-objects.html to solve this problem:
import bpy

scn = bpy.context.scene
names = [ obj.name for obj in scn.objects]

bpy.ops.mesh.separate(type="SELECTED")

new_objs = [ obj for obj in scn.objects if not obj.name in names]

print( [ obj.name for obj in new_objs ] )

There are shortcomings with this approach if your scene has objects linked from external .blend files (because the .name is no longer guaranteed to be unique).

I think it's pretty simple. Let's take an object called cubes which is one mesh consisting of several disjoint cubes that you want to separate.
# with some selection, running: separate()
cubes -> cubes.001

# with some selection, running: separate()
cubes.001 -> cubes.002

if you then deleted cubes.001 and ran separate() on cubes.002 blender will automatically find the earliest unused object name
# with some selection, running: separate()
cubes.002 -> cubes.001

I think this is how it works, at least there's a logic to it. (Tested by seeing what happens in the outliner if I do this manually for a few iterations.
The reason this isn't a very convenient process is because you are calling a function which is used by the user interface, and doesn't need to return the names of the new objects.

A simple snippet using Python's Set class to find out which scene objects are new in the scene after such an operation is:
# before
A = set(bpy.data.objects[:])

# after operation
B = set(bpy.data.objects[:])

# whats the difference between sets
new_objects = A ^ B
print([o.name for o in new_objects])

I did not know about ^ or that it would work on objects as well as strings.


text:
"Select Interior Faces" buggy and unpredictable?
I wrote a tool that outputs a Blender python script that generates a given Minecraft world in Blender using the fewest cubes possible. It's working great, but I'm having terrible difficulty trying to remove interior faces (for optimization reasons).

After I "Remove Doubles" the "Select -> Interior Faces" will select several faces. However, some of them are actually exterior faces and it doesn't even detect a significant number of interior faces.
I don't think there's anything strange going on with my geometry; the vertices are all snapped to the grid, and nothing overlaps.
Is "Select -> Interior Faces" just poorly implemented in Blender? Or is there precursory steps to using it?

The select interior faces algorithm doesn't really seem to select interior faces.. Related: http://blender.stackexchange.com/questions/18916/how-to-remove-interior-faces-while-keeping-exterior-faces-untouched/18931#comment26929_18929

First, it may be useful examine this in wireframe display, instead of the solid display you have in the screenshot in your question. I suspect the reason why some of what are marked interior might be more obvious that way.
Whether the problem is a bug, will depend in part upon how one defines what a bug is. I suspect that in this case, the software is working as designed, and the problem lies in the difficulty in describing for the software what an constitutes an "interior face". The best definition of "interior faces" I can find is in the hint that appears if you hover the cursor over the "interior faces" option of the select menu in the 3D viewport in edit mode. That reads

Select faces where all edges have more than 2 face users.

which explains why some faces that appear to be exterior faces are selected in your screenshot. For example in the center of your screenshot are three exposed faces which are showing to be as "interior" Examining these closely, you will see that each of the edges of these faces is connected to three different faces. For example, the leftmost edge of the left face is connected to the two fades one can see on either side, and then also connected two the face perpendicular to these two. Examining the other three edges would reveal that each edge is part of three faces, and by the definition of an inside edge as given in the tool tip, the face is interior.
There are also classes of interior faces that the algorithm would not catch. An example of one of these is an interior face in a cube defined by the lower far left, the upper far right, and upper near left vertices. When displayed solid, it is obvious that this is an interior face, but none of the edges belong to more than one face, so it would not be reported by the "select > Interior faces" option.
I don't know that I'd say the algorithm is poorly implemented, but it might be that this may be a good implementation of an algorithm that is not the best one for your purposes.
You might find the algorithm associated with the "Non-manifold" option from the select menu item (shortcut SHFT-CTRL-ALT-M to give more satisfactory results, although I don't know how this algorithm is different from the "interior faces" one.
You might also reconsider how your tool that generates the python script, is generating a new cube? The screenshot suggests that you may be generating the new cube by adding a new cube mesh primitive. If this is so, it might result in the kind of interior faces you are seeing in the screenshot. As an option, you might modify your python script so that where you need a new cube, check to see if will be attached to the existing mesh. If it is, then check to see if there is a common face between the new cube primitive and the existing mesh. If there are no common faces, check for common edges between the new cube primitive, and the existing mesh. And if there are neither any common faces, nor common edges, check for common vertices. If there are common vertices, edges, or faces, then create the needed geometry by extrusion from the existing mesh, rather than adding new primitives, because extrusion should reduce the number of interior faces. Of course, if you need a cube where you don't have an element to extrude from, then you'll have to add a mesh.


text:
Nested Particle Systems
I have a hair particle group, that takes buildings from a building group, and places them on a grid. This works perfectly fine. I recently added an emitter system to each of the buildings in the building group to show random lit windows. It shows perfectly fine in the preview when looking at the group of buildings, but when looking at the hair particle system, the buildings show as usual, but the emitter doesn't work. There are a few other buildings using the same emitter system in the scene that are not in the building group, which the emitter system is working fine.
It works fine if I convert the emitter system, but is not ideal. Is there a way to get this nested particle system to work, without converting?
Thanks in advance.

Particles on particles is not supported yet. I think there might be an addon somewheres for it, but you'll have to look

@NoviceInDisguise ? This worked the last time I tried it

Oh! I see what he was asking. I immediately thought of the whole hair particles on hair particles thing.

Excellent gandalf3, thank you. Leave it to the wording to allow the one relevant particle system post to evade me.


text:
How to constrain emission particles?
So, I'm attempting to create random lit windows for buildings in a scene, and someone suggested using a particle system and use the textures as emission planes. So far I can create the lights, but getting them where I want them, and making them the size of the faces is another story. Here's what is happening:

Above I tried setting up a mesh that consisted of faces for each window (green), and a vertex group to go with it (weight 1.0). I couldn't get the particles to stay in the faces as shown. I also moved the particle system to the building, and used a copy of the specular map texture to control it, while using the influence of size/length (1.0) for the particles. Still, the result was like the above.
It feels like I'm missing something small, but not obvious. I'm wanting the emission to come from the separate faces, or from the black portions of the texture, as well as each being the size of each. Can anyone shed some light on this issue?
Thanks in advance!

Could you provide a .blend, or at least give an image of your particle settings? Currently it's really hard to tell what your having trouble with, especially since the screenshot you provided doesn't really show anything.

I cannot. Some models are not to be disclosed, as well as their textures. Sorry. :(
Any information to help me understand the system's placement, and using textures to control it would be a huge help. Still-life and the emitter system doesn't seeing to be a popular topic from what I've found on my own.

Animation below.

In the image below note the settings Particles/Face set to 1. Face Jittered Random. These setting respect the faces created in the geometry.  This the preferred setting for more varied geometry. The image has an extra windows on the right side to show how these settings respect faces.  Plane subdivision is a requirement.

Ah, that would make a lot of sense. As you may have noticed, I'm using a square plane, so instead I will create copies of the faces as these emission planes, and randomize.

I'm really not sure why I thought I could fit different sized emitters to faces that were different shapes, but I did. Even this building in the screenshot is the same size as each part of the grid for the hair particle system it's a part of.

You [may be able to] through scaling. I am suggesting you consider that as a premium event. More work.

Thank you again.
Even though the windows are textured, I found a way around that. Now I have the light plane, or cube rather, inside the building model. The building texture has a slight tweak, where the glossy from the spec is mixed with a transparent, with the spec map driving the factor. Now the light can go through these virtual windows so the light gets out, and the gloss disallows to see through the building.
I'm definitely going to play with particles a lot more now. This is great. :)

Did you use particles per face ..................... or grid?

I used the jittered per face method.


text:
is it possible to build a material that would render like an old print?
Would it be possible to build up a material that would look like an old print (I don't know the word in english, is it "engraving" ?) ?
Just wondering.
Tell me if you got ideas on how to make this !

Hello :). Yes, this looks like metal engraving. Using Freestyle lines would probably be easier than setting up a whole material.

I know about freestyle, but it is far from this. Anything I could start from ?

related: https://blender.stackexchange.com/questions/168636/tapering-textures-with-nodes

Thanks to @Bruno's answer, I found out that, which is quite amazing ! https://blendermarket.com/products/komikaze


text:
viewport shading : how can I enable light presets in the viewport?
I'm watching a tutorial an noticed that its author has a default light setup enabled (HDRI in the background, two spheres in the right bottom corner).

I would like to use this, but cannot find it in the viewport shading options.
How can I enable it ?
Thanks !

Turn the World Opacity up to 1.

He is in Material Preview mode, in this mode you'll have the default HDRI effect but you won't see it as background. In order to see it and the 2 spheres you can directly choose the Shading workspace:

Or in the Viewport Shading push the World Opacity up to 1:

and in order to see the 2 spheres, in the Viewport Overlays, enable HDRI Preview:


text:
(Animation) Nodes : how to map a rotation to a value between 0 & 1?
The Parameter input of the Evaluate Spline, in Animation Nodes, needs to get a number between 0 & 1.
I would like to map it to the rotation of an empty (here, Effector-Spline-Loop).
No mather what the Y rotation is, I need to always have a value between 0 & 1.

0° -> 0
180° -> 0.5
360° -> 1
540° -> 0.5

How should I improve my nodes ?
Thanks !

the Map Range Node is what you are looking for. It takes the input values (min: 0, max: 360) and maps it to the target values (in your case 0 to 1).
Combine that with a Float Math Node set to modulo of 360. this way you'll only get values between 0 and 360 (540 returns 180 so the map range node will output .5).
separate Euler -> math node -> map range node.
Edit: final nodetree

Almost got it.  But can't get it to work with the modulo: it only works between 0 & 360 for now - what am I missing ? https://imgur.com/a/pugBE
PS will it work with negative values too ?

@gordie Are you putting the "modulo" operation to the right or to the left of the "map range"? If it's to the left, it must be modulo 360, otherwise modulo 1.

Got it ! https://imgur.com/a/h6pVv Thanks a lot !

Great. If I'm not mistaking the output of modulo is always positive no matter the input. So it should work just fine.


text:
Alt Click to Rotate View + Loop Select
I've found that I can't set Alt + Left Click to both Rotate Viewport AND keep Loop Select. Rotate View works in Object Mode, but in Edit Mode Alt Select only works for Loop Select.
Is there a way to make them both work at the same time? If I'm clicking in empty space it should do Rotate View, and it should only Loop Select if I'm clicking on an edge
Using Blender 2.77
Thanks

I don't think Blender is as smart as Zbrush or other software where hotkeys are context sensitive on what is under cursor.

The default behaviour of Blender for loop selecting is Alt+Right Mouse Button. I think it's best to use one shortcut for loop selecting and another for rotating the view because, after all, you may want to rotate view when mouse cursor is over an edge loop not only over empty space.

Thanks @MrZak and @Jerryno yeah I've set it to Ctrl+Alt+Left for the time being, I think that will probably have to do


text:
Blender Keymap presets - how do they work exactly?
I'm having trouble understanding the keymap presets system. I create a new keymap preset, then with that preset selected I go and edit some keys. Then I go back to the default Blender keymap but... the one I edited in my preset is also written to the Blender one? If I restore the keymap in the Blender preset then the changes I make in my preset are also restored.
A similar question has been asked previously to which a comment was made linking to a blender developer site that states that this is in fact by design. My question is then how are you supposed to use the preset system if every change you make is applied to all keymaps?
Am using 2.83 but have tested this behaviour is the same going all the way back to 2.79

As a workaround you can create your own custom keymaps and save them to a file (they are just a python script) use the import and export boxes at the top.

Could you explain the purpose of presets if editing one edits all of them? I really do not understand.

I'm not sure I fully understand your question Arvin, but I believe there are two approaches for you:

Edit the entire blender default keymaps to your liking, and export the entire keymap and save it as a file via Edit >> Preferences >> Keymap >> Export

OR

If you intend to be able to quickly toggle on and off different modular sets of keymaps, then as @susu suggested, you may want to set up python scripts for each module of keymap modifications, which you can then toggle on or off individually from the Addons pane

Here is an example of a script with two custom keymaps, being used as an addon to modify a custom operator, which is then available for keymap editing via the Edit >> Preferences >> Keymap pane


text:
How can I integrate the reflection of CG object over a photograph?
So I'm trying to learn some basic VFX to do CGI in the future, and I've started by putting 3D objects in an image. So far, I've got the shadow catcher working, but I can't figure out how to make the cube reflect (?) on the table without reflecting the color too.
As you can see in the picture above, the aside from the shadow, the real object is being reflected into the table, but in a shadowy way (in the red rectangle). Can anyone help me with this?


text:
Duplicating a cloth without rebaking?
I'm messing around with physics simulation (it is so frustrating) and I have a question. I have a flag waving around (baked) and I want to duplicate that flag, so I can have different country flags waving around in the same way as each other, but I still haven't figured out how to do that. Is there a way to save the baked simulation as some kind of file and import it to other meshes?

Export the animation as .mdd file (enable export mdd addon in preferences). Choose the right fps and start and end frame of animation.
Now you can delete the cloth modifier from your flag object and delete all caches.
Add a Mesh Cache modifier to your flag and load the .mdd file with your animation.
Add a material slot and change it's link from Data to Object. Your flag copies will share the same mesh but will be able to have different materials.
Duplicate your flags with AltD. The Mesh Cache modifier will be copied to all the flags also.

You might want to use the technique outlined at http://blenderartists.org/forum/archive/index.php/t-212710.html?s=fc9dd18317cca20fab0669fd2eb76dff where you go frame by frame and save the sim results as a shape key.  Making all the duplicates and unifying them onto the target mesh are probably the trickiest bits.
Looping cloth sims is also super hard.  You might want to come up with a procedural loop as shape keys using python, but that could take a veteran an entire afternoon to code.


text:
Why is this little program of logicbricks not working?

Little explaining here: When the message "lap" is sent, this object should copy a property from another object "TIME" to the property "current" that's on itself. Than, as soon as "lap" is being sent again, the property sensor should check if the property "current" that is changed, because of the message, is less than the property "Text" on this object. If so, it should copy the property "current" to the property "Text" on the same object and make the object visible. There's one problem though. It works only once. The Text property is in first place set to 10000 so that it's kind of impossible to have a value higher than "Text" because it's a timer. So If I go over my finish line and the "lap" message has been sent, the "Text" property changes to the time I needed for the lap and makes the object visible successfully. But when I get a faster time, it doesn't seem to change the "Text" to a lower value.
I have been playing around with some options but I can't seem to get it done.
Someone who can help me?

You need to enable "True-Level-Triggering" on the message sensor. Also, make sure the massage is sent every tic on the object that is sending: also can be done by enabling TLT on one or all of the sensors.
True-level-Triggering makes the sensor send new positive pulse every logic tic that the sensor is active, rather than just once, and the a  negative when inactive.
It can be enabled with the little three dos icon on the left of the sensor.


text:
Why is the acc variable jumping back to 10?
I have this code:
import bge
import math
import time

cont = bge.logic.getCurrentController()
scene = bge.logic.getCurrentScene()
own = cont.owner
act = cont.actuators["Action"]
act1 = cont.actuators["Action.001"]
mot = cont.actuators["Motion"]
Empt1 = scene.objects["Empty.007"]
Empt2 = scene.objects["Empty.008"]
Empt3 = scene.objects["Empty.006"]
end = cont.sensors["Actuator"].positive
col = cont.sensors["Collision"].positive
finish = cont.sensors["Col1"].positive

acc = 10
walk4 = False
print(Empt1['Interval'])
print(Empt2['Interval'])
print(Empt3['Interval'])

if Empt1['Interval'] >= acc:
    walk1 = 1
else: walk1 = 0

if Empt2['Interval'] >= acc:
    walk2 = 1
else: walk2 = 0

if Empt3['Interval'] >= acc:
    walk3 = 1
else: walk3 = 0

if ((walk1 + walk2 + walk3) == 3):
    walk4 = True

if walk4 == True:
    cont.activate(act)
    cont.activate(mot)

if not end:
    cont.activate(act1)

xyz = own.worldOrientation.to_euler()
rotx = math.degrees(xyz[0])
roty = math.degrees(xyz[1])
rotz = math.degrees(xyz[2])

if not 'init' in own:
    own['init'] = 1
    own['timer'] = 10.0

own['timer'] += 1.0 / bge.logic.getLogicTicRate()

print (rotx, roty, rotz)

loc = own.worldPosition
print (loc)

if col:
    own['timer'] = 0.0
    print("THAT HURTS!!!!!")

if (own['timer'] > 1.5) and (own['timer'] < 1.8):
    own.setAngularVelocity([0.0, 0.0, 0.0],0)
    own.setLinearVelocity([0.0, 0.0, 0.0],0)
    own.worldPosition = [0.0, -6.83, 1.12]
    xyz[0] = math.radians(0.0)
    xyz[1] = math.radians(0.0)
    xyz[2] = math.radians(0.0)
    own.worldOrientation = xyz.to_matrix()
    acc = acc + 10
    walk4 = False
    cont.deactivate(act)
    cont.deactivate(mot)
    print ("TIMER ERROR! BIG PROBLEM!!!!!")

print (own['timer'])

if finish:
    own.setAngularVelocity([0.0, 0.0, 0.0],0)
    own.setLinearVelocity([0.0, 0.0, 0.0],0)
    own.worldPosition = [0.0, -6.83, 1.12]
    xyz[0] = math.radians(0.0)
    xyz[1] = math.radians(0.0)
    xyz[2] = math.radians(0.0)
    own.worldOrientation = xyz.to_matrix()
    walk4 = False
    cont.deactivate(act)
    cont.deactivate(mot)
    print ("FINISHED")

print ("walk1:", walk1)
print ("walk2:", walk2)
print ("walk3:", walk3)
print ("walk4:", walk4)
print ("ACC:", acc)

As you can see that whenever col is positive the acc variable should become 10 numbers bigger. It does do that, but it then quickly switches back to 10 for some reason, according to the console.
What's the reason for this?

Every frame you are assigning acc = 10.
to avoid that and make it persistent assing it as a attribute og bge.logic
from bge import logic

if not hasattr(logic, 'acc'):
    logic.acc = 10

Then can use:
if anything >= logic.acc:
   logic.acc += 10

I suggest to store this variable in a property.
acc = own.get("acc", 10)

when the variable changes write it back to the object.
acc = acc + 10
own["acc"] = acc

When you use the same script at controllers of the same object they all share the same value.
The value is not shared on scripts of different objects.


text:
How to remove personal data from a blend file
How can I remove personal data from a .blend file?
I was asked to upload a .blend file in order to reproduce the issue. I removed all objects from the scene as far as possible and also removed all Python code as far as possible. This is good: it makes the file small, the sources for potential problems are eliminated and you can focus on the real problem.
However, when I look at the .blend file with Notepad or a Hex editor, it shows many paths on my system, which include my user name and other information. Note that I don't have any external references to files (like textures).

For this time, I can replace the personal data in a Hex editor, however, this is not a good approach in general, because

it only works as long as the file format does not use a checksum to verify the integrity of the file. (So I'm lucky it works for .blend files)
it only works as long as the file is not compressed, because changing a compressed file breaks the compression. (Strange enough that the .blend file is still the same even if I use compression)
if you accidentally delete a character (so that the file becomes smaller), the file becomes invalid
you need to know in advance what you're looking for (you need to know the search term) - and there might be many
it's a lot of work to do for something which doesn't bring additional benefit

What happens if you delete the references to the paths.

@Vader: It is possible to replace it, not to delete it. I can do it that way this time, but see my updated question for the reasons I'd not like doing that in the future.

What about re-opening the file after restarting blender, and saving it out again? Not sure if this will do anything, but I'm guessing it may clear any data it doesn't need.

When you say many paths, what do you mean? I checked a file and only found 3 occurrences of my username, having saved the file on my Desktop.

@iKlsR: I have received the file of a colleague. The file contains paths from my PC as well as his PC. One of them refers to my Desktop, although I didn't save the file on the Desktop. In total I have 7 paths (not necessarily different) in the file which I could immediately identify as personal data. I have 10 occurrences of C:\, which at least identifies me as a Windows user.

The best way I found is to carefully append objects from another file in a new one. It was easier in blender < 2.5 because the outliner was a bit more advanced. Removing all references was always hard tho. At least it can remove some thumbnails to reference images etc.

As far as I know, there is no way to strip this information from a .blend file without editing the file itself as you have done and that has its own set of cons.
Option 1
Work at the root directory of your system. ie. C:/personal_folder/ or on a portable medium. You say you don't have any images or such attached so this shouldn't log anything private such as your username or any other personal paths provided you don't import anything and all you have is a model.
Option 2
Export to another format and reimport back into Blender. Exporting to a simple format such as .obj will only export mesh data (if all you have is a mesh) and same goes for importing it back. I did this with a file saved on my desktop and the only instance I could find with personal info was the location to the file. Use this with method 1 for optimal results.
As it addresses your other privacy concerns, being identified as to what OS you're on is fairly useless information and if you're sharing a file here, you might even be asked what os you are running so provided that no personal paths are included you should be fine.

Quick Answer:
You can use the python scripting tools to remove filepaths with a single button press. The script below will add a button to the topbar in File > Clean Up > Clear Filepaths to replace all filepaths in the file with the letter b.
import bpy
from bpy.utils import register_class, unregister_class

bl_info = {
    "name" : "Clear Blender Filepaths",
    "location" : "Top toolbar > File > Clean Up > Clear Blender Filepaths",
    "description" : 'Removes personal filepaths from your blender file',
    "blender" : (3, 6, 2),
    "category" : "System",
}

class cbf(bpy.types.Operator):
    bl_label = "Clear Filepaths"
    bl_idname = "cbf.cleanblenderfilepaths"
    bl_description = '''Save an uncompressed copy of your .blend file with personal filepaths cleared like
"C:\\Users\\my username\\Embarassing folder name\\", and
"D:\\Personal stuff\\Oh shoot I can\'t believe this was saved to that blend file I put on Gumroad\\"'''
    def execute(self, context):

        #don't run if the file has not been saved yet
        if not bpy.data.filepath:
            return {'FINISHED'}

        #save the file as an uncompressed file next to the original
        bpy.ops.wm.save_as_mainfile(filepath = bpy.data.filepath.replace('.blend', '_cleaned.blend'), compress = False, relative_remap = False)

        #collect all filepaths
        filepath_list = []
        def add(this):
            if this and (this not in filepath_list):
                filepath_list.append(this)

        for cat in [bpy.data.images,
                    bpy.data.objects,
                    bpy.data.linestyles,
                    bpy.data.materials,
                    bpy.data.node_groups,
                    bpy.data.texts,
                    bpy.data.cameras,
                    bpy.data.lights,
                    bpy.data.meshes]:
            for item in cat:
                for check in ['filepath', 'filepath_raw']:
                    if getattr(item, check, None):
                        add(getattr(item, check, None))
                    if getattr(item, 'original', None):
                        if getattr(item.original, 'filepath', None):
                            add(item.original.filepath)
                    if getattr(item, 'library_weak_reference', None):
                        if getattr(item.library_weak_reference, 'filepath', None):
                            add(item.library_weak_reference.filepath)
                    if getattr(item, 'packed_files', None):
                        for packed_file in getattr(item, 'packed_files', []):
                            if getattr(packed_file, 'filepath', None):
                                add(packed_file.filepath)

        add(bpy.data.filepath)
        add(bpy.context.scene.render.filepath if bpy.context.scene.render.filepath != '/tmp\\' else None)

        #read the whole file in and check for any filepath instances
        original_filepath = bpy.data.filepath
        file = open(original_filepath, 'rb')
        raw_data = file.read()
        for path in filepath_list:
            raw_data = raw_data.replace(path.encode(), b'b'*len(path))

        file.close()
        #overwrite the file with filepaths replaced as 'bbbbbbb'
        file = open(original_filepath, 'wb')
        file.write(raw_data)
        file.close()

        #close blender so the cleaned file is not accidentally overwritten
        bpy.ops.wm.quit_blender()
        return {'FINISHED'}

def menu_draw(self, context):
        self.layout.operator("cbf.cleanblenderfilepaths")

def wrap(register_bool):
    register_class(cbf) if register_bool else unregister_class(cbf)
    bpy.types.TOPBAR_MT_file_cleanup.append(menu_draw) if register_bool else bpy.types.TOPBAR_MT_file_cleanup.remove(menu_draw)

def register():
    wrap(True)

def unregister():
    wrap(False)

if __name__ == "__main__":
    register()

Longer answer:
Despite being an open source program, there seems to be little information on this topic, and this page has the most info I’ve found on PII in a .blend file so let’s sum up all the info and add some more.

Editing an uncompressed save file for filepaths is possible if the resources are packed into the blend file, but you need to know exactly what you’re looking for.
Editing a compressed save file seems to be possible as long as the amount of characters in the filepath remains the same. However, editing a compressed file will lead to the hex editor missing a path due to compression obfuscating some filepath strings. I have manually edited a compressed save file and removed all instances of any relative or absolute filepaths, but I reopened the compressed file in blender and was still able to access the library_weak_reference.filepath attribute that contained one of the directories I just removed in the hex editor.
Working in a higher up directory will still save those directory names to the blend file, and the blend file can still be “contaminated” if you import or append something from a .blend file located in a personal directory containing your username. Exporting everything to a different format then reimporting works but is not feasible for large projects with many objects that would have to be reimported. All materials would also have to be recreated from scratch (see library_weak_reference issue below, this would apply to appended materials)
It may have worked in previous versions, but for me, attempting to delete a DATA block containing a personal filepath in a Blender 3.6 save file resulted in blender just loading the default scene. I’m guessing Blender thought the file was corrupt and didn’t attempt to load it.

So in a typical usage scenario it looks like it is unavoidable to have filepaths in the .blend file. How can you know what filepaths are being used in the file? And can you edit them in Blender itself? From what I’ve gathered, there are a few places to look in blender for filepaths using the python api:

The current file’s directory accessed with bpy.data.filepath (not completely sure if this is saved to the .blend)
The render output filepath accessed with bpy.context.scene.render.filepath
Absolute and Relative directories where images were imported from (accessed with bpy.data.images[0].filepath, and bpy.data.images[0].original.filepath)
Absolute and Relative directories from packed images accessed with  bpy.data.images[0].packed_files[0].filepath
Filepaths to other .blend files from which objects, meshes, node_groups, materials, etc were appended from (check bpy.data.objects[-1].library_weak_reference.filepath after appending an object and it will show you the filepath to the blend file you imported it from)

Filepath variables can be set using Blender’s python api, but library_weak_reference filepaths are read only, so we are forced to edit the file with a hex editor or script to remove all filepaths. That makes the process…

Pack all files into the blender file
Save the blender file as uncompressed
Use the Blender Python api to walk through the bpy.data structure until all filepath instances are found
Use a hex editor or a script (like the above python script) to clear out all filepaths found in the file with a random string of the same length (like bbb)
Inspect the file with a hex editor to confirm all filepaths have been removed
Re-open the file in blender and walk through all filepath instances again to ensure all filepaths have been removed

Using this method with what I would consider a typical file (containing multiple mesh objects with multiple materials and dozens of packed images) resulted in no personally identifiable absolute or relative paths showing in a hex editor.

I edited this answer as it seemed to be incorrect.
When you find personal information in your .blend file (such as folder names), you can delete the entire DATA block that includes that information and the file is likely to still work. Do this in a copy to avoid mistakes.
Using any free hex editor (such as HxDen), open the .blend file and search for the personal information that you found in the .blend file.
Personal information is usually around this string: "Save As Blender", without the quotes. Try searching for it.
Now click-drag select starting from and including the "DATA" word that precedes the information that you want to delete, and select all the way until you reach the next "DATA" word. Stop the selection right before the next "DATA", don't include it in the selection.
Press delete, save the file, open it in Blender and save it again so that any bad formatting is restored, if there was any.

I couldnt find a way to remove my user name and home directory, so what I did was to replace it with the exact same amount of letters, for ex: /home/myusername/ became /abcdxabcdefghij/ or the file will break on loading. I did not mess with / tho (it is like that because I use linux). I did not try your method tho :>. Also better not let blender compress the file to avoid being unable to edit like that.

Short answer:if you are concerned about leaking info, do your work on a different computer or user account and it may solve some of the problems since this is very difficult to contain.
This is still relevant in Blender 4.2  and no easy way to go around it. There is a lot of metadata leaking into export files as well. E.g:  even if all your textures are packed and no absolute or relative path is needed, the fbx export file metadata will still preserve the path of the original blender file from which it was derived.  Exports default to absolute paths and no image packing and many users don't know it. This is  one of the reasons why many models you can find around the internet have bad or quirky texture information referring to the original directory structure of the file export.
The glb/gltf export format seems to be somewhat cleaner.
However, all the texture files are packed together with the metadata inscribed by the last image editor program used to alter the image. For instance if you edit a texture for a material in an external program like GIMP or Photoshop all the metadata packed by these programs into the image files will be preserved by the Blender export. Such metadata may include: creation time and timezone, full path of the file, OS version,library version used for export. If you sample texture with a camera and it has geolocation metadata enabled then this can also leak. This is somehow to be expected though since it's not Blender's responsibility to clean up the images, but still, you have to mind the entire toolchain used.
Although sometimes you may want such metadata recorded - to help you index your family pictures for instance - it's likely you may not want it exposed to the public in your sampled textures that you upload to the web. So, different user profiles or workstations may come in handy.