text:
Why is shape with shrinkwrap modifier flat?
I have a sphere and stretched. I have made a curve and i want that curve to be shrinkwrap on it. I add the shrinkwrap modifier on to it but it lost the original shape. Its flat on the surface.

How can i get the original shape without going flat on the surface. Any suggestion or help

Related

The Shrinkwrap Modifier allows an object to "shrink" to the surface of another object. It moves each vertex of the object being modified to the closest position on the surface of the given mesh (using one of the three methods available).

from https://docs.blender.org/manual/ko/dev/modeling/modifiers/deform/shrinkwrap.html
So it's totally normal that it's looking like this.
You can use  Vertex Groups:

The vertex group to control whether and how much each vertex is displaced to its target position. If a vertex is not a member of this group, it is not displaced (same as weight 0).

But in this case it will not help in any easy way. Maybe some detailed Weight Painting could do the trick though.
This is what you can do instead:

Make Curve and convert it to a Mesh or just make this shape by Extruding single vertex. In this case second option would be faster.
Add to it Shrinkwrap modifier.
Add Skin modifier. Turn off Symmetry X Axis and check Smooth Shading.
Add Subdivision Surface modifier.
Go to Edit Mode and select first and last vertex.
With Proportional Editing turned on and fallof set to Sphere hit Ctrl+A and scale both vertices as you want.

This is whole setup:

The result is perfect.


text:
How to add Multires subdivide button to my own script
As the title says, how do I add the subdivide button in the multires modifier to my own scripts. I managed to add the button but it does nothing when I press it.
Any help would be appreciated
Edit: This the area of the script I'm having troubles with
import bpy

class CustomPanel(bpy.types.Panel):
    """A Custom Panel in the Viewport Toolbar"""
    bl_label = "MultiModifer"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'
    bl_category = "Sculpt"
    bl_category = "Tools"

    def draw(self, context):
        layout = self.layout

        row = layout.row()
        row.operator("object.multires_subdivide", text="Subdivide")
        row = layout.row()
        row.operator("object.multires_higher_levels_delete", text="Delete Higher")
        row = layout.row()
        row.label(text="Multires Levels")

        if(bpy.context.active_object.modifiers.find('Multires') != -1):
            layout.prop(context.object.modifiers["Multires"], "levels", text="Sculpt")

def register():
    bpy.utils.register_module(__name__)
def unregister():
    bpy.utils.unregister_module(__name__)

if __name__ == "__main__":
    register()

This is the main bit I'm having trouble with
def draw(self, context):
layout = self.layout
    row = layout.row()
    row.operator("object.multires_subdivide", text="Subdivide")
    row = layout.row()
    row.operator("object.multires_higher_levels_delete", text="Delete Higher")
    row = layout.row()
    row.label(text="Multires Levels")

    if(bpy.context.active_object.modifiers.find('Multires') != -1):
        layout.prop(context.object.modifiers["Multires"], "levels", text="Sculpt")

Pass parameters to layout.operator
The modifiers property panel is in "button context" and has a member context.modifier which the associated operators use.  In the 3d view toolbox there is no such context member, but we can pass the modifiers name to the operator.
Also rather than row after row, can use column layout.
import bpy

class CustomPanel(bpy.types.Panel):
    """A Custom Panel in the Viewport Toolbar"""
    bl_label = "MultiModifer"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'
    bl_category = "Sculpt"
    bl_category = "Tools"

    def draw(self, context):
        layout = self.layout
        obj = context.object
        mro = [m for m in obj.modifiers if m.type == 'MULTIRES']
        col = layout.column()
        for m in mro:
            col.label(m.name)
            op = col.operator("object.multires_subdivide", text="Subdivide")
            op.modifier = m.name
            op = col.operator("object.multires_higher_levels_delete", text="Delete Higher")
            op.modifier = m.name
            col.label(text="Multires Levels")
            col.prop(m, "levels", text="Sculpt")

def register():
    bpy.utils.register_class(CustomPanel)

def unregister():
    bpy.utils.unregister_class(CustomPanel)

if __name__ == "__main__":
    register()

source: Stack Exchange

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

sort: votes


text:
Laser-Beam Constraint over moving Mirrors?
For a newbie, how is it done to bounce the red line accurately based on the current position of the moving mirroring objects in the scene?
I want to play around simulating mirror positions and seeing where the beam as accurately as possible goes.

We would love to help, but it is a little unclear what the problem is. Could you be more specific?

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

In your screenshot, where does the laser beam originate and what is the role of they cylinder?

Thanks for reply Brockmann, the laser can originate from any of it's end. The objects in the scene are meant as the mirrors, the faceted cylinder aswell.

