text:
2.8 Solid view turn off transparency?
I am trying to figure out how to disable transparency in solid view. I can disable it in LookDev via the node editor, but not sure in Solid...

The transparent surfaces are sitting on top of transparent pixels, but these pixels do have color information (as seen in the image above)...

I like the solid view for ease of Flat shade and other aesthetic preferences, particularly for texture painting...
Appreciate any help!

Press Z then hit 2.
It also has options for LookDev, Rendered, etc.

Z changes to wireframe view, and 2 changes to 2nd collection...

Hm, That hasn't been the case with blender 2.8 with me. When is the last time you downloaded blender 2.8?

It was on Monday, so four-ish days ago

This is strange because hitting z to go to wireframe view is the 2.79 way to do things. How do you go to rendered view with your blender?


text:
Dual brush function in texture painting?
I am wanting to mimic the 'dual brush' function from brush settings in Photoshop, with texture painting in Blender. Essentially, what I am after is the ability to have either two brush textures that I can blend between  in a single stroke, based on pen pressure. Or two whole brushes i can blend between based on pen pressure. Does anyone know if something like this exists?
Fyi, I am trying to recreate Dave Grecko's DG_Main brush from this link: https://youtu.be/-oPp6NE4WL8?t=50
Thanks for any help!
EDIT: Answer is below, thanks! There is a function I can work with to get close enough to what I am after :)

Are you looking for two different textures, or a single texture across multiple colors based on pressure? A simple set up is to use the brush mask texture to rake and random but set to pressure, as well as using a color gradient with two color stops to blend between them.

Na colors are fine, I am wanting to use two separate textures for the brush, and blend between them in a single stroke...hope that makes sense

Edit: No, there isn't a way to switch between two textures based on pressure in the brush itself. The example given shows how to switch between two colors with the same mask texture used, which is closer to what the linked video showed at the time mark given. IF you simply want to mix two textures, one can be set to the brush texture and one to the brush texture mask, and use separate mapping.
If the gradient is what you are looking for, here is a quick example of the settings to use with a 'Texture Mask' brush and using a two stop gradient set to pressure.
Here I set an image of a square to the main brush texture calculate alpha, rake and use stucco on brush mask set to 'cutoff' for pressure. I hope this one maybe helps. Square has to be mapped to like 1.60 instead of 1 so that there is visibility of the edges inside the brush sphere.

Thanks for the reply. Yeah the fact that the video is about blending colors is a bit misleading, my bad. The function of the brush that I am after is how it blends between the scattered-type texture, and then as more pressure is applied, it forms into a solid square type texture.
https://youtu.be/-oPp6NE4WL8?t=86
The brush he is showing is using the 'dual brush' function in photoshop, which seems to be able to blend between two different brushes - in this case, the scattered-type brush and the solid square type brush. Was hoping there'd be a way to wrangle it in blender! Perhaps not

Yeah, if we could set up a square brush on the main texture, and then use the noise texture on the texture brush mask, then you could set it to cutoff on the mask to ease up and allow the solid for you.

Tried to make a sample file for you https://drive.google.com/file/d/1FStnwKd9MEOfiyY2shz4nU1f0St_io-8/view?usp=sharing

Great idea man! Thanks heaps I'll give it a go

Yeah I can work with that function to get near enough to what I am after. Thanks heaps! Love this community.

source: Stack Exchange

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

sort: votes


text:
Object not zeroing out to the center of the grid
I am having an issue where an object is not zeroing out to the center of the grid. it is not parented to anything and its pivot point is where it is pictured in the image...
Appreciate any help!

With moving object to center and freezing location, the pivot moves up to where it thinks 0,0,0 is...

Blend file for download:

What do you mean by "zeroing out to the center of the grid"? Do you want to snap selection to the cursor? Did you try Shift+S > Selection To Cursor in that case?

Na sorry, it (the object or blender or something) believes 0,0,0 is where the pivot is in the above image

That's strange.Did you snap selection to cursor in Object mode?

Yeah I did do that

Excellent, I've added the blend file to the original post

You have set delta location in the Delta Transform rollout which is now adding transforms to the current location.

Reset it back to 0 for all the options and origin point will be moving to 0 once location applied. This can be done either manually or via Ctrl+A menu > Location To Deltas after you snapped selection to cursor (which should be in the desired location already, center in this case).

That Delta Transforms was it!! Thanks so much. I have never used that function either

You have probably just reset the location scale by accident. To move your object to the center of the grid hit Shift +S with the object selected and move it to the grid (selection to cursor). For that your cursor has to be on the grid center b.t.w.. If it’s not hit shift + s and cursor to center. Now hit ctrl + A and then location to set the current location to zero, essentially taring it (like with a weight scale).  Hope that helps!
Addition: At the bottom of the screen, there is a tool bar where next to where you switch views (3D—>Rendered etc) there is a button where you can configure the pivot of the selected object. Set it to active element I think.
Also, if none of that works go to the toolbar and in tools under Set Origin change it to origin to 3D cursor.

Yeah I've tried doing that eh, if I snap selection to cursor, with the cursor at the center, then freeze transforms, the pivot goes off up to where the object is in the first image...

I've edited the original post to show an image of this

Oh yes I see. That quite odd. Let me see if I can find a fix.

I’m editing my answer as I think I’ve got it!

Thanks for the responses, but na they don't seem to change it :/

Anytime. That sucks man. I’ll see if I can find anything else. Did you do anything to the mesh besides edit it and move it? Maybe try duplicating it and see what happens?

Yeah that doesn't seem to change it eh! I've added the blend file to the original post

Wow. If I can I’ll see if I can do anything. Good luck man. Tell me if you figure it out.

Raiyan the answer is posted above, it turns out to be the Delta Transforms. Which is my first encounter with such things!

Me neither! I guess we all learn something new everyday :)

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


text:
Fluid stream not really straight with spherical artifacts when increasing velocity
So I'm modelling a water fountain and currently I working on adding some water in the form of a Blender Fluid Simulation. Everything looks more or less as expected except the water stream coming from the pipe. What I get is this weird stream looking like it is a string of spheres (left part of the picture). What I want is a more or less even water stream (right part of the picture).
So I actually managed to get what I wanted but only for (too) small initial velocities.
EDIT: See my own answer for my solution
I tried changing between FLIP and APIC and of course also played with the resolution but no real change happened.
What can I do to achieve that smooth water stream but with high enough velocity so that it does not look like a tap that has too little water pressure?

Try increasing the subframes.

@Leander Do you mean Sampling Substeps in the emitter properties? Or where do I find the subframe option?

By subframes, look at the Fluid Domain Resolution Divisions.  Most people think that the default of 32 is not sufficient.   Try doubling this.  Also look at increasing the Mesh Upres factor from default of 2 (start with 4).

@james_t So it seems like rising the Mesh Upres Factor actually makes it worse. With 4 it really just is individual spheres flying out. Though increasing Particle Radius in Relation to Upres Factor smoothes out everything, only that it looks now like thick oil or honey

So by trying out a bit more it seemed like decreasing the Time Scale (from 1 to 0.3) actually helps a lot. Additionally increasing the Minimum for the Adaptive Time Steps from 1 to 2 also helped to reduce the spherical artifacts and the stream now looks really clean. See the image for the relevant settings and the values that solved my problem.

So many parameters to play with, so little time to throw salt over your shoulder !

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


text:
Hiding gizmo and description in 3D view
I need a clean window for the preview.
Can I hide the gizmo and the description on the 3D view?

Viewport Navigation Gizmo:

Alternatively if you want to just hide the gizmo but not the other navigation buttons:

Text Overlay:

Shift + Alt + Z to hide/unhide viewport info texts, grid and coordinate axes. Ctrl + ` to hide/unhide navigation gizmo and Ctrl + Alt + Space to hide every UI element for fullscreen preview of the scene. I use these shortcuts a lot for clutter free viewport render previews.

Thank you for complementing the answer.


text:
How to make proxy of a rig?
I am following the steps on the website https://cloud.blender.org and here is what it says.

Put your 3D cursor in the Origin of your scene. Choose File > Link and browse the character file
Go to the Collections and select CH-Vincent.high. Make sure "Instance Collections" is enabled. Press Enter.
The Collection should appear instanced in the Viewport. Select it.
Choose Object > Relations > Make Proxy...
In the list, select RIG-Vincent. If the model is too heavy, enable Simplify in the Render Settings.
Pose the proxy armature to your liking and enjoy!

I am stuck on step 4. Where do I find Object > Relations > Make Proxy...?

On the header menu. If you still can't find it, please show a screenshot of your 3D view.

Thank you, it worked


text:
I get this "Error: Font's can only have scale applied" when I try to add a location to my text (trying to do small animation
I am trying to add a location on one end of a grid and want to do the same on the other end so that the animation will go from one end to the other. But when I try to add a location for the text, it says "Report: Error Font's can only have scale applied: Text". Text is just the name of the text.
PS: Blender noobie here. I was watching a tutorial but they didnt have this problem and Im not sure how to fix it. I also didnt see them convert it to a mesh if that is what needs to be done.

You can animate the location of a text-object in the same way as any other geometry. What you can't do is adjust the location of its object-origin with respect to its geometry, except by using its internal alignment settings.  Unless you convert the text to a mesh?


text:
I'm new to UV unwrapping. Why are the seams stretched in parts of the anvil I'm making?
I have been following a tutorial on how to make an anvil. I'm at the part where I'm supposed to UV Unwrap but came across an issue with parts of the anvil being stretched even after marking the seams and unwrapping. Is it the mesh, should I try to remake the anvil? I'm a beginner at Blender so I have no clue on what to do with this exact problem.
There were a few videos I watched, but none that explained on what to do if I had this specific problem.

This is where (marked on the images) the unwrapping won't "de-stretch" however much I try to fix it without breaking Blender with stuff I'm not familiar with. I will try to add the file as well if needed.
How can I fix this?
I added in the file here:

To remove all stretching you will need to add more seams for Blender to cut it up and flatten it out.
Some geometry is mathematically impossible to unwrap to 2D without stretching. For example, the following will always have angle stretch

while adding this seams removes it.

If there is no stretching in the tutorial video, check again what seams they have - likely you have different geometry.

This is useful! I still can't wrap my head around this. I will try messing around with it until I can get it right for this type of mesh. I added the file as well, maybe I can be pointed towards a better solution.


text:
What is the difference between "Mesh" and "Geometry" in Geometry Nodes (or in general)?
I'm a programmer new to Blender and solely interested in Geometry Nodes. Here I do not understand the difference between "Geometry" and "Mesh" ports. They seem to be interchangeable, but not quite.
Take this Node graph for example:

For instance, if I connect the graph to the Group Output node's "Mesh" socket nothing gets displayed, it only works when connecting to "Geometry". So what uses are there for the separate "Mesh" socket in Group Output?
I understand most of the time Mesh and Geometry are convertible, or only modify the geometry of a Mesh like Transform only changes the vertex locations.
Is it safe to say in OOP terms that "a Mesh contains Geometry"? Or is it even simpler, where Geometry simply is another term for "Vertices"?
PS: Links to the respective classes in the Blender source code welcome!

this has nothing to do with geometry or mesh, the output of GN can only take ONE (object/geometry/mesh) not more. That's a restriction.

Referring to the Group Output sockets? If I connect a Cube directly to the Mesh socket of Group Output it still doesn't display anything.

As @Chris said, the Group output can only output one geometry. To combine several separate geometries created inside the nodetree you have to join them in the Join Geometry node.

And for the terms, to put it simple a geometry can be everything in GN which contains some kind of shape, points, curves, instances, vertices, edges and faces etc. everything that's not just a value or transformation node and these kinds of things. Mesh however refers to something (like outside GN) that gives a geometry which is visible in renders (at least if there are faces, technically a mesh can contain vertices and edges without faces), whereas other geometry like curves or points can only be made visible if they are converted into mesh by profile curves or instances for example.

You are confused about a lot of things, let me explain step by step:

Name in group output doesn't matter. You can name output as you like, and it will work:

Name can be changed in Properties panel N, Group tab:

So the only thing that matters is type. So green output is geometry even if it has some other name:

The first output goes to output geometry. If you set something different, Blender will point that:

the only reason to use secondary outputs is to store some data:

then you may store it in the attribute:

And use in the material:

In the same time Geometry may be in the different types: Mesh, curve, volume, instances, or any combination of them, so that you can separate and join any types of geometry:

"you messed up" doesn't sound so nice my friend XD

@HarryMcKenzie Sorry for that, I'm not a native speaker. How you would say that?

@Crantisz Well, if someone says he is new to Blender and says he wants to understand the difference, just say nothing at all about messing up or pointing out what he did wrong, simply explain the differences and how it works ;)

Haven't I done it? But then there are a lot of things that they interpreted in the wrong way, I should point on that, it is important, isn't it. But I don't want to be rude or something

I don't mind meshing things up. :) That was a nice explanation! +1 is recorded, thanks! (not enough rep yet)

@Crantisz It's all fine, don't mind - my thoughts are just, if you tell how it's correct and he reads it carefully, he will realize he messed something up without the need to say it directly ;) I had people complaining about me being rude even without saying they are wrong.

The difference is that a Geometry Node input can accept Mesh or Volume data,
while a mesh input only accepts the former.

Ah nice. So in game engine terms (ie Unity) Geometry is substitutable for Mesh.

@SteffenItterheim I don't know about Unity, but in GN the term Geometry is not only mesh or volume, but also curves, distributed points etc (see point 5 in Crantisz' answer).

What is the difference between "Mesh" and "Geometry" in Geometry Nodes (or in general)?

In short and (very) simplified terms:
A Mesh, as the name suggests, quite explicitly denotes a conglomerate of points, edges and faces (but not necessarily all of them).
A Geometry, on the other hand, is basically anything that contains elements captured with positions in some form. This can also be a mesh, curves (and their curve points/handles), instances, volumes, or in some form a construct that contains certain things at certain positions.


text:
How to create a surface on both sides of an extruded circle outline?
Hello Blender beginner here,
I have an SVG of a semi circle with cracked edges at hits bottom.
I imported the svg and looking to 3d model it.
I started by extruding it and was looking to start coloring the surface I scribbled in red.
But I realized this circle has no surface, it's just an outline.
I need to first create a face for it and I'm having some trouble figuring out how.
How would I go about about creating a face on the area covered in red scribbles?
I would like to do this in blender without resorting to going back to re-modifying the original svg via illustrator.

Select a loop and press F key to create a face...

There are multiple ways to do this, however if you are not concerned about n-gons (faces with more than four sides), then the simplest method would be to:
(BEFORE EXTRUDING THE MESH)

Select your model in Object mode
Press Tab to enter Edit mode
Press 1 on the number row (not number pad) of your keyboard, to enter Vertex select mode
Press A to select all vertices
Press F to 'Fill', which will create a single face using all of the selected vertices.

If you are concerned about n-gons, you may need to manually edit this mesh and create your own quad-faces by selecting 4 vertices at a time, and pressing F to fill.
If you are planning to manually create your faces, I would recommend first merging vertices by distance. To merge vertices by distance:

Select your model in Object mode
Press Tab to enter Edit mode
Press 1 on the number row (not number pad) of your keyboard, to enter Vertex select mode
Press A to select all vertices
Press M to Merge by Distance. This will merge any vertices that are close together into a single vertex. You can change the distance threshold using the options menu in the bottom left corner of the screen (after you press 'M').

Merging vertices by distance will help clean up the model and give you fewer faces to create manually, without removing too much detail from the model.

Thank you, this was it! Something to note though, I did have to make sure I converted the object to mesh though before it go to work.

Glad it worked :) Thanks for the note.


text:
Can I add new vertices to an object on a per-keyframe basis?
I would like to have a mesh 'grow', so to speak. For that, I need to be able to add vertices at certain keyframes.
I understand interpolation between keyframes would be difficult so for now, a frame by frame setup would suffice. So I would add new vertices to the object per frame.
Can this be done in Blender? Eventually, if at all possible, this will be done programmatically, but a UI based way to do it would be a great start!
EDIT: So, most likely this is not possible. That is great to know because it will save me a lot of searching and experimenting. I will look for different ways to achieve what I have in mind.

I don't think it is possible to change the geometry in the keyframes. A possible workaround could be, a) find out the maximum vertices that the mesh will have when it is fully 'grown' b) put some of the vertices at the same location depending on the desired mesh shape, at given keyframes.

Ah yes, thanks you for the suggestion. I thought about that aswel but it probably won't work with a subdivision modifier.

You could try 'growing' a model in stages.  When more vertices are required, duplicate the model at that point and switch over to it. Add as many vertices as you can on that one. Animate it's growth from there.

Thanks, I will probably do something like that :)

Have a look at this shapekey answer.

Maybe use a mask modifier?

Thanks. I already checked shapekeys but that's not going to work for my situation. I think the mask modifier could theoretically be a possibility, I don't know if it can be done in a relatively easy way. I will definitely consider though.

@DionSnoeijen, the counterpart of the mask is to set vertex group weights appropriately and main issue is the "open geometry" you may have until vertices appear.

You could try to use Build modifier as one option in addition to mentioned above, sorting vertices could help it make vertices appear in some certain way. That said, technically it's not actually building mesh but hiding it first and revealing instead. You could also look into curves (they have Start and End options) or addons like Animation Nodes which can more or less achieve what you ask. Probably someone could provide a workaround if you share the mesh / screenshots to be animated

For now, I went with a new mesh per step. It works as I wanted. It's just a lot of meshes :).


text:
How to set vertex radius when using skin modifier?
I have this method that I want to use to change the skin size of the skin modifier.
If I do this, everything works fine:
def make_uniform_width() -> None:
    bpy.ops.object.editmode_toggle()
    bpy.ops.mesh.select_all(action='SELECT')
    bpy.ops.transform.skin_resize(
        value=( self.properties.skin_size, self.properties.skin_size, self.properties.skin_size ),
    )
    bpy.ops.object.editmode_toggle()

I can just use: bpy.ops.mesh.select_all(action='SELECT') to change the value on all vertecies simultaniously.
But I want to select specific vertecies to do the skin_resize. So I thought this could work. But I have no access to the vertecies it seems.
def make_increase_width(self):
    bpy.ops.object.editmode_toggle()
    size = self.properties.skin_size
    for iteration in self._iterations:
        for vert in bpy.ops.object.vertecies:
            if vert.index in self._iterations[iteration]:
                vert.select = True
            else:
                vert.select = False

        size += self.properties.width_increase
        bpy.ops.transform.skin_resize(value=( size, size, size ))
    bpy.ops.object.editmode_toggle()

Is there a way to select specific vertecies from editmode?
EDIT:
I tried this, but it's too slow te execute. Maybe I will have to look for another way to change the skin width.
def make_increase_width(self, vein_cluster_object):
    for iteration in self._iterations:
        vein_cluster_object.vertex_groups.new(name='growth-iteration-%i' % iteration)
    for iteration,group in zip(self._iterations,vein_cluster_object.vertex_groups):
        group.add(self._iterations[iteration], weight=1, type='REPLACE')
    bpy.ops.object.editmode_toggle()
    size = self.properties.skin_size
    for iteration in self._iterations:
        bpy.ops.mesh.select_all(action='SELECT')
        bpy.ops.object.vertex_group_deselect()
        bpy.ops.object.vertex_group_set_active(group='growth-iteration-%i' % iteration)
        bpy.ops.object.vertex_group_select()
        bpy.ops.transform.skin_resize(value=( size, size, size ))
        size += self.properties.width_increase
    bpy.ops.object.editmode_toggle()

I found it, I think. This should theoretically do the trick:
def make_increase_width(self):
    bpy.ops.object.editmode_toggle()
    size = self.properties.skin_size
    active_object = bpy.context.active_object
    for iteration in self._iterations:
        for vert in active_object.data.vertices:
            if vert.index in self._iterations[iteration]:
                vert.select = True
            else:
                vert.select = False
        bpy.ops.transform.skin_resize(value=( size, size, size ))
        size += self.properties.width_increase
        print(iteration, size)
    bpy.ops.object.editmode_toggle()

But it's very slow to execute. It seems having this line in the loop bpy.ops.transform.skin_resize(value=( size, size, size )) makes it too hard to do. It will select a maximum of 20 verts for about 60 iterations but somehow it will take far to long for it to run. I'm not sure how come.

Ah, bpy.ops.object.vertex_group_select() I will have to make vertex_groups I suspect

Is it just a spelling problem? "vertecies" is "vertices"

That was very hopeful but no. or vert in bpy.ops.object.vertices: TypeError: 'BPyOpsSubModOp' object is not iterable

vertices is an object property from context.object.data (not bpy.ops), depending on what the overall context is in your code.

Yes, I think I have found out that: active_object = bpy.context.active_object is giving me access to the vertecies. But vert.select = True is not actually selecting anything it seems. Hmm. ( I updated my question with the full code )

Should select vertices in object mode.

But this method is: bpy.ops.transform.skin_resize(value=( size, size, size )) only working in edit mode if I understand correctly.

Let us continue this discussion in chat.

Or should I select the verts in object mode. Then switch to edit mode Do the skin resize and switch back to do it again? Let me try :)

@lemon Was kind enough to help me find this answer:
def make_increase_width(self):
    size = self.properties.skin_size
    obj = bpy.context.active_object
    for iteration in self._iterations:
        size += self.properties.width_increase
    for iteration in self._iterations:
        for vert_index in self._iterations[iteration]:
            obj.data.skin_vertices[''].data[vert_index].radius = (size, size)
        size -= self.properties.width_increase

This is outside of edit mode, very fast and exactly what I needed.


text:
How can I setting OperatorStrokeElement?
I try to deform the mesh by script.
In my past question, one of the answers is

In sculpt mode, the operator used would be
bpy.ops.sculpt.brush_stroke. Using that in a script will involve
setting up an OperatorStrokeElement which would include mouse
position...

But, I don't know how to set OperatorStrokeElement.
Please tell me how to set OperatorStrokeElement.
If possible, please give me an example.

Try to use
def context_override():
    for window in bpy.context.window_manager.windows:
        screen = window.screen
        for area in screen.areas:
            if area.type == 'VIEW_3D':
                for region in area.regions:
                    if region.type == 'WINDOW':
                        return {'window': window, 'screen': screen, 'area': area,
'region': region, 'scene': bpy.context.scene}

bpy.ops.sculpt.brush_stroke(context_override(), stroke=strokes)

where "strokes" is a list of viewport coordinate-tuples, like [(0,0,1),(0,0,-0.5),...]
Source is here.


text:
I'm trying to set up a workflow to build PS1 low-poly 2D/3D environments and I have a few questions
I'm trying to work towards making 3D/2D environments and assets like those you'd see in PS1 games, specifically games such as Xenogears, Wild Arms 2, and a couple of others. If you're familiar with that era, specifically JRPGs (Japanese Role-Playing Games) you know what I'm talking about. The actual workflow of building the pixel textured 3D assets I'm getting down, but I still have a few questions.

The pixel guy you see is made in Asesprite; I'm not building the flat 2D assets such as him in Blender, I'm using him as a reference image to compare against the actual 3D objects I'm building in Blender.
Often I need to import a 2D, pixel based reference image to ensure that the 3D assets and environment I'm building match up with one another. When I'm importing a reference image, especially a flat/2D image, how can I make sure that the image is and remains the absolute, objective size that it is? I ask this because sometimes when I import a reference image that otherwise is the same size in Asesprite, in Blender they're wildly different dimensions.
As you can see from the link the reference image I uploaded is blurry; how do I fix that?
How can I check the sizes in pixels of something in Blender? For example, if I'm using 32x32 sized pixel assets it's important for me to check and double check those dimensions in Blender to ensure that everything is in order from time to time.
Any additional tips for what I'm doing? Anything I'm missing in my workflow?

Blurry Reference Image
Your reference image is blurry because it's only 32 x 32 pixels small and Blender needs to scale it up to the actual size on the screen. The default algorithm to scale an image is Linear which interpolates the pixels. It's a setting of the Image Texture node. Switch the Texture Interpolation setting from Linear to Closest and the image will keep the pixelated appearance.
Units and Sizes
Blender's default Unit System is Metric. It can be changed in the Scene properties but there are only 2 other options: None and Imperial (inches). No pixels. So it's up to you to create a mapping. For example, you can say that 1 pixel of the reference image is 10 cm in Blender. That way your image would be 32 x 32 cm.
Of course, when you export the 3D object it will be 32 cm tall. This might be too big or too small in the game engine. It's probably best to import a sample asset into Blender and check the size. Then you will have the correct mapping between pixel and meter.
You can check the Dimensions in the "N-panel", the viewport's side panel. Press N to open it. There you also can lock the scale values so that you cannot accidentally change the image's size.
Helper Add-On
Blender comes with an add-on called "Import-Export: Import Images As Planes". You can activate it in the preferences. It might be handy if you need to work with a lot of reference images.


text:
Falling object in specific time
I want the object falling start from frame 250 until 350. But, I can't find where to set it. It always starts at 1.

https://blender.stackexchange.com/questions/8483 https://blender.stackexchange.com/questions/74004 https://blender.stackexchange.com/questions/26792 https://blender.stackexchange.com/questions/2122

I guess you can either:

Make the physics begin at frame 250 in the Scene settings > Rigid Body World > Simulation Start:

Or you can activate the object's rigid body Animated option at frame 0, which means it won't be submited to any physic simulation, keyframe, disable it at frame 250 and keyframe again (deactivate and activate Dynamic will work as well):


text:
How do I distribute hair particles evenly using guiding curves? (Ponytail with Hair Dynamics)

I tried increasing the steps under both the viewport and render tab, messing with the guiding curves, and amplification under the Children tab. No method I've tried so far has been able to simultaneously keep the ponytail form and cover my character's entire head with hair. In order to get the shape I wanted, I made the two different particles systems and connected both systems under one guiding curve.

Hair Dynamics are enabled for the ponytail and the main hair, with interpolated children.

can you add an image of what you have done? Have you used weight painting? What type of children: simple or interpolated?

Yes I have weight painted, here is what that looks like:https://youtu.be/NHda6hHRY1Q And here is the most recent version of the model: https://youtu.be/BD8wmlFCG6U  I know it looks even, but it isn't, there is still black hair showing and the hair on the scalp moves when animated because I had to increase the length in order for it to cover her entire head. Here is what it looked like before I messed with the hair particle settings and the guiding curves: https://youtu.be/TipDNkmpLGM

Combine a Short Hairstyle with a Dynamic Ponytail
Since the main hair doesn't move, but only the ponytail, you can leave the main hair static and make only the ponytail dynamic (plus dynamic bangs, and another layer of fly-off hair if you want more realism.) It's like a hair extension and fairly easy to do.

Turnaround of the ponytail hairstyle
Preparation

create a little cylinder or "ring" (it's more a disc). It will be the emitter for the ponytail. I've added a Torus object (12 major, 8 minor segments), deleted the inner faces, and grid-filled the hole.

Ponytail hair emitter ("ring")

place this ponytail emitter ("ring") behind the head where you want to have the ponytail
Important! Apply the scale to the "ring" and the head because a lot of the hair settings are relative to the emitter's size. You will get weird-looking results in the simulation and in Cycles renderings. Eevee is more error-tolerant.

Create and Comb the Main Hair
Note: The main hair is on a haircap/scalp emitter. The head is a separate object and is bald. All objects have real-world size.

add a Hair Particle System to the haircap/scalp. 500 particles, 8 segments are fine. You can increase/reduce the number of segments in Particle Edit mode (menu Particle → Rekey; particles must be selected.)
Comb the hair. Select the lower hair (everything at the level of the ears in front view, box select) and comb it up in the direction to the "ring". Tighten the strand of hair guides and try to pull them through the ring.
at the front of the head, pull the hair gently back so the children can't accidentally disappear inside the head (bald spots!)
when you're finished, cut all hair particles (guides) behind the ring.
repeat the combing for the side parts, then for the back top, and finally for the bangs (if you want a parting)
try to layer the hair parts
don't forget you can hide combed parts of the hair so it gets not messed up by further edits. You also can select the roots (menu) and select more segments (keys) with Numbpad++ to easily select single hair guides and comb them.

Create the Ponytail

select the "ring", in Edit Mode, select the inner faces, and assign them to a Vertex Group "Ponytail" (Ctrl+G). This is where the ponytail will grow.
assign material for the hair ("Ponytail" group) and another material for the outside of the ring (inverted selection)
add a Hair Particle System to the ring emitter, 500 particles, 26cm, 8 segments
use the created Vertex Group "Ponytail" in Particle Properties → Vertext Groups → Density so the hair grows "through" the ring and not on the outside of the ring.
enable Particle Properties → [X] Hair Dynamics, in section Hair Dynamics → Structure increase the random value (0.422). This widens the ponytail a little
Note: the values for Vertex Mass and Stiffness have an effect on the stiffness but I left them at the default settings and just did a little weight painting.

Weight paint of the ponytail

in Particle Edit mode, weight paint the keys (black dots) a little, see screenshot. This spreads the ponytail somewhat, makes it fluffy and it doesn't look completely flat from the side.
run the animation. In about 60 frames the ponytail should have fallen down nicely. It should neither sap off nor stick out.

Simulated hair dynamics of the ponytail
Tweak the Hair Particle Settings

Children, select Interpolated, amount: 80. For the ponytail only: Length: 0.959, Threshold: 0.306. It makes the end of the ponytail a little more shaggy.
adjust the values for Clumping, Roughness, and Kink as you like.
use a small number for Roughness → Random, like 0.021
if the children of the main hair try to overgrow the ring emitter then try to increase Clumping → Clump a bit, e.g. 0.479
Kink works well for the ponytail (used Wave in the example) but select a small Amplitude like 0.02 m so it doesn't "explode"
for Hair Shape use values like Strand Shape: -0.9, Diameter Root: 0.03, Tip: 0.01, Diameter Scale: 0.01 (default). These values are important for Cycles if you don't want to have super fat hair particles.

Animation test:

This didn't work for me. The Torus won't attach to the rest of the model and looks terrible.

In a static way or when it's animated?

Both static and animated unfortunately. I tried joining vertices but it messes with the rest of the mesh. I also have the hardest time layering  the hair because the guiding curves are too strong even when I adjust the radius, but that's a separate issue. I'll add a picture later today. The good news is that this method got me closer to the hair I wanted to make.

I couldn't post a picture, but here is a video: https://youtu.be/9lyFOFBZM4s

sorry for the late response. You can increase the number of segments so that the hair can be combed better. You can change the number of segments at any time via Rekey if you select the hair guides beforehand.


text:
Python - How to apply a constraint on a specific object
Is it possible to use the bpy.ops.constraint.apply(constraint="Copy Transforms", owner='OBJECT') on a specified object instead of the default behavior of it working only on the active object ? Someone told me that i can override the context for that but i can't really find any tutorials on it and i'm too inexperienced with coding to understand the documentation. Would highly appraciate any help. I don't want to make the named object an active one, i need the behavior to be something like bpy.data.objects['ObjectName'].constraints.new(type='COPY_TRANSFORMS')

You don't have to set the object as active in order to apply the constraint.

for obj in bpy.context.selected_objects:
    # loop over the constraints in each object
    for con in obj.constraints[:]:
        # get the constraint you want to apply
        if con.type == "COPY_TRANSFORMS":
            # apply it using the constraint name.
            bpy.ops.constraint.apply(constraint=con.name)

It's the same process for modifiers as well.

How to apply this script to bones?

off the top of my head i'm pretty sure you would just change it to bpy.context.selected_pose_bones instead of selected objects. YMMV.

"You don't have to set the object as active in order to apply the constraint." - just checked and yes you do. Otherwise how would the operator know which constraint to apply, if multiple constraints had the same name? Also, you will get an error if there is no active object. RuntimeError: Operator bpy.ops.constraint.apply.poll() Context missing active object

Adapting Jakemoyo's code:
import bpy
from bpy import context as C, data as D

for ob in C.selected_objects:
    to_apply = [c.name for c in ob.constraints if c.type=='COPY_TRANSFORMS']
    if not to_apply:
        continue
    with C.temp_override(object=ob):
        for constraint_name in to_apply:
            bpy.ops.constraint.apply(constraint=constraint_name)


text:
Add Random seed slider to a node group to affect other input values randomly
I Hope someone can help me with that, can't find any solution fewwww
I'm trying to integrate a random seed slider to my nodegroup!
Basically I would love that slider to change randomly all the other sliders values within their respective ranges.
I've tried it this way but its to tricky/not elegant nor optimised.

I've tried to play with drivers but my knowledge is limited and I encountered limitation because even tho the randomise script expression worked, if you want to adjust the value manually its still changing randomly the value.
For example random driver seed give a 45.003 but I want to reach 46.2, if I slide manually to that value it changes the value randomly again.
Maybe I was close to something this way or maybe by python scripting its possible?
I've heard that the python script can be embeded in the nodegroup so that would be perfect since I want to share the nodegroup, people wont have to run any script or install anything...
Do anyone know how to achieve such a thing?
Big thanks in advance for any help

Hello. Are you aware of the Map Range node ? The White Noise node outputs a random value between 0 and 1.

You can setup your node group like so and chain value and white noise nodes. Add a different input seed for each value. If you really want to prevent having seeds that look alike use big values for the different white noise addends.

thanks so much, I've tried that in the first place and still the best solution.
Thanks for your help :D

You cannot embed an arbitrary python code inside node groups. Drivers can be used for that but the auto execution must be enabled. And it is not really portable.
I recommend you to implement next behaviors: controlled and random. Then add a global seed input and a factor input to mix between the controlled and random values internally.
The global seed would be used to seed all the internally generated random values so the result would be deterministic and also can be used as an input point for a further per object or UV island randomization.
The factor is used for switching between the behaviors or mixing-in a random deviation to the user input.

Totally, thank you for confirming the obvious. I thought it was possible but its not.
Thanks a lot!!


text:
Can anyone help me?
I was making a mesh for my project, then I scale the size smaller and apply the scale.
When I rotate the object, all the vertices seem to wiggle all over the place, then I try to add a sphere into the mesh, and the problem persists.
i post video of it here
https://youtu.be/7wHrCJtCDnM

hello could you please share your file? https://blend-exchange.com/

That'a absolutely the worst title for a question ever. It doesn't convey any information about the question.

@MartynasŽiemys: well....i cannot agree ;) i saw titles like that in capital letters :D but i agree, the title is no help at all

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

While files, images, and external videos or links may be helpful additions they should not be the only way to obtain information about your issue. Don't make understanding your question rely on downloading a file, watching a video or visiting an external site. Use the builtin tools to upload images or gifs, along with thoroughly explaining the problem in written form so it can be indexed and searched for thus helping future visitors with similar issues.

This looks like a precision issue. Blender uses 32bit floats for numbers describing coordinates. That's around 7 digits of precision. So you can have a number like 8562143 or 0.00005647895 but not 1.0000000001 - there is not enough precision for that. So if you have geometry too far away from the center of object's local space and/or scale it down too much this can happen.
That's Suzanne moved 20km away in it's object's local space and scaled down to 0.001 of its original size while scene units are set to meters:

She doesn't look too happy about it...
Make sure you don't have objects that contain geometry that has parts very far away or very different in size and are very far away from object's origin. Make those parts separate objects. You should also set your scene units adequately - if you work with micrometres and set your scene units to kilometres you will have precision issues for sure.


text:
The shadows in the toon shader are weird
https://www.youtube.com/watch?v=sJTEJKQ0lYw&ab_channel=MrTriPie.
I watched the video in this link and followed it.
But in my case, there are parts where the shadows are not sharp.
The monkey in the video has sharp shadows.
But if you look at my monkey ears, there are some parts that are not sharp.

The nodes are connected in the same way.

I don't know if this is the right thing to do.
Turning off the soft shadows of the shadows in the Render Properties tab makes it a bit better though. but

This will result in gray instead of black.
First of all, there is no gray in the color lamp, only black and white.
And diffuse bsdf doesn't matter either.
Actually, the character I am modeling is using diffuse bsdf and this problem occurs there too.

This is my first npr modeling result.
It wasn't perfect, but it didn't matter.
And when I first saw and followed the npr modeling process, I remember that there was no problem like this.
The problem is that I am modeling now, but the shadow seems to have a lot of problems.

If you look at it now, the shadow is too different from the yellow model.

Please download the file and check if you can see the gray color on the first screen.
I bought a model for reference, but he turned off the soft shadow.
That's why I just tried it.
Is it a matter of light?
Please change the angle and type of light to see if there is a problem like mine in your object.

Maybe it would be best to upload your file, because I honestly can't reproduce your result. For me it looks like in the tutorial, no gray visible. What you show in the last picture I can only achieve if I place a slider with gray color between black and white. But here comes the one problem I got with your question: in your material the sliders are hardly to distinguish because they are so close together. Why? The Color Ramp is set to Constant, so the black slider can stay on the left at position 0.0 (like in the tutorial), here I couldn't even tell if there was a gray slider inbetween.

...just a quick addition: of course I have turned the Soft Shadows off, they cause what you show in the ear on the second pic (and then it should look like in the video). However he doesn't seem to explain that in the tutorial or I must have missed it.

Have you got an extra stop in here ? Try moving the black all the way to the left, and controlling only with white. Also try:   jump ahead a step in the toot and replace the Principled BSDF with a Diffuse BSDF

I added a file and some sentences to the question. I'd appreciate it if you could check it out.
I don't think there's a problem with what you told me.
I didn't do it here, but I used diffusion bsdf.
And there is no gray on the color lamp. Only black and white exist.
What I think is a problem is not a node or an object, but a blender setting problem, or a wide angle or kind of problem.
Because I already succeeded once and copied many tutorials. I don't think it's a matter of color ramp or diffuse bsdf.

So I think it's because of the setting, wide angle, and type that I mentioned.
The problem is that I didn't find this error when I first modeled the npr.

In your light object data properties
In that shadow option, can you tell me if contact shadow is on or if it is set to what value it is? I checked that it changes sharply when this option is turned off, but I want to check if it has anything to do with this.


text:
How can I open a 'save folder' dialog for this (3.6)?
I'm new to writing addons for Blender and also to writing code in python, most of this is 'snippets' I found elsewhere, so I have little understanding of what this code is actually doing, beyond what it's supposed to be:
It opens a 'Save File' dialog (not useable in this case) which just results in 'access denied'
The purpose of the script is to find every object in every scene, and while preserving object hierarchies to export each as a separate FBX file.
The entire Traceback is this:
Python: Traceback (most recent call last):
  File "C:\Users\\\*\*\*\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\BatchFBXExportUnity.py", line 91, in execute
    batch_fbx_export_objects(self.directory_path + "/" if self.directory_path else "")
  File "C:\Users\\\*\*\*\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\BatchFBXExportUnity.py", line 48, in batch_fbx_export_objects
    bpy.ops.export_scene.fbx(
  File "C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\modules\bpy\ops.py", line 113, in \_\_call\_\_
    ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: Python: Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\addons\io_scene_fbx\__init__.py", line 661, in execute
    return export_fbx_bin.save(self, context, \*\*keywords)
  File "C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3514, in save
    ret = save_single(operator, context.scene, depsgraph, filepath, \*\*kwargs_mod)
  File "C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\addons\io_scene_fbx\export_fbx_bin.py", line 3409, in save_single
    encode_bin.write(filepath, root, FBX_VERSION)
  File "C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\addons\io_scene_fbx\encode_bin.py", line 314, in write
    with open(fn, 'wb') as f:
PermissionError: [Errno 13] Permission denied: '000000.fbx'
Location: C:\Program Files\WindowsApps\BlenderFoundation.Blender_3.6.1.0_x64__ppwjx1n5r4v9t\Blender\3.6\scripts\modules\bpy\ops.py:113
bpy.ops.object.batch_fbx_export(filepath="C:\\Users\\\*\*\*\\Documents\\Modules\\untitled.fbx")

And here is the code:
bl_info = {
    "name": "Batch FBX Exporter for Unity",
    "description": "Exports each object in the scene as an FBX file",
    "author": "Stellar Wolf Entertainment",
    "version": (0, 0, 1),
    "blender": (3, 6, 0),
    "location": "File > Export > Batch > Unity FBX",
    "warning": "This addon is still in development and may not behave as expected.",
    "category": "Import-Export",
}

import bpy
from bpy.props import StringProperty
from bpy_extras.io_utils import ExportHelper

def move_to_origin(obj):
    original_location = obj.location.copy()
    obj.location = (0, 0, 0)
    return original_location

def move_back_to_original_location(obj, original_location):
    # Move the object back to its original location
    obj.location = original_location

def get_object_hierarchy(obj):
    # Recursive function to get the entire hierarchy of an object
    hierarchy = [obj]

    if obj.children:
        for child in obj.children:
            hierarchy.extend(get_object_hierarchy(child))

    return hierarchy

def batch_fbx_export_objects(directory_path):
    for scene in bpy.data.scenes:
        bpy.context.window.scene = scene

        for obj in bpy.data.objects:
            if obj.type == "MESH":
                object_hierarchy = get_object_hierarchy(obj)

                for obj_in_hierarchy in object_hierarchy:
                    obj_in_hierarchy.select_set(True)
                original_locations = [move_to_origin(obj_in_hierarchy) for obj_in_hierarchy in object_hierarchy]

                file_path = bpy.path.abspath(directory_path + obj.name + ".fbx")
                bpy.ops.export_scene.fbx(
                    filepath=file_path,
                    use_selection=True,
                    axis_forward='-Z',
                    axis_up='Y',
                    global_scale=1.0,
                    apply_unit_scale=True,
                    apply_scale_options='FBX_SCALE_ALL',
                    bake_space_transform=True,
                    object_types={'MESH'},
                    use_mesh_modifiers=True,
                    mesh_smooth_type='FACE',
                    use_mesh_edges=False,
                    use_tspace=True,
                    use_custom_props=False,
                    use_armature_deform_only=False,
                    bake_anim=False,
                    bake_anim_use_all_actions=False,
                    bake_anim_use_nla_strips=False,
                    bake_anim_use_all_bones=False,
                    path_mode='AUTO'
                )

                for obj_in_hierarchy, original_location in zip(object_hierarchy, original_locations):
                    move_back_to_original_location(obj_in_hierarchy, original_location)

                for obj_in_hierarchy in object_hierarchy:
                    obj_in_hierarchy.select_set(False)

class BatchFBXExportOperator(bpy.types.Operator, ExportHelper):
    bl_idname = "object.batch_fbx_export"
    bl_label = "Batch FBX Export"
    bl_options = {'REGISTER', 'UNDO'}
    filename_ext = ".fbx"

    directory_path: StringProperty(
        name="Directory Path",
        description="Select the directory where the files will be saved",
        subtype='DIR_PATH'
    )

    def execute(self, context):
        batch_fbx_export_objects(self.directory_path + "/" if self.directory_path else "")
        return {'FINISHED'}

def menu_func(self, context):
    layout = self.layout
    layout.separator()
    layout.operator(BatchFBXExportOperator.bl_idname)

def register():
    bpy.utils.register_class(BatchFBXExportOperator)
    bpy.types.TOPBAR_MT_file_export.append(menu_func)

def unregister():
    bpy.utils.unregister_class(BatchFBXExportOperator)
    bpy.types.TOPBAR_MT_file_export.remove(menu_func)

if __name__ == "__main__":
    register()

It's really not efficient for anyone to have your script on a different page and without the error message. This forces us to open your link, click multiple times to download it, install it in Blender and then try your addon... Whereas you could just include all the info we need to see what's going on. Please [edit] your question to include your script using the code insertion tool. Please also include the full error message from Blender, which you can copy from either the Info Editor or from the system console which you can open using the menu Window > Toggle System Console.

Also please describe what your script is meant to do and how, so that we can check if your script actually does this correctly.

@L0Lock the error message simply states 'Access Denied' on the first file, It doesn't show the file path, just the name and extension. The script is intended to 'crawl' each scene finding every object, and save the objects (hierarchies preserved) to separate files using the name of the object as the filename.

Please [edit] your question to add information to it instead of commenting it, that will make things easier to follow.  Where do you get that error? Is it a popup message, or you get it in the info editor or console? If in the footer bar, you should be able to see it in full if you open the info editor.

@L0Lock I've edited the question with the information

Nice, i edited it to format the error as code instead of a quote. Could you add your script following the same formatting please?

@L0Lock I've added the code directly to the question now

I tried your script on my side, and it seems to work without error, so I guess you need to check you have all admin authorizations on the folder you want to use, or maybe try a different folder.

Now there are other issues: ExportHelper invokes a file output where you need a folder output, the files exported in the parent directory of what I selected, the UI is clunky, there are some formatting issues, and if I understand you want to export objects with their children in one file? In that case, you need to make a list of objects, and when you export a parent and its children: remove them from the list so that you don't export the children again.

I'm trying things out on my side, will post an answer lter today

I tried your script on my side, and it seems to work without error. Since the error is about a denied access, maybe check if you have the rights permissions on that folder, or try another one.
That being said, your script have other issues:

The FBX were exported in the parent directory of what I selected. This is partially due to the method you use to set the output path, which also leaded to bad user experience as the dialog window is for setting up a file output, not a folder output
If I understand, you want to export objects with their children in one file? In that case, you need to make a list of objects, and when you export a parent and its children: remove them from the list so that you don't export the children again.

Getting the output path
Since ExportHelper is made specifically to create a file output path, I don't see the point of using it here.
You could use fileselect_add() instead with a few tweaks to make if work for a folder.
I basically used the code from this answer
Object walking
When you cycle through object, Blender doesn't "see" them them way you see them in the outliner by default.
To "see" like Blender, you can switch your outliner to Blender-File Data display type:

Now you might understand the issue with your method:
It will walk through each object alphabetically with no notion of relationships. So, when you have an object at the top of the list that is the children of another object, it will be exported at least twice; firstly as the parent, then as the children of the other object.
I couldn't think of an ideal way of doing this without having issues with other scenarios, so I decided to just assume you will only have mesh objects at the top of your hierarchy and went with this approach:
get a list of all mesh objects
    for those who have no parents:
        get their children
        add the result in a list

        change position & export operations

This would not work with rigged models, for example, as the meshes are children of the armature. But since you disabled animation in your export option, I assumed this isn't an issue.
But otherwise, I suggest you consider just getting the selected objects, programmatically select the hierarchy (there's a nice operator just for it) and then export.
Final code
I made a point to add lots of print() to help you see what happens in the console, I also added lots of comments to explain the code a bit.
bl_info = {
    "name": "Batch FBX Exporter for Unity",
    "description": "Exports each object in the scene as an FBX file",
    "author": "Stellar Wolf Entertainment",
    "version": (0, 0, 1),
    "blender": (3, 6, 0),
    "location": "File > Export > Batch > Unity FBX",
    "warning": "This addon is still in development and may not behave as expected.",
    "category": "Import-Export",
}

import bpy
from bpy.props import StringProperty, BoolProperty
from bpy.types import Operator

def move_to_origin(obj):
    original_location = obj.location.copy()
    obj.location = (0, 0, 0)
    return original_location

def move_back_to_original_location(obj, original_location):
    # Move the object back to its original location
    obj.location = original_location

def batch_fbx_export_objects(directory_path):
    for scene in bpy.data.scenes:
        bpy.context.window.scene = scene

        # Get a list of all mesh objects in the scene
        mesh_objects = [obj for obj in bpy.data.objects if obj.type == 'MESH']
        print("Found mesh objects:")
        for i in mesh_objects:
            print(f"  - '{i.name}'")

        for obj in mesh_objects:
            bpy.ops.object.select_all(action='DESELECT')
            # filter to only top parents
            if obj.parent == None:
                top_parent_name = obj.name
                print("Found object_hierarchy to export:")
                print(f"  - '{top_parent_name}'")

                object_hierarchy = [obj]

                # check for children and add them in the object_hierarchy list
                children = [child for child in obj.children if child.type == 'MESH']
                for child in children:
                    print(f"    - '{child.name}'")
                    object_hierarchy.append(child)

                # select each of object_hierarchy
                for obj_in_hierarchy in object_hierarchy:
                    obj_in_hierarchy.select_set(True)

                original_locations = [move_to_origin(obj_in_hierarchy) for obj_in_hierarchy in object_hierarchy]

                file_path = bpy.path.abspath(f"{directory_path}{top_parent_name}.fbx")
                bpy.ops.export_scene.fbx(
                    filepath=file_path,
                    use_selection=True,
                    axis_forward='-Z',
                    axis_up='Y',
                    global_scale=1.0,
                    apply_unit_scale=True,
                    apply_scale_options='FBX_SCALE_ALL',
                    bake_space_transform=True,
                    object_types={'MESH'},
                    use_mesh_modifiers=True,
                    mesh_smooth_type='FACE',
                    use_mesh_edges=False,
                    use_tspace=True,
                    use_custom_props=False,
                    use_armature_deform_only=False,
                    bake_anim=False,
                    bake_anim_use_all_actions=False,
                    bake_anim_use_nla_strips=False,
                    bake_anim_use_all_bones=False,
                    path_mode='AUTO'
                )

                for obj_in_hierarchy, original_location in zip(object_hierarchy, original_locations):
                    move_back_to_original_location(obj_in_hierarchy, original_location)

                for obj_in_hierarchy in object_hierarchy:
                    obj_in_hierarchy.select_set(False)
            else:
                parent = obj.parent
                print(f"X Skipping '{obj.name}' as it has a parent: '{parent.name}'")

class BatchFBXExportOperator(bpy.types.Operator):
    # EDIT: this adds a tooltip to the operarot, visible when hovering it in the export menu.
    """Export the scene's meshes to FBX for Unity"""
    bl_idname = "object.batch_fbx_export"
    bl_label = "Batch FBX Export"
    # EDIT: you can t undo the export, so no need to flag this operator as undoable
    bl_options = {'REGISTER'}
    # EDIT: no need for extension if not using ExportHelper

    directory: StringProperty(
        name="Output Path",
        description="Where to export the FBX files"
        # subtype='DIR_PATH' is not needed to specify the selection mode.
        # But this will be anyway a directory path.
        )

    # Filters folders
    filter_folder: BoolProperty(
        default=True,
        options={"HIDDEN"}
        )

    def execute(self, context):
        print(f"Selected path '{self.directory}'")
        if self.directory:
            batch_fbx_export_objects(self.directory)
            # EDIT: letting the user know things are done is always good.
            self.report({'INFO'}, 'Export finished!')
        else:
            self.report({'WARNING'}, 'No valid path provided')
        return {'FINISHED'}

    def invoke(self, context, event):
        # Open browser, take reference to 'self' read the path to selected
        # file, put path in predetermined self fields.
        # See: https://docs.blender.org/api/current/bpy.types.WindowManager.html#bpy.types.WindowManager.fileselect_add
        context.window_manager.fileselect_add(self)
        # Tells Blender to hang on for the slow user input
        return {'RUNNING_MODAL'}

def menu_func(self, context):
    layout = self.layout
    layout.separator()
    layout.operator(BatchFBXExportOperator.bl_idname)

def register():
    bpy.utils.register_class(BatchFBXExportOperator)
    bpy.types.TOPBAR_MT_file_export.append(menu_func)

def unregister():
    bpy.utils.unregister_class(BatchFBXExportOperator)
    bpy.types.TOPBAR_MT_file_export.remove(menu_func)

#### THIS IS FOR TESTING FROM THE EDITOR ONLY
#### REMOVE FROM FINAL ADDON
# force invoke register if started from editor
if __name__ == "__main__":
    register()

    # run the operator from the invoke function
    bpy.ops.object.batch_fbx_export("INVOKE_DEFAULT")

This is what I needed, I hadn't gotten around to fixing the issues I had already suspected with getting the hierarchy, and I will 'adapt' the existing solution to allow for animations etc later on, I was primarily trying to fix the 'file-select' problem, but thanks for both

I hope you do know that the FBX exporter have batch modes and presets. If you don't do anything really specific that the exporter can't do, there's no reason to write your own exporter, especially if you do i in ways where adding features require rethinking half of it its procedures.

I didn't know that the built-in exporter could export the scenes to multiple FBX files. This must be a relatively new feature

Having now checked out the 'Batch' export modes for this, It's not what I needed, It will export each scene or collection as it's own file, which would require me to 'move' each object into it's own scene or collection. The script that I did create works on the object level exporting each object to it's own file.


text:
Delete bones via script
I want to delete all bones in an armature which contain a specific word but I can't figure out how to. This is the script:
import bpy
import fnmatch

ob = bpy.context.object

if ob.type == 'ARMATURE':
    armature = ob.data

bpy.ops.object.mode_set(mode='EDIT')

for bone in armature.bones:
    if fnmatch.fnmatchcase(bone.name, "something"):
        armature.delete(bone)

And returns the error 'Armature' object has no attribute 'delete'. What am I getting wrong?

Firstly, blender tends to use the term remove instead of delete. Secondly, the armature doesn't directly store the bones, they are stored in a collection called edit_bones (at least, they are when you are in Edit Mode, which is what you script does. bones is for Pose Mode/Object Mode, but bones can't be deleted from there).
So, you firstly need to loop over the edit_bones instead of bones and then use remove instead of delete.
for bone in armature.edit_bones:
    if fnmatch.fnmatchcase(bone.name, "something"):
        armature.edit_bones.remove(bone)

You can easily explore the properties available on the armature using blender's Python Console, typing in your code there and pressing Ctrl+Space to autocomplete:
>>> bpy.data.objects['Armature'].data.
                                      animation_data
                                      animation_data_clear(
                                      animation_data_create(
                                      as_pointer(
                                      bl_rna
                                      bones
                                      copy(
                                      deform_method
                                      draw_type
                                      driver_add(
                                      driver_remove(
                                      edit_bones
                                      get(
                                      ghost_frame_end
                                      ghost_frame_start
                                      ghost_size
                                      ghost_step
                                      ghost_type
                                      id_data
                                      is_editmode
                                      is_library_indirect
                                      is_property_hidden(
                                      is_property_readonly(
                                      is_property_set(
                                      is_updated
                                      is_updated_data
                                      items(
                                      keyframe_delete(
                                      keyframe_insert(
                                      keys(
                                      etc....
                                      etc...
                                      etc..
                                      etc.

Using this, you would be able to see there is no delete method.

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


text:
Orange in timeline, playblack won't go to frame 1
I've accidentally set some markers in my scene, and now Blender has locked on to a section of my scene. How can I remove the markers?

I immediately solved it right after I posted. I unchecked this little box and it went away.

the shortcuts to define a new range and cancel it are P and Alt P, maybe you've pressed P by mistake


text:
How do I do a glow effect as shown in this tutorial but in Blender Internal?
https://www.youtube.com/watch?v=UyGViC-PELo
How do I get emission nodes to create glowing eyes like he does in Cycles, but in Internal?

The glow effect in that tutorial is made using the compositor, not the render engine itself.
The compositor works the same way for every rendering engine so the techniques described there should work both for Cycles and Blender Internal.
Just add a Glare node with fog glow and it should work identically.
As for the material itself you can use the Properties Window > Materials > Shading > Emit option or alternatively activate the Shadeless checkbox right beside it.
Adjust the emission intensity as desired.


text:
FBX export why there are no materials or textures?
I used node textures in a mesh I exported to FBX.
I then imported it into Unreal Engine 4, and it didn't import any textures; I clicked the Upload Textures option in Unreal Engine.
Is there something I'm doing wrong, or is it Blender?

I think this has been done before. See: http://www.gamefromscratch.com/post/2014/07/16/Baking-Blender-materials-to-texture-to-make-them-usable-in-a-game-engine.aspx
Give it a try!

This is a frequently asked question.
TL;DR
Most file formats just don't support exporting textures, let alone full blown material definitions or other application specific features. Also historically most Blender importers/exporters didn't always fully support node based materials well.
Manually reproduce your materials using available textures at the target environment.
Long story
Materials are too implementation specific and tightly tied to the rendering system they belong to, or software they were created with. You can't, for the most part, import/export material definitions between applications, you can't even get Blender Internal Materials to work with Cycles Renderer nor vice versa, and they are both created within Blender, let alone between completely different applications.
For this reason no exchange file format you use can, or even tries to, import or export material properties, be it 3DS, FBX, Collada, STL, OBJ or any other. These are mostly mesh-only, geometry-centric file formats concerned with porting mesh based object shapes, and some times animation, armature, and basic color properties (like MTL files); never full complex material definitions.
Many of these transitory file formats originate from the fixed GPU pipeline era of materials, materials were a lot more limited back then, and there are simply no data structures in their specifications to accommodate that type of data, let alone all possible types of properties, settings or exotic combinations of maps. Even if there were, there are way too many different rendering techniques for a variety of purposes and responding to distinct requirements (like realism or responsiveness) to be able to correctly map properties, parameters or particular features between all of them easily.
For example most real time rendering (like game engines) are optimized for speed or responsiveness, and have need for some form of explicit "backface culling" option, because rasterization relies heavily on being able to discard invisible geometry (that is facing away from the point of view) for performance reasons. Yet in 'offline renders' like Cycles (concerned with realism over speed) it is integrated as an optional node, because for raytracers it is irrelevant which direction a geometry faces since they are always taken into account. On the other hand glass and transparent shaders "just work" with great refraction in raytracers, yet in EEVEE you need to muck about with blending modes, transparency settings, screen space refraction, and reflection probes, nonexistent in Cycles, because representing object interactions like reflections or refraction is expensive and complex for rasterizers.
Certainly never expect proper export of any procedurally generated textures (like Noise or Voronoi), image textures using "parametric" texture coordinates (like Object or Generated), or running through any other nodes before the final shader (like Color-Ramps or color adjustments); these are always calculated at render time by the engine (like Cycles or EEVEE for display purposes), and can't be exported elsewhere. Have in mind that pre Blender 2.8# most Blender exporters do not even support Cycles node based materials well, so even image textures used in Cycles node trees are often not expected to export correctly.
As of 2.9+ series some work has been done, and more common image based texture maps may some times be correctly preserved, like diffuse, specular, glossiness, for the increasingly popular "PBR workflows", when simple image textures are directly connected to Principled BSDF shader nodes, but even this this shouldn't be relied upon.
The manual states which limited subset of node setups are supported.
Same applies for many other features specific to applications or render engines, including but not limited to

Lighting parameters, shadow settings, lamps, camera properties
Physics simulations (fluids, cloths, soft bodies)
Texture specific options (clamping, clipping, tiling, color adjustments)
Generated texture coordinates (anything not mapped explicitly by a UV map or created by unwrapping a mesh) like Object or Generated texture coordinates, or anything mapped by a Vector Mapping or vector manipulation nodes
Material options (backface culling, shadows, visibility, transparency and blending modes)
Material, shader, texture, light or camera properties based animations
Particle systems, physics simulations (fluids, cloths, smoke or fire sims)
Volumetric data, modifiers parameters, shape morphing, animated, generative, shape altering or deformation based animations (like shapekeys, Ocean, Build, Geometry Nodes modifiers)
Bezier curve parameter based animations (like bevels, extrudes, trims, and "along path" effects)
Visibility options (like hide/unhide, wireframe, shadow, etc)
And any other parametric or otherwise "live generated data", can't also for the most part be imported or exported (with a few exceptions).

Even if Blender did support exporting any of these features, the exchange file format would have to support "holding" this these types of information. On top of that, there would also have to be feature parity at the receiving end. That means the application reading the exported model would have to supporting both reading that information, and correctly mapping said data to similar or equivalent features on importing environment, which may or may not be available.
That adds all the complexities of ensuring an exchanged model looks similar on both ends without loss of information as an end use would expect when opening his work on a different software. Multiply this by the virtually infinite number of possible combinations of different importer and exporter software, and ensuring any one single feature would work acceptably in all of them.
Exceptions
One notable exception to all this is the glTF file format, which as of version 2.0 glTF does support some material definitions based on a metallic-roughness shading model in its specs. The glTF-Blender-IO addon created by the Khronos Group themselves supports exporting Principled BSDF node based materials. But even then some restrictions apply, it must only contain pure image texture based materials connected directly to a Principled BSDF shader, without any transformations or interference from other nodes or textures. As of 2.9+ the Blender manual states which setups are supported by GLTF 2.0, which include Principled BSDF and Shadeless (Unlit).

The core material system in glTF supports a metal/rough PBR workflow
with the following channels of information:

Base Color
Metallic
Roughness
Baked Ambient Occlusion
Normal Map (tangent space, +Y up)
Emissive

As of Blender 3.4+ commit a99a62231e04 the OBJ importer has been improved to support OBJ PBR MTL extension, which is an extension to the original legacy .mtl file format that tries to cover modern PBR materials.
Beware that this is an extension of the original format, not all applications can read it, and some may write non standard or non compliant files which may fail to import correctly.
There are other caveats and limitations, and this should not be relied upon; some materials may fail to import or export correctly. As stated in the task Import/Export: Wavefront Obj Mtl Overhaul (Improved Compatibility and PBR Extension Support)

As a note to artists: This should greatly improve importing in general
but there are a great many MTLs that are fundamentally broken.
Detecting these issues automatically is rather difficult and requires
human intervention by editing the ASCII file. If you experience any of
the following issues it is likely the fault of the file and not the
importer:

Normal map is not being loaded:

Solution: Replace "bump", "map_Bump", "disp", "map_Disp" with "norm" or import with "Bump/Displacement is Normal Map" enabled
Explanation: The specification does not detail how to load normal maps, only greyscale bump maps. As a result many obj files misuse the
bump/displacement attribute to specify normal maps... This is really
bad, bump/disp can no longer be trusted. Many files/packages however
have opted to extend MTL with a proper normal map property. This
updated importer/exporter makes the decision to switch to using this
specifier to attempt to undo some of the damage to the ecosystem.

Alpha mapped textures are not being loaded correctly (color):

Solution: Add "-imfchan m" after every "map_d" attribute which is not a greyscale texture or import with "Alpha from Diffuse Texture"
enabled
Explanation: The obj specification provides the "-imfchan" texture option to sample scalar information from a specific image
channel. The initial version of the importer/exporter update currently
only supports "m" which stands for the term used in compositing
"matte"

Everything is invisible:

Solution: For every "d" option flip (newvalue = 1.0 - value) every number (or just set it to 1.0) or import with "Invert Alpha"
enabled
Explanation: The specification defines "d: 1.0" to be fully opaque and "d: 0.0" to be fully transparent... Some people don't read
the manual.

Legacy materials don't have glass:

Solution: Set "illum" to 4
Explanation: Various illumination models are used in legacy MTL to enable/disable different effects, see
http://en.wikipedia.org/wiki/Wavefront_.obj_file#Basic_materials

Materials that are supposed to be shiny are diffuse and vice versa:

Solution: For every "Ns" flip the value (newvalue = 1000.0 - value) or import with "Invert Specular Exponent" enabled
Explanation: The specification defines "Ns" to be the specular exponent, 0 is diffuse, 1000 is shiny (blender stops at 900). Some
hand-written files might again... have this reversed. The formula we
used flips the specular exponent. (The manual formula described
doesn't do a propper exponent conversion so this is not technically
correct but neither is the exporter that wrote the file.)

Glass appears as black:

Solution: Edit all glass materials to have "Kd" set to the value of "Tf" and set "Tf" to "1.0 1.0 1.0" or import with "Transmittance
Compatibility" enabled
Explanation: Some other software doesn't apply diffuse color as the color of glass and instead uses transmittance as the glass color.

Every material has subsurface scattering:

Solution: Delete all non-glass entries of "Tf" or import with "Transmittance Compatibility" enabled
Explanation: "Tf" defines a surfaces ability to let light through, often this is used for glass absorption, other times software
will define this as translucency. So in the case of a solid surface
the importer deems this to be subsurface translucency, this is a
settlement between software that uses Tf as absorption and Tf as
translucency. Some software (unwisely) writes transmittance of "1.0
1.0 1.0" for solid materials.

Glass materials are transparent:

Solution: For every glass material find "d" replace it with "Tr", flip (newvalue = 1.0 - value) for every number
Explanation: Many applications don't distinguish between "dissolve" (d) and "transmission" (Tr). Dissolve is available in every
shading model (as per-spec), transmission is a component of glass.

Transparent materials are made of glass (rare):

Solution: For every "Tr" replace it with "d" option flip (newvalue = 1.0 - value) every number (or just delete "Tr")
Explanation: Same as above just the other way around. This really should never happen but with the state of files available... you never
know.

Random materials are glass/metallic/missing reflections:

Solution: Set "illum" to 2 or import with "Basic Illumination" enabled
Explanation: The importer sees any opaque illumination model without fresnel to likely be metallic, anything with refraction is
transmission, specular is disabled in illumination models below 2.
Some files have very incorrect illumination models.

Color tint is missing from textures on import:

Solution: Requires manual setup: unplug the texture, copy the "default value" of the socket (should have been set to the
multiplier), create a multiply node with the value and texture as
needed.
Explanation: Currently texture modulation is not yet supported. This requires extra complicated setups behind the scenes to get
working correctly for importing and exporting outside of the
Principled BSDF wrangler. This should be a more rare use case for
older files where texture memory was scarce and had to be re-used with
tinting. If your file needs this however, sorry! You will have to set
it up manually.

Another note to artists: Exporter limitations (Questions/Answers):

Question: Why isn't my custom shader exporting?

Answer: The exporter only exports the Principled BSDF

Question: Why isn't my node graph texture exporting?

Answer: The exporter only exports image textures which are directly plugged into an acceptable output socket. No
procedurals/blending is handled. Consider authoring your textures in a
workflow which is baked to an image.

Question: Why isn't my subsurface+glass+alpha material exporting with every property?

Answer: Not every property can be exported together, the importer/exporter uses context switching to encode properties in the
most compatible way possible, as a result you should try to author
your materials with only one of these properties. For best results
subsurface should also always be "1.0" and base color texture in
"subsurface color" for subsurface materials.

Question: I have the texture plugged directly into the socket, why isn't it working?

Answer: Likely exporting this as a texture is not supported the following section should address that.

How to solve it then?
All you can, and should, import/export are UV coordinates with your mesh so you can correctly apply your textures at the "target application", game engine or receiving rendering environment, where you'll be importing and displaying your model, be it Unreal, Unity, Gamekit, sculpting toolkits, other modelling or animation suites, external rendering software, VR environments, Web Viewers or whatnot; or even Blender itself when importing models from elsewhere. UV maps are generally correctly preserved by most exchange file formats by default, save for complex setups with more than one UVMap per mesh.
There you should spend some time recreating your materials from scratch again with the provided textures and available maps. Yes, it requires some backtracking and will take some time, but with practice it'll get quicker. Use whatever native editor is available locally, save presets, build reusable libraries when available, to reduce the amount of repetition.
What you can do in some situations is use Blender to bake textures that you can later use in the final destination or receiving application to create materials there, not inside Blender.
Baking is the process of pre-calculating shading and storing it in a static image texture that may incorporate several optional channels like diffuse, glossy, indirect lighting, bump maps, normal maps, light-maps, among others.
This is often a requirement for high performance mediums or low power platforms, like browser based or mobile gaming, where available resources are limited or unknown, and speed takes precedence over graphic fidelity.
This may improve perceived lighting quality or "realism" at the expense of dynamism, as certain properties of materials and textures may become static, as if "painted onto the surface", like shadows or reflections. It is also an adequate method for exporting native procedural textures and materials to other applications, without "static" shadows or reflections.
Future Developments
PBR is not a standard however and not every implementation works the same way or interprets the same parameters similarly. The Principled BSDF was already written according to a model designed by an established industry leader (Disney) for their own internal use, and game engines like Unreal Engine® or texture painting applications like Substance Painter® also adopted it.
As the PBR workflow gains popularity and traction it is possible that more applications "join the movement" and implement it in the future. If a common standard can be agreed upon, it may be possible that in the future more importers/exporters improve compatibility with an increasing number of materials properties.
They may either read directly from a Blend file (like Unreal does with a bespoke importer), use some other hypothetical new file format or extension to existing one (like OBJ), or be forced to implement new standards; as the current ones still lack data structures to correctly describe them. At this point it is pure speculation, and no known plans are made.
Some efforts are currently being planned to have node group assets setup in such way that they use supported shaders under the hood, and are prepared for exporting to supported file formats using standardized maps and sockets.
It is currently in preliminary planing phases Bundle shader node group assets for compatibility #113145
Related Issues

Importing OBJ with MTL and Image not working properly
When I save something as an OBJ file the texture does not save with it, why?
How to import a .mtl file?
Blender isn't importing mtl correctly with obj?
Export cycles material to unity
How to Import a model with textures applied?
Is it possible to export object from Blender with modifiers and use them in external applications?

Duarte,
Am I correct in assuming when I unwrap my model I do not need to apply a material when exporting it as FBX. As long as I have unwrapped it correctly upon import into say Unreal it will give it a material? If this is the case How do i get say two different materials on a wall and the skirting boards around it for example. Learning I am :)

I have never used Unreal or any other engine, I have no clue, you will have to ask about it in a dedicated community I'm afraid. I hear some engines do not allow multiple materials per mesh, you would have to break it apart into several objects. Anyway you can apply the materials in Blender, for visual fidelity in the viewport, and if the importer supports that it's less work you have to redo in engine, just don't expect to use the same exact material definitions.

@DuarteFarrajotaRamos But diffuse and normal are quite common and not depending on the rendering engine very much, right?

All maps are quite common for some families of render engines while quite uncommon for others. While normal or ambient occlusion are quite common for game engines and real time, they are rarely used in "offline renders" for example. Point is no matter the texture, most importers and exporters don't bother with materials because it would be impossible to cater for all possible outcomes.

Its worth noting that a lot of applications/formats care about assigned material slots (i.e. which verts have which material assigned), but not the actual material that is assigned, as they need these for assigning their own materials.

@Duarte Farrajota Ramos there are countless export scripts that export blender meshes with their assigned materials

@phil123 You should post that as an answer below, with links to said scripts and a description of the workflow used, along with some screenshots of the results

I can add something about Unreal and glTF, don't know about FBX. Cycles, Eevee, and Unreal each have powerful node-based materials. The glTF 2.0 material model is simpler but can handle a large percentage of game art needs (image-texture-based PBR). glTF works between Blender and Unreal (as of 4.19) for Static Meshes with Materials. You can have multiple materials in a single mesh object, and these will show up as material slots in Unreal. From there you can use the materials imported from glTF or swap them out / author new ones in Unreal.

FBX supports textures.  So the bit about it not being supported by the file format is just plain wrong.

When exporting to .fbx, you can't export materials, you'll have the surface color, but not other settings such as glossiness and reflection, for textures, yes you can, but you have to use blender internal (it does not work with cycles), and make sure you don't use nodes, apply the textures, then, when in the fbx export settings, go to bottom, set path to copy, then check the box-like icon next to it, it should now embed the textures with the exported fbx file.
PS: I didn't test the new blender 2.79

This was the answer I needed. Even in 4.2.2 it still works.


text:
Keep particles from fluid simulation in render?
When I bake a mantaflow fluid simulation, Blender displays it as colored particles before the mesh is baked. Is there a way to keep these particles without baking a mesh and have them in the final render?

You can sort of do that, using the viewport render:
1) Disable all overlays and set the view mode to rendered:

2) In the domain's material settings panel, set the Blend Mode to Alpha blend and make sure Show Backface is checked:

3) Change the domain's material to Transparent BSDF:

4) If you don't want to see the viewport's background, check the transparent option in the render tab, Film panel:

5) In the viewport, go to the View menu, and make a viewport render:

And here's the result:

You can use this in compositing if you need it to see it in your full feature render. Though I can't think of a way to make it look not overlayed on top or bellow.


text:
background image/video issue in blender vfx
I was following one youtube tutorial and tried vfx green background.
I have selected the mask and now in compositing mode i want to add a new background. But, i am unable to do that . Please suggest me the menu to do that .
I am a beginner in Blender vfx.
I have attached the screenshot.

Press Shift + A and add one more movie clip, load your background footage in that movie clip angle, and finally you can connect it with viewer


text:
Adding properties to a shader node
I am adding properties to the Emission shader node type:
bpy.types.ShaderNodeEmission.myaddon= PointerProperty(type=MyEmissionSettings)

It seems to work fine, each Emission node gets its own new properties. However, I have an update function for one of these properties and I'm trying to get the node, but self.id_data returns the Node Tree:
<bpy_struct, ShaderNodeTree("Shader Nodetree") at 0x00000225C68E1CC8>

How can get the node from its property?
EDIT: here is a bit more code example:
def update_color(self,context):
    color = self['color']
    # I want to now get the node that owns that property self['Color']
    node = self.id_data
    # This is incorrect, self.id_data returns the Shader Node Tree
    # I want to get the node itself to be able to assign that color to one of its input
    node.inputs[2] = color

class MyEmissionSettings(bpy.types.PropertyGroup):
    color: bpy.props.FloatVectorProperty(
        subtype='COLOR',
        min=0.0, max=1.0, size=4,
        default=(1.0,1.0,1.0,1.0),
        update=update_color,
        )

Without testing, you can access any custom  property of any object by using myObject['MyPropertyName']. If I completely misunderstood you, maybe shader parts of your script?

It's the opposite, I have the property but not "myObject", in that case, the node.
I will update the question with a bit more code.

Wire it up in a setter.
Touched on this in answer to How to Update NodeSocketString Value inside a node group in a attribute node using python
As noted in question self.id_data is the node tree, not the node, and self is the property group.  Even without being defined a property group has a name property.
Will use this to, when trying to set a value, look over the node tree first and assign any emmission shader's name to its "myaddon" pointer property name, then use this to look up what the node is.
Sounds confusing? have added a simple example and tested in py console.
import bpy

def wire_up(node_tree, nodetype):
    nodes = (n for n in node_tree.nodes if n.type == nodetype)
    for n in nodes:
        n.myaddon.name = n.name

def update_color(self, context):
    print("Updating Value")

def get_node(self):
    print("Getting Value")
    return self.get("color", (1.0,1.0,1.0,1.0))

def set_node(self, value):
    print("Setting Value")
    wire_up(self.id_data, 'EMISSION')
    self['color'] = value
    node = self.id_data.nodes.get(self.name)
    if node:
        print(node)
    else:
        print("Node not found")

class MyEmissionSettings(bpy.types.PropertyGroup):
    color: bpy.props.FloatVectorProperty(
        subtype='COLOR',
        min=0.0, max=1.0, size=4,
        default=(1.0,1.0,1.0,1.0),
        #update=update_color,
        get=get_node,
        set=set_node,
        )

bpy.utils.register_class(MyEmissionSettings)

bpy.types.ShaderNodeEmission.myaddon = bpy.props.PointerProperty(type=MyEmissionSettings)

Test Run
>>> mat = bpy.data.materials.new("Test")
>>> mat.use_nodes = True
>>> mat.node_tree.nodes.new("ShaderNodeEmission")
bpy.data.materials['Test'].node_tree.nodes["Emission"]

>>> mat.node_tree.nodes.new("ShaderNodeEmission")
bpy.data.materials['Test'].node_tree.nodes["Emission.001"]

>>> en1 = mat.node_tree.nodes['Emission']
>>> en2 = mat.node_tree.nodes['Emission.001']
>>> en1.myaddon.color[:]
Getting Value
(1.0, 1.0, 1.0, 1.0)

>>> en1.myaddon.color = (1, 0, 0, 1)
Setting Value
<bpy_struct, ShaderNodeEmission("Emission") at 0x7fa0bddf8c08>

>>> en1.myaddon.color[:]
Getting Value
(1.0, 0.0, 0.0, 1.0)

>>> en2.myaddon.color = (0, 0, 1, 1)
Setting Value
<bpy_struct, ShaderNodeEmission("Emission.001") at 0x7fa096f38e08>

What a day! 4 upvotes in 1 hour on this niche question, great!

lol, will try and answer all my questions at 7pm Wednesdays (local time)

Thanks a lot @batFINGER !


text:
How to correctly enable Cycles from add-on?
My add-on requires Cycles to be enabled as I append some classes to existing Cycles types at registration.
I made a function to check if Cycles is enabled:
def cycles_check():
    import addon_utils
    is_enabled,is_loaded = addon_utils.check('cycles')
    if not is_loaded:
        print ('Cycles is required to use Photographer, enabling the add-on automatically.')
        success = addon_utils.enable('cycles')
        if success:
            print ('Cycles is now enabled.')
            return True
    else:
        return True

It "seems" to work: if Cycles is disabled when I enable my add-on, it enables it and my add-on can register properly. I can see Cycles in the render engine lists.
Cycles is required to use Photographer, enabling the add-on.
module changed on disk: 'C:\\Blender\\daily\\blender-2.92.0-6fb7d0f55927-windows64\\2.92\\scripts\\addons\\cycles\\__init__.py' reloading...
Cycles is now enabled.

But... Cycles is actually not properly enabled. The add-on in the preferences is not checked, and the Cycles Device property is missing, which breaks the UI but also crashes Blender if I start a render.

Traceback (most recent call last):
  File "c:\Blender\daily\blender-2.92.0-6fb7d0f55927-windows64\2.92\scripts\modules\bpy_types.py", line 808, in draw_ls
    func(self, context)
  File "c:\Blender\daily\blender-2.92.0-6fb7d0f55927-windows64\2.92\scripts\addons\cycles\ui.py", line 2217, in draw_device
    col.active = show_device_active(context)
  File "c:\Blender\daily\blender-2.92.0-6fb7d0f55927-windows64\2.92\scripts\addons\cycles\ui.py", line 114, in show_device_active
    return context.preferences.addons[__package__].preferences.has_active_device()

Shouldn’t you be using the “is enabled“ result instead of “is loaded“ result? Cycles might be loaded, but left disabled (I THINK).

I have tried both, the problem is not that the condition is not met, but that addon_utils.enable('cycles') doesn't properly enable Cycles.
Here is what the console prints:
Cycles is required to use Photographer, enabling the add-on. module changed on disk: 'C:\\Blender\\daily\\blender-2.92.0-6fb7d0f55927-windows64\\2.92\\scripts\\addons\\cycles\\__init__.py' reloading... Cycles is now enabled.

Huh  That is odd. Well, you can of course double check the python API in the blender documentation, but this may be a bug. I would let it be confirmed by someone wiser than me, though.

I found a solution looking at how bpy.ops.preferences.addon_enable(module="cycles") was using addon_utils.enable, it needed default_set=True as an argument, which forced the add-on to be checked in the preferences and fixed the errors.
def cycles_check():
    import addon_utils
    is_enabled,is_loaded = addon_utils.check('cycles')
    if not is_loaded:
        print ('Cycles is required to use Photographer, enabling the add-on automatically.')
        success = addon_utils.enable('cycles', default_set=True)
        if success:
            print ('Cycles is now enabled.')
            return True
    else:
        return True

Seems weird but you can try bpy.ops.preferences.addon_enable(module="cycles")
Here's modified code:
def cycles_check():
    import addon_utils
    is_enabled,is_loaded = addon_utils.check('cycles')
    if not is_loaded:
        print ('Cycles is required to use Photographer, enabling the add-on automatically.')
        bpy.ops.preferences.addon_enable(module="cycles")
        is_enabled,is_loaded = addon_utils.check('cycles')    #check if cycles is properly enabled or not
        if is_loaded:
            print ('Cycles is now enabled.')
        return True
    else:
        return True

#test call
cycles_check()

This operator doesn't seem to work at registration, it is not in the right context.
AttributeError: '_RestrictContext' object has no attribute 'view_layer'
However, looking at the code, I found a solution to my problem.