Does this answer your question? How to visualize reflection of a beam or ray (involves a bit of python though, I don't think there is a way without it) Also see: https://blender.stackexchange.com/questions/109178/scan-plane-shadow/109468#109468

Thanks for your reply brockmann,
I added some info to the image.
Question going through my head also is, if a line with multiple vetrtex can be used, where one vertex is created automatically when hitting a mirror object. Where each vertex stays on the mirror, as long as the beam would hit a mirror. And now the next following vertex would be pointing in the appropriate direction, but ... if there is no other mirror object within distance n , the end vertex of the line would be at a distance x from the last mirror.

New screenshot at  http://files.panodome.com/uploads01/IMG_2021-09-28_14-23-25_1632810205.jpg
? How can I break / add paragraph in StackExchange
? How can I add more pictures in comments
? How can I answer to answers with longer text etc., when I hit answer my question it seems it wants to finalize the post as being answered then

yes, the suggested post seems to exactly answer the question, I'll try it out now

No problem. Instead of comments, please use the [edit] link at the bottom of your
question (https://i.sstatic.net/lXFuK.png) to add information to
your post. Just hit enter for a new paragraph in your question. Recommend have a look into the help pages: https://blender.stackexchange.com/help/

Might be interesting as well: https://blender.stackexchange.com/questions/39663/laser-beam-pathway-with-refective-mirrors

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


text:
I have 3d mesh data of a mouse brain in XML format. How can I import it into blender?
I have 3d mesh data of a mouse brain in XML format. How can I import it into blender ?
File Link

Please add more info re the format. As an example See https://blender.stackexchange.com/questions/42300/import-3d-xml-in-blender-or-convert-it-with-another-tool  The xml format is available online, an importer from a prior version of blender was linked.

https://blender.stackexchange.com/search?q=xml

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


text:
How to display the "animate property" diamond keyframe insert button (2.8x)
I am making a custom panel for a rig and I would like to be able to easily insert keyframes on my rig properties the same way we can already do in the default properties panel.
I'd basically like to add these buttons:

As you can see, I already tried to implement them but I can't get them to work properly:

Q: How to implement/draw these buttons for custom properties?

UILayout.use_property_split and UILayout.use_property_decorate
Setting UILayout.use_property_split  in conjunction with  UILayout.use_property_decorate  to True, marks down the animation button. (Currently not over-documented)  My understanding is the split makes room for it, and the decorate draws it.

With developer extras on, right click > view source. Found this in bl_ui.properties_space.py giving a big hint
    layout.use_property_decorate = False  # No animation.

Quick demo with object location, using the Text Editor > Templates > Python > UI Simple Panel template
import bpy

class HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = True
        obj = context.object

        col = layout.column()
        col.prop(obj, "location")

def register():
    bpy.utils.register_class(HelloWorldPanel)

def unregister():
    bpy.utils.unregister_class(HelloWorldPanel)

if __name__ == "__main__":
    register()

Omg, Thank you, that worked brilliantly ! Just a little question, what is "developer extras" ? is it something we can enable in user preferences or something that is already in Blender (that I didn't know the name of) ?

@azagwen Yes, in setting panel, interface

Might be cool having a demo for multiple properties and how to set this up for only one of them.

@brockmann  Almost did... then didn't.  Surprised the answer hasn''t attracted much interest. Find it a handy little button.

Time will come, I think add-on dev's still busy replacing all the assignments with annotations :) No big deal, it's your answer @batFINGER


text:
Problem with GPU rendering : Radeon RX 470
I need help about rendering in Blender, when I try to render using GPU it freezes and quits the program without any changes.
CPU render works well.
I'm using Radeon (TM) RX 470 Graphics.

Are you sure your AMD graphic card is supported in Blender? Here is a link where you can find anything you need about Blender and AMD Radeon cards https://docs.blender.org/manual/en/dev/render/cycles/gpu_rendering.html

does this happen also on a simple (default cube) scene? are you sure to have your operating system's (best/latest) drivers for the card?

I tried using it on cube and it took some time, but it was slower than on CPU.

And i have drivers updated...

Looks like it works now, i used Driver Booster program and it made some updates


text:
Problem loading custom addon
first of all hi to everyone first post !
I've recently (10 days ago) started to learn Python specifically for Blender. Obviously I got eager to try something out and I cant (for obvious reason) find a solution to this problem.
I am an absolute beginner in programming and I don't have the right jargon so please be patient with me if I said something wrong  :).
What I want to achieve is having a custom panel for some extra settings under the Render Tab. I was able to do so and convert it to an Add-on (so I can have it loaded at startup) but my custom operator (that contains 2 actions) doesn't load up together with the Add-on.. I have to manually run the script but in this way I have to do it every time I log in.
I am super sure the problem is with my custom operator since in order to make this script I've basically just dug around other people/template scripts to see how they work.. without knowledge of what I am doing (I just go too excited)
all the help will be highly appreciated
bl_info = {
    "name": "HTML Render Combo",
    "author": "Virgil Sisoe",
    "version": (1, 0),
    "blender": (2, 79, 0),
    "location": "Properties > Render",
    "description": "Quick panel to export Documen HTML",
    "warning": "",
    "wiki_url": "",
    "category": "Render",
    }

import bpy
#DEFINE CUSTOM OPERATOR FOR HTML EXPORT
def main(context):
    # WANT IM TRYING IS TO HAVE A SINGLE BUTTON DOING RENDER AND EXPORT DOCUMEN
    bpy.ops.render.render()
    #DOCUMEN HTML IS AN ADDON I HAVE
    bpy.ops.scene.export_documen_html()

#CREATING CLASS
class SimpleOperator(bpy.types.Operator):
    """Export HTML"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

# JUST COPIED AND PASTED FROM ANOTHER RENDER SOURCE IT IS COMPLETLY WRONG
    @classmethod
    def poll(cls, context):
        scene = context.scene
        return scene

    def draw(self, context):
        layout = self.layout
        return {'FINISHED'}

def register():
    bpy.utils.register_class(SimpleOperator)

def unregister():
    bpy.utils.unregister_class(SimpleOperator)

if __name__ == "__main__":
    register()

    # test call
    bpy.ops.object.simple_operator()

#DEFINE CUSTOM PANEL FOR EXPORT
def draw(self, context):
        layout = self.layout

        # ROW COLUMN LAYOUT
        row = layout.row()
        col = row.column(align = True)
        col.scale_y = 3
        row.operator("object.simple_operator", text="Render + HTML", icon='RENDER_STILL')
        #EXTERNAL ADDON (DOCUMEN)
        row.operator("scene.export_documen_html", text="HTML", icon='FILE')

        # LAYOUT EXPORT PATH
        scene = context.scene
        box = layout.box()
        row = box.row()
        row.prop(scene, "documen_folderpath", text="Export Path")
        row.prop(scene, "buttons.directory_browse")

#render tab path
def register():
    bpy.types.RENDER_PT_render.append(draw)

def unregister():
    bpy.types.RENDER_PT_render.re.remove(draw)

if __name__ == "__main__":
    register()

Ive added the .py file
custom_export.py file

I can't get it to work with the way it is formatted right now, and I tried fixing indentions and still got confused about the last section. Can you fix it to look like what is working on your end?

if i copy and pasted it wont work for me either... I tried to follow the instruction for posting the code spacing it 4 times but I must have done something wrong. I've included the link for the .py file at the bottom of the post

Right off the bat, take a look at your register and unregister - you only need to combine them into one set of register and unregister at the bottom - the one that is in the middle is most likely stopping the script from reading further.

There are two register and unregistered functions. When running the script both are registered as the __name__ == "__main__" evaluates to True and use the version of those functions that are defined upon that time
When running as an add-on the full module is loaded and blender will handle the calls to register and unregister functions. After loading the module only the latest version of the register and unregister functions are known. Hence only the custom draw function is registered.
This can be fixed my merging the two register functions and the two unregister functions.
bl_info = {
    "name": "HTML Render Combo",
    "author": "Virgil Sisoe",
    "version": (1, 0),
    "blender": (2, 79, 0),
    "location": "Properties > Render",
    "description": "Quick panel to export Documen HTML",
    "warning": "",
    "wiki_url": "",
    "category": "Render",
}

import bpy
#DEFINE CUSTOM OPERATOR FOR HTML EXPORT
def main(context):
    """for ob in context.scene.objects:
        print(ob)"""
    bpy.ops.render.render()
    bpy.ops.scene.export_documen_html()

#CREATING CLASS
class SimpleOperator(bpy.types.Operator):
    """Export HTML"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"
#CHECK
    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        main(context)
        return {'FINISHED'}

#DEFINE CUSTOM PANEL FOR EXPORT
def draw(self, context):
    layout = self.layout

    # write the layout code below here
    row = layout.row()
    col = row.column(align = True)
    col.scale_y = 3
    #row.operator("render.render", text="Render", icon='RENDER_STILL')
    row.operator("object.simple_operator", text="Render + HTML", icon='RENDER_STILL')
    row.operator("scene.export_documen_html", text="HTML", icon='FILE')

    scene = context.scene
    box = layout.box()
    row = box.row()
    row.prop(scene, "documen_folderpath", text="Export Path")
    row.prop(scene, "buttons.directory_browse")

#render panel path
def register():
    bpy.utils.register_class(SimpleOperator)
    bpy.types.RENDER_PT_render.append(draw)

def unregister():
    bpy.types.RENDER_PT_render.remove(draw)
    bpy.utils.unregister_class(SimpleOperator)

if __name__ == "__main__":
    register()

There are other stuff missing from the file like the "scene.export_documen_html" operator.

I'd suggest noting that when loaded as a module (ie the addon is enabled), blender calls   custom_export.register()  When run from the text editor (a case where __name__ == "__main__") will use register method defined at time of call, explains why it seemingly works in text editor and not when enabled as an addon.

you absolutely right this has solve it and now it starts up properly when i log. funny enough I've tried to take away everything BUT that... . thank you very much

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


text:
Why aren't textures appearing in viewport render but visible in the final render?
I'm messing around with the Barcelona Pavillion demo scene. When I enable the viewport render, no textures are appearing in the viewport render, the objects are just grey:

However, when I render the scene all the textures are properly assigned. Why is this?

can you provide blend file?

https://download.blender.org/demo/test/pabellon_barcelona_v1.scene_.zip

In the View Layers panel > Override, remove the selected material, otherwise you'll make it the only one showing for all your objects:

in the "viewport shading" view normally there are no textures. This is default behaviour (there are exceptions). If you want to see textures, change to

material preview

or

rendered view

The "solid" viewport display is made for building/moving/creating things and good performance. That's why textures aren't shown because they tend to make the computer/visualization slower.

Yes, but I'm in the "render view' mode, using cycles. Normally, I can see textures in this view, but for some reason, I cannot on this file.

ok, that's weird. I can see it...what version are u using?

The most recent version. 2.92 I think. I'm pretty sure It's a setting specific to this file, as none of my personal .blends do this.

Ok, that’s even more weird. Did you try to download the file again? Maybe you changed something unintentionally?

No, I believe this is just how the author made it. Must be a setting somewhere. Anyway, I was just curious. Thanks for the help anyways.


text:
How do I set up a Follow Path constraint and also control its influence?
I need to add a Follow Path constraint to an object and also set up key frames to turn off the influence of that constraint after one rotation around the path: https://docs.blender.org/api/current/bpy.types.FollowPathConstraint.html#bpy.types.FollowPathConstraint
I found an influence adjustment here but I can't seem to even get the constraint working in the first place. Some guidance on this issue would help my overall understanding of the Docs.

Examples in  https://blender.stackexchange.com/questions/168913/how-do-i-add-a-camera-so-that-it-moves-along-a-path-while-focusing-on-an-object/168948#168948  https://blender.stackexchange.com/questions/118290/continuous-looping-animation-differing-rotational-speeds   https://blender.stackexchange.com/questions/91455/i-am-trying-to-make-an-animation-of-a-double-planet-cant-seem-to-get-it-right   https://blender.stackexchange.com/a/176762/15543

Thank you these are helpful

Following code worked for me:
import bpy

ob = bpy.context.object
curve_ob = bpy.data.objects["Plane"]

con = ob.constraints.new('FOLLOW_PATH')
con.target = curve_ob

curve_ob.data.use_path = True
anim = curve_ob.data.animation_data_create()
anim.action = bpy.data.actions.new("%sAction" % curve_ob.data.name)

fcu = anim.action.fcurves.new("eval_time")
mod = fcu.modifiers.new('GENERATOR')
mod.use_restricted_range = True

mod.frame_start = 1
mod.frame_end = 100


text:
How to display number of users in object properties panel? 2.91
After updating to 2.91, I can no longer see a user number in object properties, when using Duplicate Linked (Alt+D). Is it possible to make this feature work, like in previous versions?
Here's how my object data panel looks like (the number of users next to object name is now missing):

When duplicating with AltD the object data is linked.
So you can see it in the "object data properties" part:


text:
Adding a keyframe to a constraint influence
I have an object with a Limted Rotation Constraint applied to it and would like to keyframe the influence. Here is the script I am using. I have tried bpy.context.object.constraints[‘Limited Rotation’].keyframe_insert(data_path=“influence”) at the end. I can't get it to work.. ?
bpy.ops.object.select_all(action='DESELECT') #deselect all object

bpy.data.objects['ForwardPath'].select_set(True)
obj = bpy.context.window.scene.objects['ForwardPath']
bpy.context.view_layer.objects.active = obj

to_add = bpy.context.active_object

add_constraint = to_add.constraints.new('LIMIT_ROTATION')

target = bpy.data.objects['ForwardPath']

bpy.ops.object.parent_clear(type='CLEAR')

bpy.context.object.constraints["Limit Rotation"].use_transform_limit = True
bpy.context.object.constraints["Limit Rotation"].owner_space = 'LOCAL'
bpy.context.object.constraints["Limit Rotation"].use_limit_x = True
bpy.context.object.constraints["Limit Rotation"].min_x = 0
bpy.context.object.constraints["Limit Rotation"].max_x = 6.28319
bpy.context.object.constraints["Limit Rotation"].influence = 1

Use the reference add_constraint eg add_constraint.influence = 1 and add_constraint.keyframe_insert(data_path="influence")  Also please use code markdown for code, not quote.

batFinger thanks gain,is it possible to contact you for your services? I will delete this comment after.


text:
Selecting the active layer
Every time I create a script to create text it adds the text into layer 1, when in fact I am working in layer 3. I realize the "True" relates to layer 1, so I possibly require a script in its place.?
bpy.ops.object.text_add(
        radius=3,
        view_align=True,
        enter_editmode=False,
        layers=(True, False, False, False,
                False, False, False, False,
                False, False, False, False,
                False, False, False, False,
                False, False, False, False))

bpy.ops.transform.translate(
        value=(0, 0, 2),
        constraint_axis=(False, False, True),
        constraint_orientation='LOCAL',
        mirror=False,
        proportional='DISABLED',
        proportional_edit_falloff='SMOOTH',
        proportional_size=1)

Related https://blender.stackexchange.com/questions/34319/how-to-add-object-to-a-specific-layer-with-python

I have mistakenly killed my 2.79 version with a lib update... so I can't test right now. Try bpy.ops.object.text_add() and see which layer it adds it to (given what layer you are on) or use layers = bpy.context.scene.layers to put the object on the same layers as the current scene. This could be the default...IIRC

Unfortunately it still throws the text into layer 1..


text:
Display text on 3d viewport
Is there a way to display text on the 3d viewport. (not text objects) After running a script I would like to display instructions on what to do next.
I have tried this scrip and it works well.. is there a way to use a script to get rid of it?
import bpy
import blf

class DrawingClass:
    def __init__(self, context, prop):
        self.prop = prop
        self.handle = bpy.types.SpaceView3D.draw_handler_add(
                   self.draw_text_callback,(context,),
                   'WINDOW', 'POST_PIXEL')

    def draw_text_callback(self, context):
        font_id = 0  # XXX, need to find out how best to get this.

        # draw some text
        blf.position(font_id, 15, 50, 0)
        blf.size(font_id, 20, 72)
        blf.draw(font_id, "%s %s" % (context.scene.name, self.prop))

    def remove_handle(self):
         bpy.types.SpaceView3D.draw_handler_remove(self.handle, 'WINDOW')

context = bpy.context
dns = bpy.app.driver_namespace
dns["dc"] = DrawingClass(context, "Draw This On Screen")

Yes, This might help https://docs.blender.org/api/blender2.8/blf.html and https://docs.blender.org/api/blender2.8/bgl.html


text:
Change material of object by using python
I want select a material, which already is define, of en object by using script.
How can I do that?
Example: This works but make everytime a new material. (Material.001, Material.002, ect..)
#******Material******
bpy.ops.object.select_all(action='DESELECT')
object = bpy.data.objects['Cube']

mat = bpy.data.materials.new("Material")
print (mat)
me = object.data
me.materials.append(mat)

mat = bpy.data.materials.get("Material") or bpy.data.materials.new("Material")

I have solved the problem by:
#***Set color***
D = bpy.data
Color_material = D.materials["Material"]
cube = D.objects['Cube']
cube.active_material = Color_material

Slight issue here if material named Material doesn't exist, will throw a key error.


text:
What's required to make the mirror modifier work properly?
I was working on a model when I realized something happened to the mirror modifier and it wasn't showing anymore. Tried Ctrl+Z but couldn't go back that far. So my question is there a way to apply the mirror modifier again?
Here is what i mean:

I tried to make it work but the right half of my model doesn't mirror properly anymore.

Hello :). Your Origin point is off center. Just move it back and it should work again.

thank you very much


text:
Operator Search: 'Free Data' not available in Blender 2.9 anymore?
I have a problem with caching my data when I try to run 'replay mode' for a fluid simulation in 2.9. In the 2.8x versions, you can 'free the data', when you search for free data in the Search tool by hitting (Spacebar) but I can't find it in 2.9 versions:

Q: How to run the 'Free Data' operator in Blender 2.9?

The default behavior of the Operator Search dialog in 2.9x is to only list the operators that can be found in menus. In order to search for all registered operators, you currently have to enable the Developer Extras option in the preferences.

Open the preferences Edit > Preferences
Switch to the Interface tab
Enable Developer Extras

For more information take a look at the design tasks T76227 and T74157.


text:
Geometry nodes Simulate project from view for UV map
Is there a way to simulate the project from view for uvs with geometry nodes? I know you cant project the uvs from the viewport point of view in geometry nodes (actually I wont be surprised if it is possible), but is there a way to sort of project the uvs of your mesh from one axis?

I don't know if this will do. but it's a match for the UV Project modifier given a single orthoghraphic projector:

It inverts the relative transform of the provided 'Projector' object, gives that transform to a copy of the modified mesh, and transfers the positions of the transformed  face-corners to a pre-existing UV map on the modified object.

It does not match projection from a camera, which must involve other jiggery-pokery, including a perspective transform. However, your view can be set to that of an orthographic projector-object by selecting it, and hitting ShiftNumpad 7


text:
hair doesn't follow the mixamo character help!
I just have a problem because when I had hair dynamics to my mixamo armature, the hair suddenly don't move along with the character. And as you can see in the modifiers, the particule system is below the armature, so I don't understand what is wrong.

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

you should put particles hair on the mesh ,not armature

While this may be a correct solution, it's not completely clear what you mean. Do you mean re-order the modifiers? Could you flesh this answer out with an illustration of the settings, or a toy example? Assume we know nothing :)


text:
Object not getting any lights from HDRI
Im using Blender 3.3.1 and the HDRI doesnt seem to illuminate my object, not in viewport neither in render.
Im usig an .hdr for Enviroment Texture, all nodes al well connected.
Im not checking "transparent" in film.
I've check on Scene Lights and Scene World.
Does anyone know what It ma be happening?

could you please pack your image and share your file (only keep one object in your scene)? https://blend-exchange.com/

Please add a screenshot of your node setup and your viewport


text:
Add World Rotations to Bone's Local Rotations
It's pretty easy to combine local rotations from another bone onto the active bone's rotations using "add, local space, local space" when the other bone is using a similar orientation. But is it possible to combine another bone's transforms in world space without losing the active bone's existing local rotations?
Essentially, I want to perform the same operation as "replace, world space, world space", but while keeping the exact rotations of the active bone (replace destroys them). You would think "add, world space, world space" would work, but I get something completely different. I'm assuming because Blender is trying to convert the active bone's existing rotations to world space before adding (multiplying) them together. And of course "add, world space, local space" won't work, because its trying to apply world rotations to local axes".
In my case, the bone I'm copying rotations from actually does not rotate in its local space at all - it is only rotated through its hierarchy. This is why I'm forced to use a world space copy.
I've tried every combination of mix modes with "world space, world space", but nothing adds the world space matrix to the existing local space matrix. Is there a way to do this without writing a custom script?
Edit: Just to make sure my situation is clear, I could achieve what I want by copying the active bone's local rotations to something else first (temporarily, to cache the data). However, I don't think something like this is possible, even if I wanted to:

Copy active bone's local rotations -> temp bone local rotations (replace)
Use "replace, world space, world space" as mentioned to get desired changes
Copy temp bone local rotations to active "add, local space, local space"

If you want a bone to copy the world space rotation of a bone, before its own rotation, simply sandwich in a parent with the constraint instead, a parent with the same axes as the target:

If your question is, how to do this without a mechanism bone, you don't.  You use a mechanism bone.  It's not a big deal to use a mechanism bone.  You don't cut down trees with herrings, and if somebody asks how to cut down a tree with a herring, the answer is to use an axe instead of a herring.

Haha, no, using a bone is fine. I actually did not consider doing something like this. What's weird is that in my case, the source and destination bones already have the same bind pose, so I guess now I'll be adding a 3rd bone with the same bind pose. The source bone is an IK component, and the destination is an FK bone, and I want to allow the user to rotate the FK to adjust it while it follows the IK. Thanks!

Okay, cool :)  I've probably been fielding too many questions of that sort on other sites and it colored my understanding of this one.


text:
Animator Glitching when skipping from one key frame to another
So I'm making a walk animation, and when I move directly from one key frame to another the mesh and armature glitch. Like when I press the button to skip forwards to the next frame from frame one to two the foot bone twists around on the x axis several times. Some thing similar happens when I move from two to one. But when I play the animation not glitches occur.
This makes it impossible to compare translation between frames.
How do I fix this? I have had problems with things like this in Unity and all I had to do was delete a cache of data to fix it. But I have no idea where you would do that with blender.
Also I would upload my blend file with this post but I don't know where to upload it too.

Upload your file to blend-exchange. Sounds like a cyclic dependency.

Here it is, and ya the problem does look alot like that.

It is a cyclic dependency.
When you move the foot controler, the console output reads. (Screenshot at the end of the post.) Open the console from the infobar menu: Window > Toggle System Console on windows.
Dependency cycle detected:
  shin.L depends on thigh.L through Parent Relation.
  foot.L depends on shin.L through Parent Relation.
  IKKnee.L depends on foot.L through Parent Relation.
  thigh.L depends on IKKnee.L through IK Constraint.

I suggest parenting the IKKnee bones to the IKFoot bones. Then there will be a hierarchical dependency.

Ya that seemed to solve it thanks


text:
How to use python to copy video settings from the compositor to the 3D viewport
I have 15 short videos, created in Celestia (which will grow to 100+), that I'm using as backgrounds for a music video.
I previously used one long video for the background, but it was inefficient. I'm constantly going back and forth between Celestia and Blender making fine adjustments to short sections.
So I changed my workflow so that I now have short video backgrounds listed in the Compositor, and use a python script to select which video becomes the background for each mini-scene.
Unfortunately, there is no way in Celestia to start video capture frame-accurately, so I have to adjust the offset in Blender each time I make changes to the Celestia backgrounds.
That much is unavoidable, but I would really like to avoid the next step, which is to select the video and adjust the offset AGAIN in the 3D viewport.
By naming the clips and the background, I've managed to change the clip in the 3D view using python e.g.
bpy.data.images["background_b"].filepath = bpy.data.images["Moon.b1"].filepath

However, I'm stuck with the start frame and offset. The tooltip says
bpy.data.screens["Animation.back"]..frame_start

but that gives a syntax error.
Can anyone tell me the proper syntax to reference the frame_start and frame_offset for the background in a 3D viewport, and an image node in the compositor?

Not sure to understand, are you using VSE to chain many videos, then you would like that video to be the scene background? You could perhaps render the chained video into a single longer video, then use that video as background (mapping it over a background plane)

Thanks for your response @m.ardito I've edited the question to give a bit more background and, hopefully, clarity.

How is your script altering the background? You should be able to add setting the frame offset to it.

Thanks @sambler I had just come to a similar conclusion.
Actually, I'm now trying to copy the offset from the version in the compositor to the one in the 3D viewport. I think I need to rephrase my question again.

OK!!! I finally worked it out.
In case anyone else needs this, here are examples:
Set-up Variables
clip = 'your.video.filename.mp4'

bg = bpy.data.screens['your.screen'].areas[n].spaces[0].background_images[0]

node_im = bpy.data.scenes['your.scene'].node_tree.nodes[clip]

Copy Video and Properties
bg.image = bpy.data.images[clip]
bg.image_user.frame_start = node_im.frame_start
back_im.image_user.frame_offset = node_im.frame_offset

Notes
Blender automatically assigns e.g. 'your.video.filename.mp4' as the image reference when you load a video into an image node. You can change that if you want, but beware that if you reload the clip, the field will revert to the clip's filename.
Finding 'n' from 'areas[n]' takes a bit of trial and error, especially if you have a complex screen.
for area in bpy.context.window.screen.areas: print(area.type)

outputs a list of the areas of your screen, so at least you can narrow down which are viewports.
After that:
bpy.data.screens["your.screen"].areas[n].spaces[0].background_images[0]

will tell you what,if any, image has been assigned to areas[n]'s background.
I have to say I'm surprised that this hasn't come up before - seems to me that duplicating a video background node in a 3D viewport would be a common need.

I should mention that the answer from @batFINGER in this thread: https://blenderartists.org/forum/showthread.php?385451-Adding-3D-view-background-with-Python was instrumental in heading me in the right direction. Thank you.


text:
Is it possible to add a hovering informative textbox?
I'm really new to blender and don't really know whats possible in it. So Is it possible to add a hovering informative textbox?
Like I'm making this school project and we want to have a 3d model of our object in question and I was wondering if its possible to add text boxes that face the camera at all times that have a line drawn to a certain point of the object? We will not be showcasing the item on blender, but an online obj viewer.
Very roughly drawn idea of what I mean: https://gyazo.com/b543aa2bc6ceb9bf37e3f8dde3e3bb19

Blender doesn't natively do this, though it could be faked with a few constraints. However if you are exporting in OBJ to other applications none of the techniques will survive the port

Related : https://blender.stackexchange.com/a/101485/29586 - although it would be specific to Blender and wouldn’t export to an external viewer.


text:
A/V Sync issues after update to 2.79
My video clips which are pulled From OBS, do not line up on blender. I have A/V Sync on. the videos FPS on VLC say it is at 30 fps (plus the raw files DO sync when played back in VLC) and that is what I am trying to render at. Even though the channels do not line up when I render them they come out matching. Now when I try to make the channels line up when editing them and I try to render then the A/V is out of sync in the rendered video.

Possibly Related are you using the VSE?

Yes I am, is that not recommended?

The input file is FLV and the Output I am aiming for is MPEG4

Are you sure this does not happen, with the same identical file, on 2.78 or another previous version? Your question title seems to say that...

Correct. I placed some raw files that I had turned into videos in the past with no issues and they do the same thing. I believe before the update i was using 2.78c.

I was not sure if a setting in my OBS was changed but everything is still the same.

I am not sure what the problem is with OBS FLV files and Blender but I changed my OBS output to mp4 files and the issue is not there with that type. It may have something to do with the FLV files not specifying a Frame rate. When I check the properties > details of the files there is very little information. Blender may just be trying to compensate?

I just edited an OBS file in Blender's VSE and Blender auto-conformed the project frame rate to FPS: 10 FramerateBase: 0.330. So its not quite 30fps. If you added something else to the project first then added the OBS file later, then Blender will default to the first specified frame rate. Either try this rate or add the OBS file first.

Consider checking that you are using SDL as your Audio Device in Blender preferences.

Yes it changes this for me as well. Have you watched the video back after rendering? My video is about 8 minutes long and at the end the sync is off by about 10 seconds... more or less. I am only using one video file (and the audio that comes with it)

Like i said the video IS at 30 FPS. Maybe this is more of an audio issue instead of a video issue... I am not sure. when i put the rendered video back into blender the sync is good but like i said i put it in as 30 fps because it tries to automaticly move it to the custom 30.3 but the VSE says it is not synced.

Also this new version came from steam... i hope thats not the issue

Hmm, my video is 9 mins 40 secs and it looks rock solid. In fact its a video of a voice against a waveform recorded off a computer screen, so i have a good sync relationship. have you tried changing the Preferences>Audio Device>SDL?

Did you try rendering it out as mkv with h264 codec?

I just changed that as well as uninstalled the steam version and went directly to the website. Still nothing has changed.

As a last last suggestion, can you transode the clip using mpeg streamclip or ffmpeg just to see that the file isnt somehow corrupt?

Also try caching the clip via the strip properties panel?

Ok I changed the OBS file from FLV to an mp4 and it looks like it may work... I will get back with the result.

Yup that seems to have done it... not sure why the new version is having issues with FLV files from obs but... oh well.


text:
Add-on preferences auto-saving bug?
Can anyone help me confirm this is a bug, or possibly just something I might be doing incorrectly? It may also be the lack of a feature I'm assuming exists.
The problem is that add-on preferences only seem to get auto-saved when they are not within a property group branch. To replicate it, set this simple scenario up. You may already have something close enough - the properties do not need to be Boolean.
class PrefsSub(bpy.types.PropertyGroup):
    SkipTestB : bpy.props.BoolProperty( name = "Skip Test B" )

class PrefsMain(bpy.types.AddonPreferences):
    bl_idname = "PROJECT_NAME"
    SkipTestA : bpy.props.BoolProperty( name = "Skip Test A" )
    sub : bpy.props.PointerProperty(type=PrefsSub)

    def draw(self,context):
        area = self.layout.column()
        area.prop(self, "SkipTestA")
        area.prop(self.sub, "SkipTestB)

Open Blender and Add-on preferences, modify Skip Test A, then close/open Blender. The SkipTestA state should remain intact, indicating that the property was automatically saved.
Open Blender/prefs, modify Skip Test B, close/open Blender. If you encounter the same issue, the property does not get saved. Is this a bug?
If you open Blender/prefs, then modify Skip Test A and Skip Test B, then close/open Blender, both properties appear to be saved.

It seems as if the auto-save triggering feature breaks down on property groups. Is this a known issue? And are there any workarounds for it? If this does not normally happen, can anyone guess something I may be doing incorrectly to cause it?
Really appreciate any knowledge about this. I have my preferences setup to use multiple property groups because I didn't realize this happened until it was too late. I can probably flatten the hierarchy, but would prefer to not do that if possible.
Edit: Some info and possible solution

Forcing a root preferences value (prefs.prop) to change when a property group value (prefs.group.prop) changes does not trigger an auto-save.
In fact, programmatically altering root preference values does not seem to trigger an auto-save at all. Which would mean states stored in prefs won't get automatically saved unless the user modifies a root preference value using the UI within the same Blender session.
When a root preferences value is modified by the user through the UI, Blender will save all add-on preferences on exit - even those in property groups.
My current solution is to add update functions to all preference properties, and have the update function set bpy.context.preferences.use_preferences_save = True.
The solution I'm going with at the moment is to set bpy.context.preferences.use_preferences_save = True when my add-on starts up. Read about this state here: https://docs.blender.org/api/current/bpy.types.Preferences.html?highlight=use_preferences_save#bpy.types.Preferences.use_preferences_save . According to documentation, setting this to True will trigger modified preferences to be saved on exit. In my opinion, it seems like this should always happen.
If anyone can think of a better solution, please let me know! I personally do not like forcing this value to be True on every Blender execution, but it seems like the simplest solution. I guess the best solution would be to avoid property groups altogether in preferences, and to only trigger an auto-save when procedurally changing preference properties internally. But since my add-on does this every time it executes, it makes sense to do it the lazy way.

Suggest if you want people to test this, then make the script a minimal working addon, with bl_info and registration.   Haven't noticed this behaviour.

Yeah, I wanted to do that, but I don't have enough experience to throw one together. I've only worked with Python/Blender through a single multi-file project that is too convoluted to use as a test. Plus I figured quite a few add-ons in development would already have a setup very similar to the one above.

I think I've confirmed this is happening to at least several other people. While researching solutions, I keep running into posts about preferences not being saved correctly, and the poster has them in property groups. Example: https://devtalk.blender.org/t/how-to-save-custom-user-preferences-for-an-addon/10362

@Robert you can use the Templates menu in the script editor to scaffold an add-on, you don't need to know how to do it from scratch

Based on the updates to the question and the comments, I am turning the solution into an answer so others can more easily find it.
I have a UI in the N panel, and every time I would change the setting the preferences would get updated and I could use them elsewhere with no errors. But just like you, it wasn't saving after I closed Blender unless I made the change directly from Preferences -> Add-ons.
The solution was to set bpy.context.preferences.use_preferences_save to true. For convenience, I made that setting change in the register() function. These are the relevant parts of my code that demonstrate how to do it.
# __init__.py

bl_info = {
   # Add-on info...
}

import bpy

class MyPreferences(bpy.types.AddonPreferences):
    bl_idname = __package__

    my_port: bpy.props.IntProperty(
        name="Port",
        min=0,
        max=65535,
        default=5678
    )

def get_value(self):
    return bpy.context.preferences.addons[__package__].preferences.my_port

def set_value(self, value):
    bpy.context.preferences.addons[__package__].preferences.my_port = value

class MyPanel(bpy.types.Panel):
    """This is a menu within the N panel"""
    bl_label = "Settings"
    bl_idname = "OBJECT_PT_MyPanel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'My Panel'

    bpy.types.Scene.my_port = bpy.props.IntProperty(
        name="Server Port",
        min=0,
        max=65535,
        get=get_value,
        set=set_value
    )

    def draw(self, context):
        _prefs = bpy.context.preferences.addons[__package__].preferences
        layout = self.layout
        row = layout.row()
        row.prop(context.scene, "my_port")

def register():
    bpy.utils.register_class(MyPreferences)
    bpy.utils.register_class(MyPanel)
    bpy.context.preferences.use_preferences_save = True # THIS IS THE MAGIC LINE

def unregister():
    bpy.utils.unregister_class(MyPreferences)
    bpy.utils.unregister_class(MyPanel)

if __name__ == "__main__":
   register()

I agree that this should be a default value, but alas... 'tis not.


text:
How do I insert two edge loops equally spaced from the edges?
I find myself doing this quite a lot in Blender 2.8: Add temporary centered edge loop (Ctrl+R click, Esc), then use Offset Edge Slide (Ctrl+Shift+R - I think this is the default?) to generate 2 mirrored edge loops that are equal distance from the corners of the shape, then delete the temporary center edge (Ctrl+X).
Hopefully this isn't too confusing - the point is to quickly create two edge loops that are identically spaced from the edges. This seems like an extremely useful task. My question is - Does Blender have some mechanism to do this in one step? The ability to create 2 edge loops and edge-slide them away from each other simultaneously?
I'm okay with using add-ons if anyone is aware of a tool that does this.
EDIT
After posting, I starting playing around with the loopcut_slide shortcut and may have came up with exactly what I wanted. I haven't fully tested this, so it may completely fail at something later. But so far, it seems pretty good.
It creates two edges (in one click/drag), and moves them toward/away from each other simultaneously.

If you guys have trouble seeing the shortcut, here are the most important settings:

Shortcut Command: mesh.loopcut_slide
Number of cuts: 2
Factor: -0.5 (this starts them in the center - use 0.0 to start at default spacing)
Single Side: Enabled (this was the magic checkbox that made it work)
Clamp: Disabled (otherwise, they cannot move to the center)

The only issue so far is that it is easy to accidentally slide the wrong way with clamp turned off. So it may be better to leave that on.
For anyone not familiar with creating custom shortcuts, you just go into User Preferences -> Keymap -> 3D view -> Mesh (Global) -> scroll to bottom and press add new, expand the new entry and type in mesh.loopcut_slide into the text box. Then set up the options as above.
EDIT 2
After playing around with this some more, it appears this setup does not work as well as I hoped. When the enclosing edges have strange angles, the cut-slide does not perform the way you would expect. So my vote goes to Lemon's suggestion of using Bevel after adding a single loop cut. It works perfectly in all cases
except when your model has UVs (edit/correction: bevel does work well with UVs). I will update this if I manage to stabilize this crazy shortcut.

Using bevel (ctrl+B) on the first created edge loop? With 'percent' option

And for the second question, I use this https://www.screentogif.com/ but there are others.

You can post your edit as an answer. Haven't tested it, but it looks great.

Interesting, the Single Slide option doesn't appear in the Adjust Last Operation Panel.

I know. I thought I tried to figure this out before, and wasn't able to get it working. I don't remember seeing that setting then. I'm not sure what Single Slide means exactly, which is why I'm not sure if this will break down in some specific situation.

I'll check with the developers if it's intentionally left out or if it was simply forgotten during 2.8 development.

I've created a task, might get closed if it's considered a feature request, but we'll know why the option isn't there: https://developer.blender.org/T69218

Thanks. Let me know if you get any information about what it does exactly. My guess is that it has something to do with sliding in one direction. If you cut anything other than 2 loops with that option, it has very strange behavior.

I just wanted to point out that I made the mistake of calling that setting "Single Slide", but it is actually "Single Side". Sorry about the confusion.

@Robert, I think Bevel corrects UVs

You are correct. I didn't expect it would since it didn't have an option for it.

CtrlR for the first loop.
CtrlB to bevel it using the percent option.

ah, cool. You can press ctrl+b, 0.5, enter to make it quicker

This is probably the best built in method available

Maybe even why the Single Slide  option isn't available in the UI?  In the interests of keeping the interface lean?

@RobinBetts, only the devs know it.

Single-side is used to implement "Offset Edge Slide" (Ctrl-Shift-R), tested exposing this and it's not very useful to expose AFAICS.

You can scroll the mouse wheel to increase the number of edge cuts.

Then dissolve the centre loop

Then you'll end up with

If you then want move them I guess you'd scale them on the x-axis. Not sure there's an easy way to do it if it's not along one of the local or global axes, though.

This is not good approach, because it neither solves the problem (slide is required not scale otherwise it just works with faces aligned with the axis) nor does it need less steps than loop cut with offset

I'm not sure exactly what he's asking for then. Unless you're saying that's correct except for the off-axis issue.

Yes and using a middle loop cut and then loop cut with offset is what Robert already did and this approach requires more steps. Didn't mean to sound harsh, it's just that the point of the question was to reduce the steps required.

This is supported by "Offset Edge Slide"

Select the face loop you want to operate on.
Invert the selection (C-i).
Offset Edge Slide (C-S-r)

Enable Even Spacing (e)


text:
Blender Python: Print debugging text from functions
I'm looking for a simple text-print setup where I can see multiple text outputs (multiple lines of text), similar to writing to a text file while ending every statement with an end-of-line.
A simple global function, such as PrintDebug(text), which any code in my project can execute to show progress and stages of execution. Honestly, I expected the standard print() to do this. Where does print() print to?
Is there any built-in functionality to do this, or possibly a simple way to set this up?

Where do you want the output to appear? print() works, the output goes to stdout. Your terminal, console, command line will display the text, if you started Blender from it.

Preferrably into one of the Blender windows if possible, but any accessible area would be great, as long as I can see all of the lines that got printed. I start Blender from a shortcut on the desktop, and the console window disappears after Blender starts. I've never tried to execute from a console. Will try that when I get home, thanks.

If you're on Windows then you can toggle the console through Window > Toggle System Console in Blender.

This helped me tremendously. There are many errors shown in here that never make it to the info window in Blender. It explains a lot of missing details. I was able to resolve an issue in a few minutes that I face palmed over for 3 hours yesterday.

see https://blender.stackexchange.com/questions/6173/where-does-console-output-go

You can use bpy.ops.wm.console_toggle() to display the console, and then you can print using the print() method.


text:
How to create a realistic shader for french fries?
I'd like to create a realistic burger and I don't get how to create a shader for my french fries:

I tried adding procedural textures and displacements, subsurface scattering but unfortunately the shading doesn't look like realistic fries and too flat. Since I'm running out of ideas: What can I do to improve the shader to achieve a plausible and more realistic result?

Attached a blend with some fries and proper UV's:

Please take your time when asking a question. You should know by now, that your question shows no effort, no research and also has some spelling issues. You could at least share a file with the fries using blend-exchange. Please read: https://blender.stackexchange.com/help/how-to-ask thanks.

The method I'd prefer for realism is microdisplacement.  Set your Cycles feature set to experimental so that you can use the Adaptive feature of the Subdivision Surface modifier.

And then set up your material for displacement and bump so that when you connect something to the displacement socket it modifies the mesh.

I used the same Noise Texture for both the Base Color and Displacement, so that I could make the areas with the most displacement a more golden brown.  The Scale values have to be adjusted for the scale you're working at.

I found that a Midlevel of 0 did some work to kind of puff up the model as though it had actually been deep fried, which was kind of fun.
Subsurface Radius value was 1, 1, 1 for this shot.
If that doesn't suit, or if a bunch of highly subdivided shapes are going to be too heavy for the final scene, I think it looks ok with Bump Only, you'd just have to do some work with the model to avoid it looking flat.  It looks like you have some pretty good shape variations to work with so maybe that's a place to start.

Something very strange is happening. I have used adaptive subdivision before but any object with another modifier along with the subdivision surface modifier in my scene does not have the adabtive option in the subsurface modifier. I tried both in 2.92 and 2.93 alpha. Why can't I have adaptive subdivision along with other modifiers?

What I did was I made an archive for the fries and then applied the modifiers other than the subdiv. Now I'll try the microdisplacements.

Thanks! It looks much better now

If you drag the subdiv down to the bottom of the modifier stack you can use adaptive


text:
How can I instance linked assets with attached armatures?
For a short film project I created many assets, each in it's own blend file. Some of the assets contains armatures. I want to link these into the movie scene file, instantiate them multiple times and animate each instance individually.
Is this possible?
Currently I achieved something similar only by duplicating the assets into the scene file which break the ability to update the placeholder assets.
Is there a good workflow?
Greetings

Hi. This site is no regular forum rather a Q&A site. No need to add [Solved] to the title, accept one of the answers instead, thanks.

I solved my problem by trying out and want to share my solution.
Using "Duplicate Linked" is exactly what I was trying to achieve:

After rename and reparent the linked collection I could individually pose each door:

The armature, the mesh and all materials are linked to the asset library file and changes are reflected in the movie file.
Hope to help others with same problem :-)
Greetings


text:
Strange mesh distortion in render?
I follow a tutorial to re-build an effect used in Ghost in the Shell. I did every step and it works fine in the viewport but once I switch to cycles, the image just went spiky and crazy:

Here is the file without baking to keep it light for you to check. It bakes quickly, looks good in viewport but is spiky in the rendered image. Please have a look:

Q: How can get the viewport result when rendering the image?

Link
https://www.youtube.com/watch?v=gqvqx6VtjEk

Hard to guess, most likely bad displacement settings. Suggest share your file using https://blend-exchange.giantcowfilms.com/

i added the file without baking to keep it light for you to check..it bake quickly...shows good in viewport but go spiky in render...please have a look

Subdivision modifier is disabled for viewport rendering

If you apply the subdivision and bake again, the issue disappears.


text:
Incorrect renders in Eevee and Cycles
I'm having a weird issue I've never seen before. My model is rendering fine in Render Preview mode with Cycles selected, but when I actually do a Render Image, I get garbage. The orange dome, the nacelle behind it, and my lights inside the dome are all gone, and the render lacks color. First image here is the preview (correct), second image is the render (garbage). Same result in Eevee. I can't figure out for the life of me what I'm doing wrong.
Blender 3.3.1 LTS, Mac Studio (M1 Ultra, 64GB RAM), MacOS Ventura 13.0.1.

Hello and welcome! can you share the blend file https://blend-exchange.com

Hello asalaw! Could it be, that you disabled the render visibility for some collections or single objects?

Thanks for answering! You're close--I discovered one of the collections was corrupted (it had a red icon that I did not set). I took all the objects out of it and deleted the collection, and that fixed the problem. Thanks again!


text:
How to prevent instances from changing positions during animation?

I would like to add a wave modifer to my object that has scatterd instances. however when the wave modifer is active the instances change postion via blinking in and out. How can i prevent this?

Hi, robin. I can reproduce this. The minimal case is: with the Wave modifier above the GN modifier, and no random rotation/scale, with simple instanced Mesh Primitives . Maybe better to present this case, to help focus on the central problem. (If you don't mind your instances being deformed by the Wave, you can realize them, and put the Wave below the GN. That's a fix)

They blink in and out because the Wave modifier is changing the position and orientation of the surface the point distribution is happening on—as the surface moves, points get distributed all over again and they don't always fall on the same exact positions. In the setup below, I'm using two Geometry Nodes, placed before and after the Wave modifier, to work around this problem.

First GN setup distributes points on the surface and stores them as a selection for later use, with a Store Named Attribute—Boolean node. You can name them anything, I used dots.
Subsequent modifiers on an object that manipulate geometry cannot read unrealized data (like points or instances) and can only work on mesh, so I'm also converting them to vertices to make sure they move with the waves.
In the second GN modifier, after the Wave distortion has already happened, I place my instances (in your case, leaves) on the vertices I had saved before, using a Named Attribute.

+1 niiiiiiiice!!


text:
Maya Bending in Blender, is it possible?
current iam following a enviroment Tutorial, but the Teacher is using Maya. He bends a floor part with 15 degrees, when iam doing the same in Blender with the simpl deform Modifier, i dont get the same result. Is there a way to get same result as he got in maya?
Thanks for reading :)

-15 Z with object's origin at corner ...

... or place Empty at lower left corner and use as Origin object in modifier.

Thanks a lot that helped me :)

An alternative to Vklidu's answer is the Mesh > Transform > Bend. Put the cursor at the bottom left:

Then put your mouse at the bottom right, ShiftW and drag:

OMG thats Awsome thanks a lot guys. I also found out, that i have to allign the mesh first to the 3D cursor where I want the pivot point and than set the pivot point to the 3D Cursor... If I set the pivot point first it will destroy the Mesh Dimension Inofrmation.


text:
Wierd description text near HardOps Inserts
i think my issue isnt a issue and i think the solution is very easy, but i never worked with that "description thing". So the problem is, when I insert a HardOps insert via KitOps i get these strange description text next to an object. I hope you guys can help me out. I added screenshot to show the "strange description text".
I want only to hide this text or just to delelte it.
Thanks and have a nice day :)

I guess that text is being produced by HardOps or KitOps. It certainly hasn't been produced by Blender itself so you'll have to ask the HardOps developer as that's a third-party addon not part of Blender.

Issues related to add-ons not managed by Blender should be directed to support channels for that specific add-on. With that said, the answer is that all items with a representation in the 3D viewport (meshes, curves, empties, etc.) can have their name displayed by checking this box under Object Properties > Viewport Display. If you want to hide their name, just uncheck that box: .

Thank you. You saved my life :)


text:
Gunpla, matte plastic shader
Is there way to create shader like Gunpla's plastic like below images?
Its not a shiny plastic, but more of matte + airbrush grains.

..it's not just the material and bumped-up ambient occlusion.. it's also the lighting. and choice of palette..

I think you have to specify more what you want to achieve since those images are not high enough in detail to understand the exact thing you have in mind. To me, it looks like a plain plastic surface, nothing stands out of the ordinary.

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer.

@RobinBetts ah got it, I wanted to know if there a way to produce similar look. Thank you for the comment. I will experiment on this.

A quick node setup for this look. Tho it depends on the color and lighting, use the AO to highlight the dark gaps in the figures, a subtle noise texture for the airbrushed look, play with the roughness and subsurface to get the aesthetic u want, rest is pretty straightforwad I hope!

Thanks! I will give a go and tweak with it :)


text:
Assigning a python command to a mouse hotkey
I am using an add-on called hexblender, which has some buttons that are useful for making meshes for finite-element models. I would like to assign one of the button's python commands to mouse button 4.
When I hover over the button, it says:

Python: bpy.ops.hexblender.adjust_nodes_linear()

When I run the command from the command line, it does the right thing. Is there a way to assign this command to mouse button 4? I can assign other things to mouse button 4 but I cannot figure this out.
Any help would be greatly appreciated

open User Preferences -> Input
open some category and click Add New button
insert hexblender.adjust_nodes_linear into the input field
assign some keyboard shortcut
test the keyboard shortcut and if it works, use the X-Mouse Button Control application to set your mouse button action to trigger your keyboard shortcut


text:
Why is the aspect ratio for this UV-unwrap wrong?
I have been at this for days now, but I can't figure it out.
Why is the point / pinacle in the uv-unwrap not centered like it is in the object?

blender object and the uv

No images visible, did you use imgur?

Like i said i'm still a novice.
The devil was in the details, as a result of the beveling on the top there were still some minor issues (overlapping face, 2 vertices to be joined) at the outer right side of the object. After I took care of those issues the unwrap already looked much better.
Because the front face still showed some stretching, I divided (1 time horizontal and vertical) the front face. Then the unwrap worked like a charm with almost no stretching / deformation.
Took me many days, but i learned a lot !!


text:
Can you animate objects using differential equations?
I am looking for a software to animate biological processes based on differential equations, and I was wondering if Blender would work for something like this.

Would suggest using other software to solve differential equations for x, y, z, t  Then blender would be fine.

Many differential equations can be solved and animated using animation nodes. For example, the equations for a mass on a spring with a damper were used to animate this cube.

This example is at

Overview

Differential equations can be simulated, frame by frame in an animation, if they are in the form of a 1st order, ordinary differential equations. See an example of forming 1st order ODEs at Example.
Once in the form of a 1st order ODE, simulation consists of calculating the change in state when the frame changes.
The state is used to change some aspect of the animation, like the position.
This can be done by saving the state in a text block, and at each frame change, updating the text block by solving the differential equations.
The animation nodes add-on makes it relatively simple to implement this.

Detailed steps:

Start with the differential equations. Arrange as 1st order differential equations. The equations for a spring-mass-damper are . By rearranging this equation into a 1st order differential equation, this is easily simulated. The 1st order differential equations for the mass spring damper are below. These equations show that the change in velocity is a function of the spring force and the damping force. The change in position is a function of the velocity.

If not already installed, install the animation nodes add on. See Animation Nodes on GitHub
Create a new Blender file.
Create two text blocks. Name them 'IC' and 'state'. Add the initial condition for the equations in to the 'IC' block.

Open up the node editor and create the following animation node setup. The setup is explained below. This setup consists of 4 major parts. A part to read the state from the data blocks, a part to write the new state, a apart to solve the equations for one frame, and a part to update the animation.

The part that reads the state from the text block includes logic to determine if the animation just started. If the frame number is 1, then the initial conditions are used for the equations. Otherwise, the last stored state is used. The contents of the blocks is converted to numbers to work with the equations.

The differential equations are solved in this part. These equations mirror the equations in step #1 with some modification to solve the differential equation (see euler method). The time step (dT) for each frame is used to determine how much the position and velocity change. These changes are added to the prior position and velocity.

The updated state is written to the 'state' datablock.

To have the animation affected, the animation nodes take the position variable and use it to change he position of the cube.

The blend file with this example is located at

You can also write some Python script that writes its outcome to an fcurve. It can evaluate the differential equation, look up the value from the previous frame in the fcurve, add the two together, and write the result to the current frame.

You can do this by using curve modifiers. As soon as you set a keyframe on any property, it will show up in the graph editor. All channels in the graph (f-cuves) can be manipulated with modifiers. Try the generate modifier for example, you can put equations there.
https://docs.blender.org/manual/ko/dev/editors/graph_editor/fcurves/fmodifiers.html

Can you elaborate with an example?

It would be nice to have a specific equation first, so we can see if the generator is sufficient, or if it's better to use Python.


text:
Shrinkwrap a shape onto a mesh?
I am trying to figure this out, but I cant find a way to do it.
I want to wrap this shape on to this "cup" model.
Is there anyway to do this??

Please show/explain at what point in the process the shrinkwrap is failing.

Related https://blender.stackexchange.com/questions/52904/wrap-curve-around-sphere


text:
Change the "used UVLayer" in all materials in texture_slot 0
i have a model with multiple materials and i like to change the UV-Map for the texture slot "0"
I got it to work with only one material:
import bpy
bpy.data.materials["Wand_Putz_Weiss02.tif"].texture_slots[0].uv_layer = "UVMap"

or like this:
import bpy
bpy.context.object.active_material.texture_slots[0].uv_layer = "UVMap"

is there an way to change the "used uv layer" in all materials assigned to an object?
thank you very much for your help!
greetings,
simisoad

i got it to work... wrong syntax was the problem :) i not used to program with python.
here is my solution:
import bpy
for item in bpy.data.materials:
     for itextures in item.texture_slots:
        if itextures is not None:
            item.texture_slots[0].uv_layer = "UVMap"

This will fail when item.texture_slots[0] is None when  there is another texture in a latter texture slot.  Either just check on item 0 and set if non null, or would need to find first non null texture slot and set that.  (The latter would be same as code above, edit  last line to itextures.uv_layer = "UVMap" and add a line in if block : break to quit the inner for loop.


text:
Blender - 3D view does not refresh with my python script
I have an Arduino connected in serial with my Mac, it works, I get my datas in blender but the visualisation of the 3D view does not work.

import bge
import serial
import io
import mathutils
import math

def main():

#get info about the Brick
cont = bge.logic.getCurrentController()
own = cont.owner

#Get sensor info, so we can run this script in loop
mainloop = cont.sensors["MainLoop"]

#initialization, run this only in the first loop
if not 'init' in own:
    own['init'] = 1 #create own['init'], so we know that we have done initialization and we do not run it again

    #initialize serial port
    own['serial_port'] = serial.Serial()
    own['serial_port'].baudrate = 9600
    own['serial_port'].port = '/dev/cu.usbmodem1431' #adjust to your port
    own['serial_port'].timeout=0.1 #you may want to play with this value, lower is, higher value e.g. 1 will slow down everything

    #needed for readline command (if you decide to use it)
    own['serial_io'] = io.TextIOWrapper(io.BufferedRWPair(own['serial_port'], own['serial_port']))

    #open the serial port
    own['serial_port'].close() #sometimes the port is stucked if not closed properly, force it to close
    own['serial_port'].open()
    print("Serial port Open = ",own['serial_port'].is_open)

    #start the loop
    mainloop.usePosPulseMode = True

#Main loop
answer = ""
quit = 0;
while quit<2:  #wait in this while until we have at least one full valid data
    if own['serial_port'].in_waiting > 0:
        byte_in = own['serial_io'].read(own['serial_port'].in_waiting)
        answer = answer + byte_in

        if answer.count('q')>1:
            q=q+1
            print ("QUIT DETECTED")
            answer.replace('q','')

        if answer.count('#')>1:
            answers = answer.split('#') # break the answer into pieces
            datas = answers[0].split(';')

            if len(datas)>2:

                ownOrient = own.worldOrientation.to_euler()
                ownPosition = own.worldPosition
                ownOrient[0] = math.radians(float(datas[0])) # I used -1 as the brick was rotating then
                ownPosition[1] = float(datas[1])*0.1 # I used -1 as the brick was rotating then
                ownOrient[2] = math.radians(float(datas[2])) # I used -1 as the brick was rotating then
                ownMatrix = ownOrient.to_matrix() #build our new matrix so it can be applied to the object#
                own.worldOrientation = ownMatrix #set the new orientation

                own.worldPosition = ownPosition #set the new orientation
                //HERE IT SHOULD REDRAW THE 3D VIEW BUT NOTHING HAPPENS

main()

If someone knows why nothing happens when running the program, I would appreciate the help.
I should obtain something like this:

Ok I found the answer,
The while loop is not the way to do it because it freeze the render until it get out of it.
I have to code a class without this while loop


text:
Saving and Restoring View Changes
Edit/Note: I edited the title of this question to match the only answer that seems to be available for this situation. Original question was how to "Undo/Redo View-port Changes"
Original Question:
I'm pretty sure Blender does not have any direct way to undo view-port changes (similar to Max - if I rotate the view, I can press a command to go back to the starting point of that rotation). But has anyone figured out any trick or found any script that accomplishes the same thing?
I'm surprised so few people have asked about this. I definitely abused this ability in my Max days, and wouldn't mind doing it in Blender, if its possible!
Edit: Another similar question would be the possibility of saving view-port orientations and reloading them via commands. Is something like this possible without a lot of hassle?
Thanks for any advice!

maybe the trick is to use several cameras, you can switch from one to another as you want (select and ctrl 0) and you can align the selected camera to the view (ctrl alt 0). Also, to make sure that they won't move, lock their location or create some location keyframes.

Yes, that sounds like a reasonable solution! Thanks!

I'd rather have the Shift-Z feature (or similar) to simply undo the view change. Looks like this has been brought up a few times before:
https://blender.community/c/rightclickselect/QLdbbc/
https://developer.blender.org/T47391

There is an addon called Stored Views (3D View: Stored Views) which comes with Blender 2.80. This simple extension allows you to save views (location & rotation of viewport). The UI for it is located in the [N] sidebar panel under View -> Stored Views.
You can save and name any (?) number of views and quickly restore them by pressing their respective buttons. No cameras required. Although it actually allows you to save the current view as a camera as well.
It is not exactly what I originally asked for (restoring viewport changes), but it is the next best thing. Maybe actually better in terms of workflow.
Hopefully this will help those (like me) who model objects at crazy orientations.


text:
Blender Add-on Dev: Unregister is never called on Blender Exit?
In my add-on __init__.py file, I have a function defined def unregister(): which unregisters all other modules. But when I exit Blender normally (Windows 10, X button), this function is never called.
Edit Note: This is normal behavior - see answer
Is there something that needs to be done before Blender executes unregister() on exit? Or perhaps some error in my add-on may be causing this behavior? I get no warnings or errors. Only two lines print out on exit:
Saved session recovery to 'C:\Users\Moats\AppData\Local\Temp\quit.blend'
Blender quit

Maybe this is normal? Blender is saying - its over, so it doesn't matter? One other unlikely possibility is that print() doesn't function after a certain exit point. I can probably confirm this, but not easily.
If anyone knows what might be happening, or can confirm that their own unregister() is being called on exit, I'd really appreciate it.

The unregister() function is only called when you deactivate the add-on in your preferences, as far as I'm aware. Add-ons that store settings in the preferences commonly remove them when unregister() is called. It would be very inconvenient if that was the case whenever Blender is closed. For an example see the add-on in this answer https://blender.stackexchange.com/questions/153022/pycharm-remote-debugger/153031

Yeah, I'm still finding my way around in this area. I assumed register() was a sort of activation area, and 'unregister()' was the exit point of that activation. I just assumed all add-ons would be deactivated before Blender shuts down. I've noticed several add-ons doing this, so it must be a common assumption (unless they were only trying to clean up for add-on toggling). So then it would be unwise to try to initialize in register() and clean up in unregister()? Such as, for example, to flush some file buffers on exit (random example). Where would be the best place to do this?

The add-ons unregister the classes that they have registered and delete types that they have created. They shouldn't do anything that needs to be executed when Blender terminates (because the unregister() function doesn't get called when that happends). If anything needs to run when Blender closes you would use atexit.

Update: Since commit rBfa566157a5c351775d082b05b180c630665b4afc Blender calls unregister on exit in WM_exit_ex through addon_utils.disable_all(). This only calls unregister for the installed and enabled add-ons though, not for scripts run from the text editor.
You can verify this by saving the script below in a .py file, installing and enabling it as an add-on in Edit > Preferences > Add-ons and then closing Blender. The test.txt file will contain the "unregister" line when using Blender 2.91 or later, assuming that you have the required permissions to write the file.

Old answer that applies to versions prior to commit rBfa566157a5c351775d082b05b180c630665b4afc
The unregister() function is only called when you deactivate the add-on in your preferences, while register() is always called when Blender starts in case the add-on is activated in the preferences. You can test this with the following simple add-on that writes into a text file whenever one of the functions is executed. The example also includes how to add a handler that is triggered when Blender is exiting.
This add-on tries to write the test file into Blender's install directory. If that directory requires special permissions, then you should adjust the path to somewhere it can write the file to.
bl_info = {
    "name": "Register and unregister test",
    "author": "Robert Guetzkow",
    "version": (1, 0),
    "blender": (2, 80, 0),
    "location": "Dummy panel in View3D",
    "description": "Check when register and unregister are called",
    "warning": "",
    "wiki_url": "",
    "category": "3D View"}

import bpy
import atexit

class EXAMPLE_PT_panel(bpy.types.Panel):
    bl_label = "My own addon"
    bl_category = "Name of your tab"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"

    def draw(self, context):
        layout = self.layout
        layout.label(text="This is a label")

classes = (EXAMPLE_PT_panel,)

def exit_handler():
    with open("test.txt", "a") as myfile:
        myfile.write("exiting\n")

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    with open("test.txt", "a") as myfile:
        myfile.write("register\n")
    atexit.register(exit_handler)

def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
    with open("test.txt", "a") as myfile:
        myfile.write("unregister\n")

if __name__ == "__main__":
    register()

Extremely helpful, thank you. I was not able to find atexit in the manuals. I'm assuming that Is a python level event? Do you happen to know in what order it would call the event handler? Or rather, at what point in Blender's shutdown sequence exit_handler() would be called? I can probably figure this out with print() tracking, but if you have any experience using it, I appreciate any details. Anyway, thanks for this detailed example. It shows exactly how to use it.

It's a Python feature which is run when/before the interpreter is terminated. https://docs.python.org/3/library/atexit.html https://blender.stackexchange.com/questions/48565/how-to-run-a-python-callback-when-blender-exits

My bad - I tried to find something like this, but apparently didn't use great search terms. Thanks again. Huge help.

Related question that I think you may be able to answer, @RobertGützkow :
https://blender.stackexchange.com/questions/260235/blender-python-addon-doesnt-unregister-registers-fine


text:
Add-on Dev: How to iterate the properties of a type and read/write values
I'm wanting to iterate properties and get/set values. Example code:
for prop in self.rna_type.properties.keys():

    # get property name
    name = str( prop )

    # skip properties if first ident character is lower case (auto added properties)
    if name[0].islower():
        continue

    # assign new value
    self[name] = value

Edit note: There was no need for me to convert prop into a string with str() at the top of this loop. All elements inside of keys() are identifier strings.

If I'm understanding you right, you could simply iterate through all properties and check if their values are of type bool. If they are, then set them to the desired value.

@rjg: Yeah, that's what I'm after. I'm just not sure how to use that object/list. I'm currently trying to use dir() to figure it out, but looking for any type of information about dealing with them. Primarily what each member variable represents.

Annotations? Suggested here: https://blender.stackexchange.com/a/152816/31447

You can iterate through the annotations to get and set each prop.
>>> settings = C.scene.my_addon
>>> settings.__annotations__.keys()
>>> for p in settings.__annotations__.keys():
...     getattr(settings, p)
...     setattr(settings, p, True)

Think I'm finally starting to understand how some of this works. So keys() is just a list of property identifier strings. values() is a list property values, and items() is sort of a combination of both. When you showed me __annotations__ before, I assumed it was some component specific to Blender's preference class. A specific nested type. That's on me, sorry. Also appreciate the usage example.

Glad I could help @Robert Yep, keys() returns the keys and values() the values of an usual key-value pair (aka dict).


text:
Object Organization - Hierarchies, collections, groups, empties?
If I want to organize my sub-components into a convenient hierarchy in 2.8, what is the best approach? Should I use collections, groups, empties, or simple parenting?
First, I haven't been able to understand what "groups" are or how to create them. I read something about them in the manual, and couldn't understand what differentiates a group from a collection.
If I have some object that represents a single entity, but consists of multiple components (frame, seat, planks, cushions, etc), is it best to create a sub-collection for this? Or would it be better to identify one of the elements as the "root" and parent all other elements to it? Or is it better to create an "empty" and use that as the parent/root?
Another thing I'm trying to understand is why empties come in different modes (arrows, axes, shapes, image, etc). Is there a reason for these? Are they intended to serve as identification helpers (use a cube for a car object because the shape helps identify its owner)? Something else?
Lastly, if you guys use empties for this, anything you would advise about it? Do you change any settings or options in yours? Maybe disable visible in viewport, or some other setting?
Edit: One thing I just noticed is that you can easily duplicate an entire collection using the context menu, which is pretty convenient. Doesn't look like this is possible with an empty.
Thanks for any advice!

I would suggest using collections for grouping objects together.  It's flexible, and very orginizable.
also, there is no reason for selecting a different shaped empty except for personal preference on shape, (or for selecting a shape that fits the object like you mentioned in the question.)
and groups are now obsolete.  They were used in 2.79 and backwards.  Collections are the new and improved thing.

Another reason (I just discovered) is that toggling the visibility of empties does not change the visibility of its children. I guess it depends on your workflow, but I toggle collection visibility to show and hide associated objects pretty frequently.

yeah, that's another useful feature.


text:
Outline works, but badly
I'm very new at Blender but have (or had) a pretty extensive knowledge of 3dsmax.  So I've managed to make this shape, and even managed to do outlines to make it look like a drawing, which is what I'm going for.  But as you can see Blender has taken it upon itself to add some lines where there shouldn't be any, most notably between hole three to hole four. I made this by making a cube and then making a bunch of smaller cubes and then difference-booleaning them out.

Q: Any way to convince Blender that there shouldn't actually be lines where it mistakenly drew extra lines?  Or do I have to paint them out using Photoshop?

Hello :). How did you generate the outline? Using freestyle lines? Consider sharing the file, there might be multiple reasons.

It is hard to answer without seeing the actual topology. If you have n-gons or superimposed edges, that might throw off the freestyle engine. Please share a wireframe view or even your file as suggested

@Gorgious i bet, the topology is exactly what you see.  These lines are generated for holes inside n-gons.

Check section "Edge Mark" or "Face Marks" https://docs.blender.org/manual/en/latest/render/freestyle/parameter_editor/line_set.html

Well that's easy enough...here's a link.  https://www.dropbox.com/s/1lljtxfw79prmi9/Supra%20wiring.blend?dl=0
But really it's just a cube with a bunch of boolean cut-outs via smaller cubes...nothing complicated at all.
Yes, I did use freestyle when rendering, I didn't know of any other ways.  I will look into Edge Mark and Face Mark though.

Well I found the section where you can choose what sort of freestyle lines you want...I tried them all and the one I want is Crease.  I'm not sure why these extra lines are showing up though, by the definition of Crease on the link vklidu sent me it says it marks edges with angles greater than the crease angle, so why would these no-angle surface lines show up at all?
I could select each line and edit the Face Marks, and I may end up doing that, but is there an easier way? This drawing is fairly simple, but I would hate to have to do this for something complex.

Sorry for a late attention, next time if you want to notify someone directly start comment with @username Thank you

This was an wild hunting ... uf :)
The issue comes from N-gon faces generated by the boolean operation.
When model consists from quad or tris faces it works fine.
Solution is to add a Triangulate Modifier at the end of modifier stack like so:


text:
Why a new 'merged' mesh is created when adding multiple loop cuts?
I'm just introduced to loop cuts which add more vertices to the mesh but for me it seems to be creating a new 'merged' mesh.
I have no clue why especially since I can account for all the the meshes in the outliner and there doesnt appear to be an extra duplicate. Extruding seems to work just fine but loop cuts just do this when I try to transform the mesh after the loop cut.

you must have two meshes overlapping, perhaps try a Alt M > merge by distance before creating the loop cut

It looks like at some point you duplicated something somewhere. I can't tell if it's just that mesh (duped in edit mode), or another mesh (object) sitting in the same spot, which you selected in addition to the first one before entering edit mode (which is why you can still see the wireframe). My guess is the latter, based on the "Sprinkle L.001" in your outliner.

Hi and welcome! This is no regular forum rather a Q&A site so please always try to be specific in your title of the question which will make your question helpful to future visitors, I'd recommend read: https://blender.stackexchange.com/help/how-to-ask and take the tour to learn how this site works. Thanks.

Loop cuts are inserted using Ctrl+R or the Loop Cut tool in the Toolbar. Both tools are going to place an edge in a loop of faces and do not create any double geometry.
If you have double geometry after inserting a loopcut, it is there definitely not because of the loop cut, but because of some other mistake.

So i guess it just has to be that the original sprinkle I used also had a duplicate on top of it? cause I tried doing a loop cut on all the variants and they all had the same issue except the sphere which was added separately as a new UV Sphere.

It seems there can be no other explanation. You must have pressed Shift+D with everything selected in edit mode accidentally or something like that. You have to track and keep in mind every single thing you do or press in Blender because those operations always do something even if it is not visible. You could select all in edit mode with A and hit M followed by B to merge vertices by distance to deal with duplicate geometry if you need to correct this mistake.

@brockmann, thanks for taking the time to edit! :)

No problem, nice answer... glad I could help @MartynasŽiemys


text:
How can I retrieve current frame number for use in Geometry Nodes?
I know that I can use key frames in various fields of the Geometry Nodes. But I want a more explicit reference of current frame number. The only thing I found is the 'Frame' layout to enclose nodes.
Is there a 'Frame' node which outputs the current frame number?

@Gorgious, thanks for your info. I'll look up more info on using driver. An explicit Frame/time node is the preferred way to show how an animation depends on frame/time explicitly and directly in the graph tree (with the help of other math nodes).  For example: a simple animation that shows the size of a cube changes sinuously.  Do you know if there is any plan for a simple Frame/time node?

FOR BLENDER VERSION > 3.1 : Refer to the other answer
I don't think there will be a node specifically designed to access the frame number. Although, like in the shader editor where this information is also sometimes needed, you can use a very simple driver to access the frame number directly.
Say you have this kind of setup and would like the Value node to output the frame number.

Left-Click in the value field like you would do if you wanted to input a new value, and type #frame. This will automatically create a driver (which can get a bit complicated if you want to go into the details, but in this case there is no need). This driver will have the same value as the current frame.
The field becomes purple to indicate it's now driven. To remove the driver, right click in the field and choose : Delete Driver.

Say you would want the value to increase more slowly. There are two methods to do it : Either tweak the driver (lesser solution) or add a math node afterwards (preferred solution, at least if you aren't really at ease with drivers).
Method 1 : You can add an operation after the frame driver.

Method 2 (better) : Use a math node. this gives you control over the multiplier and you can link it to the input node to directly tweak it into the modifier properties editor.

Tip : Use F2 or Right Click > Rename to rename the node to Frame.

I followed the steps and get the animation working! Thanks a lot for the details and clarity.  Just out of curiosity, is there a hashmark for max-frame-number? I am thinking normalizing the animation speed.

@Shung-Ching it's the only global variable available by default AFAIK. https://docs.blender.org/manual/en/latest/animation/drivers/drivers_panel.html#simple-expressions You can add a key to the driver namespace https://docs.blender.org/manual/en/latest/animation/drivers/workflow_examples.html#driver-namespace and https://blender.stackexchange.com/questions/84391/can-i-permanently-add-add-a-method-to-the-driver-namespace to permantently add it. Feel free to ask a new question if you're having trouble doing it :)

I meant adding the frame_end property which is attributed to the current scene

Thanks for the help again. It worked!

More modern answer (>= Blender 3.1; Released March 9th, 2022)
Blender 3.1 added the "Scene Time" node. It offers the current scene time in seconds and in frames (both as float values).

Link to the corresponding documentation: https://docs.blender.org/manual/en/latest/compositing/types/input/scene_time.html

For frame_end as mentioned here, there isn't a global variable for it. But most properties like this can be called in drivers using "Input Variables".
Making them manually is a bit slow, the fastest way is to  RMB the property you need > Copy As New Driver, then make a Value node,  RMB > Paste Driver.

You can use that node as is. But if you want to have that Input Variable in another driver, I.E. for use in a scripted expression, you can  RMB > Edit Driver, and from there you have buttons to copy/paste input variables.
I.E. If you want a driver to give frame_end - frame, you can do this:


text:
Rigify: Problems generating rig

I am having problems with the authoritative addon "rigify". When I push the generate button, it does not generate a IK or anything else. I get it in the panel in the right corner, but cant see the rig. I have Auto Run Python Ticked and haven't done anything to the rig, other than positioning it to the mesh. I dont get any errors either. Anyone know what the problem may be?

Could you please provide both the blender version and rigify version?

Blender v.2.78 and Rigify is v.0.4

try running the setup file again. it might fix something missing. Or untick rigify in addons and retick again. as i remember one of these worked for me

Found the problem... I had increased the size of the mesh and skeleton. Therefore, I did not see the generated rig as it was hidden in the butt of the mesh. Stupid or me, to not notice this earlier...
Thx for answering me batFINGER. Appreciate it :)

lol ... scale is so often an issue.  Rule of thumb apply scale so its (1, 1, 1) if having object scale isn't needed.  Noticed my version of blender 2.79.1 has v 0.5 of rigify.


text:
How to put all armature bones under 1 root bone
i have downloaded many arm rigs for my first person project in UE4. UE4 only allows for one root bone when importing. All of the arm rigs i have downloaded have many bones, rather than being children of 1 root bone. I have tried making a new bone, then setting it to the parent but the animation randomly flails and rotates when i try and move the IK handles. I was wondering if anyone knew how i could edit these to allow for 1 parent bone whilst not affecting the other child bones. I will not be moving the root bone at all if that matters.

Bone is the 'root' bone i added
When i try to move any of the IK handles, this happens, after i have added the root:
https://gyazo.com/202c9159a6b2081acb82beb3b39c03f1
When i move the IK handles before the root is added, they work fine and adjust properly.
can anybody tell me why this does not work and/or how i can fix it.
Note: i made the bone a parent by selecting all of them, the bone last then pressing CTRL+P and hitting keep offset. Here's a gif of what happens when i dont have a root bone:

Note: i made the bone a parent by selecting all of them, the bone last then pressing CTRL+P and hitting keep offset. Here's a gif of what happens when i dont have a root bone: https://i.gyazo.com/ebc2caddc60a391ad735345cb1cd7280.gif

Select only top level bones.
Select only bones that have no parent, to be children of the new root bone. As can be seen in the picture fore_arm has been re-parented from presumably upper_arm to the root bone via incorrectly selecting all and parenting to new root.
Suggest, after adding new root bone (before any parenting), select all other bones on the same level, and parent those to new root.

For means of demonstration have added the rigify human rig and deleted the spine root bone, then added a new bone "Root".
Shift-select the bones in same level in outliner, lastly "Root" , parent CtrlP and choose either connected to have children connected to Root without offset, or, probably in most cases, offset.

You're a life saver. Thank you so much.


text:
Snap context override on 2.8x
Is there any way to override “object_bases” and “active_base” in order to limit snap to some objects ?
Looks like those vars are no more available in context in 2.8x
From snap source code
act = view_layer->basact;
for (Base * base = view_layer->object_bases.first ...

But looks like python context “view_layer” doesn’t expose any of them.

What operator are you wishing to override?

transform.translate
in order to hide some objects from snap and explicitely add other ones.


text:
Cloth with pinning and collision is not wrapping body properly
Here are my modifiers settings

If I did not turn on collision on body, cloth does not wrap all sides of the body:

When I turn on the collision cloth did not fit on the pinning points
I am lost in it, can some body point out the issue?

Updated:
As per suggestion added the solidify result is more or less same:

Pining Vertex group and dress in edit mode showing edges

Thank you very much for your solution, please take a look of updated question!

Yes, its on 2nd position and cloth is is the last item on the list

Can you show us how your cloth looks like in edit mode and where are the pinning points ? Can you try to scale up the cloth in X/Y plane at the waist ?

Please have a look of updates

Let us continue this discussion in chat.