text:
How to control the size of faces in geometry nodes
So, I want to create a structure only with geometry nodes. My structure so far resembles an ico sphere with hole in it. I figured what I needed to do first add volume to the mesh,figure out a way to delete one face from the mesh, and inset it. My question is how do I control the size of the delete geometry?
Also, I am completely new to this, I figured the best way to learn is to make a project for myself so it is completely and mostly possible I am going about this wrong and I am open to any and all suggestions.

so are you basically asking how to expand a selection? (also please specify what version you are using; different versions often have difficulty solution as geometry nodes progresses)

you can e.g. use scale elements node. Pls provide at least the node tree you use for your hole so that we can help you. Even better would be to provide a minimized blend file with your problem. why? because you want free help from us in our spare time. So you should make it as easy as possible to help you quickly. thx.

It is not clear to me what are you asking for? To scale Face see my Answer, but you described your Q How to control size of deleted geometry ... How can be controled something that is already deleted (doesnt exist)? Please add some mockup or sketch of desired result to give us a better picture of what you are looking for. Thanks

How to control size of face in GN ...


text:
Where these white spots in the preview image of the shader come from?

The preview image of the shader has some white dots. Is this due to e.g. uncoloured vertices?

if i increase light source sun size then object looks good but the preview panel circle still has some white dots on a certain region.

This is only a preview for the material, and the white dots are reflection render.
Don't worry about it.

source: Stack Exchange

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

sort: votes


text:
Light Path Expressions (LPE) in Blender
It seems like blender does not have a feature to render light path expressions like these in RenderMan.
There's a thread on devtalk about this but I havent seen any further updates.
Essentially, I want to render the LPEs found in the Stylit paper (see figure 4).
Here's a screenshot of it : https://i.sstatic.net/9CPZC.jpg.
They are:

full global illumination render
direct diffuse render
direct specular render
first two diffuse bounces
and diffuse inter-reflections.

The first is straightforward but trying to generate the others using blender's cycle renderer is not trivial. I've managed to generate 2 and 3 (here: https://i.sstatic.net/1dSBZ.png) but I can't seem to render no. 5.
Is there a better way to go about this in blender? Or are there open source libraries that are probably more fitted for this?

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


text:
Blender 2.82 - 2D Grease Pencil Colours seem dimmed in Renders?
So I'm testing out more of Blender's Grease Pencil for animation, but I'm noticing that the colours I draw in the Viewpoint do not render out the exact same, and look darkened.
As a test, I drew a simple face on a scuplted sphere, with just black and white, however the White of the eyes looks darkened when rendered...

Does anyone have a solution for this? Thank you in advance.
EDIT - Thanks to Leander for the solution, the issue was using having it set to Filmic colour rather than Standard.

Are you perhaps using the Filmic default in the colormanagement? Try switching to Standard.

Ah there we go, that fixed it. Thank you very much.

Please don't add solved to the question title. If you have the time, write an answer and accept it for future visitors. How this site works: https://blender.stackexchange.com/tour and how to write an answer: https://blender.stackexchange.com/help/how-to-answer

Answer - Thanks to Leander for the advice, the default Filmic colour space in Colour Management had to be set to Standard for the render to come out correctly.

One thing else to check, if you are setting up a Grease Pencil object from scratch and light is having an effect on the color: With the grease pencil object selected, inside Properties panel, go to the Object Data Properties tab. It's the tab that uses the green squiggle line.
In the tab, you should see your Layers expandable menu. Expand it and look below the Opacity slider, you'll see a checkbox called Use Lights. If you click this off, your grease pencil object will display colors as expected, if you leave it on then you can light the grease pencil objects using a normal light source.


text:
How do I set third person controls in bge?
I am trying to make a third person game. When moving my character, I want its direction to be determined by the position of the camera, not the direction my avatar happens to be facing. How do I do this?

Change your motion actuators to global instead of local

Try clicking on the L on the right. also does your character rotate mid game or just move left, right, forwards, and backwards?
If you set the motion to global, the movement would be always in the same direction even if your character rotates. So as long as your camera doesn't rotate, the movement should be always the same and therefore the same with respect to the camera.
Hope this helps :)

Could you please elaborate a little?  Maybe explain how to do that and how it works.

Yeah sorry about that

Since you'r making a 3rd person game, I recommend watching this video on how to make a FPS setup. This guy also has a really great series for BGE.
Hope that helps.

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


text:
How can I add/remove code, through code, at runtime?
I have a panel setup to do a whole bunch of stuff for a laptop model. I want it to have a system where you can add/remove a 'controller' as you would background images. I have the UI setup with the add controller button and a remove button, with all the content inside a box. How can I set this up to add a new box with all the content when the add button is pressed, and remove one when the remove button is pressed, the same way the background image system works?
Here's what I've got:

Here a small section of my code, I think it's all that should be needed:
class IgnitProperties(bpy.types.PropertyGroup):
    user_items = CollectionProperty(
        type = UserItems
    )

class UserItems(bpy.types.PropertyGroup):
    user_str = bpy.props.StringProperty()
    user_int = bpy.props.IntProperty()

class AddMacBook(bpy.types.Operator):
    bl_label = "Add MacBook"
    bl_idname = "macbook_controller.add_macbook"

    def execute(self, context):
        item = bpy.context.scene.user_items.add()
        item.user_int = 5
        item.user_str = 'custom value'
        return{'FINISHED'}

class RemoveMacBook(bpy.types.Operator):
    bl_label = "Remove MacBook"
    bl_idname = "macbook_controler.remove_macbook"

    del_item = bpy.props.IntProperty(name='item index to remove')

    def execute(self, context):
        context.scene.user_items.remove(self.del_item)
        return{'FINISHED'}

class IGLayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "MacBook Controller"
    bl_idname = "macbook_controller.macbook_controller"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

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

        scene = context.scene
        split = layout.split()
        scene = context.scene
        camera = scene.camera.data
        obj = context.object

        # Add
        row = layout.row(align=True)
        layout.operator("macbook_controller.add_macbook")

        # Box
        box = layout.box()
        row = box.row(align=True)

        # Collapsable Menu
        collapse = scene.ignit_panel.collapse

        if collapse == True:
            row.prop(scene.ignit_panel, "collapse",
                icon="TRIA_DOWN",
                icon_only=True, emboss=False
            )
        else:
            row.prop(scene.ignit_panel, "collapse",
            icon="TRIA_RIGHT",
            icon_only=True, emboss=False
        )

        # Title (per object)
        row.label(text = "MacBook")

        # Remove
        row.operator("macbook_controler.remove_macbook", text="", icon = "X", emboss = False)

        # Collapsing everything inside the box
        if collapse == True:
        # Main Features
            row = box.row(align=True)
            row.label(text = "Main Features:")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "isight_camera_indicator")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "menubar_and_dock")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "backlit_keys")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "screen_brightness")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "dirt_and_dust_factor")

            # Screen Icons
            row = box.row(align=True)
            row.label(text = "Screen Icons:")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "screen_icons", text = "Screen Icon Brightness")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "icons", expand = True)

            icons = scene.ignit_panel.icons

            row = box.row(align=True)
            if icons == 'Brightness':
                row.prop(scene.ignit_panel, "icon_factor", text = "Brightness Icon")
            elif icons == 'Backlit Keys':
                row.prop(scene.ignit_panel, "icon_factor", text = "Backlit Keys Icon")
            elif icons == 'Volume':
                row.prop(scene.ignit_panel, "icon_factor", text = "Volume Icon")

            # Screen Rotation
            row = box.row(align=True)
            row.label(text = "Screen Rotation:")
            row = box.row(align=True)
            row.prop(scene.ignit_panel, "screen_rotation")

            # Screen Texture
            row = box.row(align=True)
            row.label(text = "Screen Texture:")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "screen_path")
            row.operator("macbook_controller.identifier_file_selector", text="", icon='FILESEL')

            # MacBook Colors
            row = box.row(align=True)
            row.label(text = "MacBook Color:")

            row = box.row(align=True)
            row.prop(scene.ignit_panel, "colors", expand = True)

            for idx, item in enumerate(scene.ignit_panel.user_items):
                    row = col.row()
                    row.prop(item,'user_str')
                    row.operator(UserDelOptions.bl_idname, text='',
                                icon='X').del_item = idx
                    row = col.row()
                    row.prop(item,'user_int')

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties)

def unregister():
    bpy.utils.unregister__module(__name__)
    del bpy.types.Scene.ignit_panel

Pretty unclear to me what you are looking to accomplish. Some images would help explain your intention.

Ok, I've added an image of what I've got. Basically, I want it to make a new box (everything inside the grey box, underneath the 'Add MacBook' button) when the 'Add MacBook' button is pressed. Then I want that panel to be removed when the 'X' is pressed.

You can test any condition to choose whether various properties are displayed. You can add as many custom bpy.props.BoolProperty items as you need to keep track of any options you want to track.
A bpy.props.CollectionProperty can be used to hold the list of user added items, then you loop through them to display each one and use two operators to add and delete items from the collection.
import bpy

class UserItems(bpy.types.PropertyGroup):
    user_str = bpy.props.StringProperty()
    user_int = bpy.props.IntProperty()

class UserAddOptions(bpy.types.Operator):
    """Add a user item"""
    bl_idname = "object.add_user_items"
    bl_label = "Add custom user items"

    def execute(self, context):
        item = bpy.context.scene.user_items.add()
        item.user_int = 5
        item.user_str = 'custom value'
        return{'FINISHED'}

class UserDelOptions(bpy.types.Operator):
    """remove a user item"""
    bl_idname = "object.del_user_item"
    bl_label = "Remove a custom user item"

    del_item = bpy.props.IntProperty(name='item index to remove')

    def execute(self, context):
        context.scene.user_items.remove(self.del_item)
        return{'FINISHED'}

class OptionsPanel(bpy.types.Panel):
    """testing panel in the 3dview properties region"""
    bl_label = 'Optional data Panel'
    bl_idname = 'OBJECT_PT_options'
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_context = 'object'

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

        col = layout.column()
        row = col.row()
        row.prop(scn, 'option01')
        row = col.row()
        row.prop(scn, 'option02')

        box = col.box()
        col = box.column()
        row = col.row()
        if scn.show_my_options:
            row.prop(scn, "show_my_options", icon="DOWNARROW_HLT", text="", emboss=False)
        else:
            row.prop(scn, "show_my_options", icon="RIGHTARROW", text="", emboss=False)

        row.label('My options here')

        if scn.show_my_options:
            row = col.row()
            col = row.column(align=True)
            col.prop(scn.render, 'resolution_x', text='X')
            col.prop(scn.render, 'resolution_y', text='Y')
            if scn.option01:
                row = col.row()
                row.label('extra options go here')
                row = col.row()
                row.label('and more rows for other data')

            if scn.option02:
                row = col.row()
                row.label('dynamic options go here')
                row = col.row()
                row.operator(UserAddOptions.bl_idname)
                for idx, item in enumerate(scn.user_items):
                    row = col.row()
                    row.prop(item,'user_str')
                    row.operator(UserDelOptions.bl_idname, text='',
                                icon='X').del_item = idx
                    row = col.row()
                    row.prop(item,'user_int')

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.show_my_options = bpy.props.BoolProperty(name='Show Custom Props', default=False)
    bpy.types.Scene.option01 = bpy.props.BoolProperty(name='First options', default=False)
    bpy.types.Scene.option02 = bpy.props.BoolProperty(name='Dynamic options', default=False)
    bpy.types.Scene.user_items = bpy.props.CollectionProperty(type=UserItems)

def unregister():
    del bpy.types.Scene.show_my_options
    del bpy.types.Scene.option01
    del bpy.types.Scene.option02
    del bpy.types.Scene.user_items
    bpy.utils.unregister_module(__name__)

Just testing out your code, where does is it actually putting the menu/panel?

The properties region of the 3dview - press N

Its not showing up...

Could you take a look at my code? I'm getting errors, it's saying that UserItems is not defined..

I think this is getting close to what you want.

New error, IgnitProperties has no attribute 'Add' The error is from when I click the add macbook button

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


text:
Having trouble with adding a section to a panel at runtime: IgnitProperties has no attribute 'Add'
I asked a similar question quite a while ago but I'm still having trouble with this. For those that didn't see my last question, basically I want to replicate what the background image system does, or at least the panel. I want to have an add button and an X button, and when the add button is pressed by the user, a section is added to the panel and that can be done as many times as the user is willing to click it. Then added to each one of those sections is the X button, and when that X button is clicked, it removes that section, just like the background images. I have this code so far, I've only added the parts of that should concern:
class IgnitProperties(bpy.types.PropertyGroup):

    collapse = BoolProperty(
        name = "Collapse",
        description = "Allows the MacBook Controller to be collapsable",
        default = True,
        update = lambda self, context: common_update(self, context, 'collapse')
    )

class AddMacBook(bpy.types.Operator):
    bl_label = "Add MacBook"
    bl_idname = "macbook_controller.add_macbook"

    def execute(self, context):
        item = context.scene.ignit_panel.add()
        def unique_name(names):
            # from wm.py
            prop = "MacBook"
            prop_new = prop
            i = 1
            while prop_new in names:
                prop_new = prop + str(i)
                i += 1

            return prop_new
        item.title = unique_name([i.title for i in context.scene.ignit_panel])
        return{'FINISHED'}

class RemoveMacBook(bpy.types.Operator):
    bl_label = "Remove MacBook"
    bl_idname = "macbook_controler.remove_macbook"

    del_item = bpy.props.IntProperty(name='item index to remove')

    def execute(self, context):
        context.scene.ignit_panel.remove(self.del_item)
        return{'FINISHED'}

class IGLayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "MacBook Controller"
    bl_idname = "macbook_controller.macbook_controller"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

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

        scene = context.scene
        split = layout.split()
        scene = context.scene
        camera = scene.camera.data
        obj = context.object

        # Add
        row = layout.row(align=True)
        layout.operator("macbook_controller.add_macbook")

        for idx,ignit_options in enumerate(scene.ignit_panel):
            # Box
            box = layout.box()
            row = box.row()

        # Collapsable Menu
        collapse = scene.ignit_panel.collapse

        if collapse == True:
            row.prop(scene.ignit_panel, "collapse",
                icon="TRIA_DOWN",
                icon_only=True, emboss=False
            )
        else:
            row.prop(scene.ignit_panel, "collapse",
            icon="TRIA_RIGHT",
            icon_only=True, emboss=False
        )

        # Title (per object)
        row.label(text = "MacBook")

        row.operator("macbook_controler.remove_macbook", text="", icon = "X", emboss = False).del_item = idx

        # Collapsing everything inside the box
        if not ignit_options.collapse:
            #This is the section that I want to be drawn every time the add button is clicked

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties)

def unregister():
    bpy.utils.unregister__module(__name__)
    del bpy.types.Scene.ignit_panel

if __name__ == "__main__":
    register()

No errors in the console at first, but as soon as I try to click one of those buttons, it tells me this:
Traceback (most recent call last):
File "/Users....../macbook_controller.py", line 1202 in execute
AttributeError: 'IgnitProperties' object has no attribute 'add'

in the register func it should be bpy.types.Scene.ignit_panel = bpy.props.CollectionProperty()  so you can call add()  ( it has to be collection prop not a pointer )

Ok, thanks, I now have another error, I added that to my description, but the good news is that I see my box appearing as expected, there's just nothing in it.

as it says IgnitProperties type has only a boolean variable, there is no title inside IgnitProperties,  you can add a stringPropety inside if you want  and call it title

Well if I comment that part out it doesn't give errors, but the boxes are still empty, I'll add an image to the description.

this collapse = ignit_options.collapse  should be this  collapse = ignit_options.collapse  and change it to this row.prop(ignit_options,  .......)  or this row.prop(ignit_options.collapse,  .......) I can't test on my current system now sorry

also  fix the indentation you are not adding any thing inside the loop

Thanks, I'll try that out, and the indentation is just from adding the code to here, it does some weird stuff sometimes when I put code onto here...

Ok, getting there! One more error, I think it's the last one. I'll add it to the description

did you try this instead row.prop(ignit_options.collapse, .......)

What are you trying to display ( which property exactly )

Yes I did try that, no success. I'm trying to display a whole lot of properties, about a dozen of them, I haven't got them in the description though. Also, should we move this to chat?

as i said i can't test on my machine , and we can move to chat

Let us continue this discussion in chat.

Ok so there were a whole lot of small errors that contributed to fixing this. Here were the steps required to fix it.
1) Change bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties) to bpy.types.Scene.ignit_panel = bpy.props.CollectionProperty(type=IgnitProperties)
(PointerProperty to CollectionProperty)
2) All of the scene.ignit_panel in the draw function had to be changed to ignit_options
3) The last for loop had to be removed (this was not actually shown in the code above, but it was after if not ignit_options.collapse:)
4) The collapsible menu if statement had to be moved into the for loop just above it

authors: Никита Самоуков


text:
How can I have a split column inside a box?
I'm trying to create a split column inside a box. Seems pretty simple but I just can't figure it out...any ideas?
For example, I would all of the below in a layout.box()

Could you add more information about your final goal and how you intend to reach it?

Well it seems pretty obvious to me but I'll add a little bit more if you wish

Yes, just like that. My script has a  box = layout.box() but it doesn't work with the aligned split columns in my script, I'm trying to change it now to see if it works...

The thing is I have multiple boxes, how would I go about doing this for just one box? Using the layout = layout.box() does it for the whole thing...

This eg puts Column 2 in a box too http://www.pasteall.org/72269/python

Yes it's working now, thanks for that. One more thing, can I hide the first box? It doesn't look good having that extra box surrounding everything.

Ahh, cool, for some reason I thought that had to be in...Thanks for your help, all is well.

you can stack layouts, as each of the container layout elements can host other containers:
    layout = self.layout
    box = layout.box()

    # put a column layout into the box
    col = box.column(align = True)

    # also separators work
    col.separator()

    # add a row layout into the column, which is inside the box, which is inside a panel,.....
    row = col.row(align = True)
    row.operator(**example**)
    row.operator(**example**)

Thats good, but they are aligning horizontally, I want them to align vertically, like the above image in 'Column Two'.


text:
How to change a material with python in blender?
I have a basic panel script with 3 buttons made with an enum. Those buttons are meant to change two materials of an object e.g. the 'silver' button would change the materials to the silver materials etc. *Update* I put one of those lines into the console directly and it worked just fine, so I guess it's a matter of where I put those codes into, does anyone know where it should be?
This is what I tried:
D = bpy.data

if colors == 'Gold':
    D.objects['Macbook'].material_slots[0].material = D.material['Gold']
    D.objects['Macbook'].material_slots[9].material = D.material['Gold Apple Logo']
elif colors == 'Silver':
    D.objects['Macbook'].material_slots[0].material = D.material['Silver']
    D.objects['Macbook'].material_slots[9].material = D.material['Silver']
elif colors == 'Space Grey':
    D.objects['Macbook'].material_slots[0].material = D.material['Space Grey']
    D.objects['Macbook'].material_slots[9].material = D.material['Space Grey Apple Logo']

There were no errors, but it just doesn't do anything...
Here is my full code:
import bpy
from bpy.types import (Menu, PropertyGroup)
from bpy.props import (BoolProperty, FloatProperty, EnumProperty)

def update_after_enum(self, context):
    D = bpy.data

    if colors == 'Gold':
    D.objects['Macbook'].material_slots[0].material = D.materials['Gold']
    D.objects['Macbook'].material_slots[9].material = D.materials['Gold Apple Logo']
elif colors == 'Silver':
    D.objects['Macbook'].material_slots[0].material = D.materials['Silver']
    D.objects['Macbook'].material_slots[9].material = D.materials['Silver']
elif colors == 'Space Grey':
    D.objects['Macbook'].material_slots[0].material = D.materials['Space Grey']
    D.objects['Macbook'].material_slots[9].material = D.materials['Space Grey Apple Logo']

def common_update(self, context, origin):
    obj = bpy.data.objects.get("Macbook")
    if not obj:
        return

    if origin == 'isight_camera_indicator':
        obj["00_iSight Camera Indicator"] = getattr(self, origin)

        node_tree = bpy.data.materials['iSight Camera Indicator'].node_tree
        node = node_tree.nodes["Emission"]

        if getattr(self, origin):
            emission_value = 5.0
        else:
            emission_value = 0.0

        nodes["Emission"].inputs[1].default_value = emission_value

    elif origin == 'dirt_and_dust':
        obj["01_Dirt and Dust"] = getattr(self, origin)
    elif origin == 'menubar_and_dock':
        obj["02_Menubar and Dock"] = getattr(self, origin)
    elif origin == 'screen_rotation':
        obj["03_Screen Rotation"] = getattr(self, origin)

class IgnitProperties(bpy.types.PropertyGroup):

    isight_camera_indicator = BoolProperty(
        name = "iSight Camera Indicator",
        description = "Toggles the iSight Camera Indicator ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'isight_camera_indicator')
    )

    dirt_and_dust = BoolProperty(
        name = "Dirt and Dust",
        description = "Toggles the Dirt and Dust ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'dirt_and_dust')
    )

    menubar_and_dock = BoolProperty(
        name = "Menubar and Dock",
        description = "Toggles the Menubar and Dock ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'menubar_and_dock')
    )

    screen_rotation = FloatProperty(
        name = "Screen Rotation",
        description = "Rotates the screen",
        default = 0.0,
        min = 0.0,
        max = 1.0,
        update = lambda self, context: common_update(self, context, 'screen_rotation')
    )

    #MacBook Colors
    colors = EnumProperty(
        name = "MacBook Colors",
        description = "Changes the color of the MacBook",
        items = [
            ("Silver", "Silver", "Silver"),
            ("Gold", "Gold", "Gold"),
            ("Space Grey", "Space Grey", "Space Grey")
        ],
        update = update_after_enum
    )

class IGLayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "MacBook Controller"
    bl_idname = "object_mode.macbook_controller"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

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

        layout.label(text = "Main Features:")

        scene = context.scene
        split = layout.split()
        scene = context.scene
        camera = scene.camera.data

        # First column
        col = split.column()
        col.prop(scene.ignit_panel, "isight_camera_indicator")
        col.prop(scene.ignit_panel, "dirt_and_dust")

        # Second Column
        col = split.column()
        col.prop(scene.ignit_panel, "menubar_and_dock")
        col.prop(scene.ignit_panel, "screen_rotation")

        # MacBook Colors
        layout.label(text = "MacBook Color:")

        row = layout.row(align=True)

        row.prop(scene.ignit_panel, "colors", expand = True)

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties)

def unregister():
    bpy.utils.unregister__module(__name__)
    del bpy.types.Scene.ignit_panel

if __name__ == "__main__":
    register()

The indenting was just from putting the code into here, its fine in the actual script in blender, and as for the materials, I tested it in the console directly and it worked fine...

Ok, I put the self.colors in and it worked fine! Gee I really wish coding for blender were like coding in unity!

Oh no I was referring to C#, in fact more so to the IDE, monodevelop, it works so much better than a text editor!

Yeah, Blender would benefit from a built in IDE, a mix between a REPL (console) and a TextEditor. No argument there :)  I tend to use SublimeText3 with snippets of templates / and a custom set of templates

Hmm, that's a pretty good resource! I do you know if Monodevelop can code with python, does it know the python syntaxing?

Your first snippet references bpy.data.material, but it should be bpy.data.materials. It is plural; think of it as a collection of all materials in the .blend.
Secondly the colors variable isn't global, but part of the PropertyGroup and must be referenced using self.colors.

your update function most likely would be written less verbose this way:
def update_after_enum(self, context):

    objects = bpy.data.objects
    materials = bpy.data.materials

    macbook = objects.get('Macbook')
    if not macbook:
        return

    slots = macbook.material_slots
    colors = self.colors

    if colors == 'Gold':
        slots[0].material = materials['Gold']
        slots[9].material = materials['Gold Apple Logo']
    elif colors == 'Silver':
        slots[0].material = materials['Silver']
        slots[9].material = materials['Silver']
    elif colors == 'Space Grey':
        slots[0].material = materials['Space Grey']
        slots[9].material = materials['Space Grey Apple Logo']

Then a bit of nitpicking. The last section I would go even further and write it without the if-elif-elif and use the colors property directly.
Assuming you have the following materials in the .blend
- 'Gold'
- 'Gold Apple Logo'
- 'Silver'
- 'Silver Apple Logo'
- 'Space Grey'
- 'Space Grey Apple Logo'

code:
    if self.colors in {'Gold', 'Silver', 'Space Grey'}:
        slots[0].material = materials[self.colors]
        slots[9].material = materials[self.colors + ' Apple Logo']


text:
Custom properties being edited from python script not changing what the custom property is setup to
I have a custom panel with a bunch of things doing various stuff. They're all linked to custom properties that are linked to other things, it was just easier for me to understand, I'm a beginner python programer!. The issue is, when I change the values from the custom property itself, it changes the values that they're all linked to and everything works perfectly. But the problem is that when I use the custom panel, it changes the custom property values, but thats it. For example, in the linked code below, the iSight Camera Indicator is linked to an emission node. When I use the custom property, it changes the emission from 0 to 1, but when I use the panel, it doesn't...
Here is my code:
import bpy
from bpy.types import (Menu, PropertyGroup)
from bpy.props import (BoolProperty, FloatProperty, EnumProperty)

def update_after_enum(self, context):
    print ("place holder")
    D = bpy.data

    if colors == 'Gold':
        D.objects['Macbook'].material_slots[0].material = D.materials['Gold']
        D.objects['Macbook'].material_slots[9].material = D.materials['Gold Apple Logo']
    elif colors == 'Silver':
        D.objects['Macbook'].material_slots[0].material = D.materials['Silver']
        D.objects['Macbook'].material_slots[9].material = D.materials['Silver']
    elif colors == 'Space Grey':
        D.objects['Macbook'].material_slots[0].material = D.materials['Space Grey']
        D.objects['Macbook'].material_slots[9].material = D.materials['Space Grey Apple Logo']

def common_update(self, context, origin):
    obj = bpy.data.objects.get("Macbook")
    if not obj:
        return

    if origin == 'isight_camera_indicator':
        obj["00_iSight Camera Indicator"] = getattr(self, origin)

        node_tree = bpy.data.materials['iSight Camera Indicator'].node_tree
        node = node_tree.nodes["Emission"]

        if getattr(self, origin):
            emission_value = 5.0
        else:
            emission_value = 0.0

        nodes["Emission"].inputs[1].default_value = emission_value

    elif origin == 'dirt_and_dust':
        obj["01_Dirt and Dust"] = getattr(self, origin)
    elif origin == 'menubar_and_dock':
        obj["02_Menubar and Dock"] = getattr(self, origin)
    elif origin == 'screen_rotation':
        obj["03_Screen Rotation"] = getattr(self, origin)

class IgnitProperties(bpy.types.PropertyGroup):

    isight_camera_indicator = BoolProperty(
        name = "iSight Camera Indicator",
        description = "Toggles the iSight Camera Indicator ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'isight_camera_indicator')
    )

    dirt_and_dust = BoolProperty(
        name = "Dirt and Dust",
        description = "Toggles the Dirt and Dust ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'dirt_and_dust')
    )

    menubar_and_dock = BoolProperty(
        name = "Menubar and Dock",
        description = "Toggles the Menubar and Dock ON and OFF",
        default = False,
        update = lambda self, context: common_update(self, context, 'menubar_and_dock')
    )

    screen_rotation = FloatProperty(
        name = "Screen Rotation",
        description = "Rotates the screen",
        default = 0.0,
        min = 0.0,
        max = 1.0,
        update = lambda self, context: common_update(self, context, 'screen_rotation')
    )

    #MacBook Colors
    colors = EnumProperty(
        name = "MacBook Colors",
        description = "Changes the color of the MacBook",
        items = [
            ("Silver", "Silver", "Silver"),
            ("Gold", "Gold", "Gold"),
            ("Space Grey", "Space Grey", "Space Grey")
        ],
        update = update_after_enum
    )

class IGLayoutDemoPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "MacBook Controller"
    bl_idname = "object_mode.macbook_controller"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

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

        layout.label(text = "Main Features:")

        scene = context.scene
        split = layout.split()
        scene = context.scene
        camera = scene.camera.data

        # First column
        col = split.column()
        col.prop(scene.ignit_panel, "isight_camera_indicator")
        col.prop(scene.ignit_panel, "dirt_and_dust")

        # Second Column
        col = split.column()
        col.prop(scene.ignit_panel, "menubar_and_dock")
        col.prop(scene.ignit_panel, "screen_rotation")

        # MacBook Colors
        layout.label(text = "MacBook Color:")

        row = layout.row(align=True)

        row.prop(scene.ignit_panel, "colors", expand = True)

def register():
    bpy.utils.register_module(__name__)
    bpy.types.Scene.ignit_panel = bpy.props.PointerProperty(type=IgnitProperties)

def unregister():
    bpy.utils.unregister__module(__name__)
    del bpy.types.Scene.ignit_panel

if __name__ == "__main__":
    register()

nodes["Emission"].inputs[1].default_value = emission_value is wrong. nodes reference doesn't exist.  (tidying up comments this comment should be here, not under my code)

The update function just updates the values stored in the ID properties of the object. Changing them doesn't automagically affect your emission shader.
You have this, and that's fine. But you probably want something else.
def common_update(self, context, origin):
    obj = bpy.data.objects.get("Macbook_Gold")
    if not obj:
        return

    if origin == 'isight_camera_indicator':
        obj["00_iSight Camera Indicator"] = getattr(self, origin)
    elif origin == 'dirt_and_dust':
        obj["01_Dirt and Dust"] = getattr(self, origin)
    elif origin == 'menubar_and_dock':
        obj["02_Menubar and Dock"] = getattr(self, origin)
    elif origin == 'screen_rotation':
        obj["03_Screen Rotation"] = getattr(self, origin)

To do something with a shader depending on a boolean value you have to reference the shader.
I'll just show the isight_camera_indicator, this snippet would update the emission value in the emission node called "Emission" for the material specified:
def common_update(self, context, origin):
    obj = bpy.data.objects.get("Macbook_Gold")
    if not obj:
        return

    if origin == 'isight_camera_indicator':
        obj["00_iSight Camera Indicator"] = getattr(self, origin)
        # then update your material emission
        node_tree = bpy.data.materials['iSight Camera Indicator'].node_tree
        node = node_tree.nodes["Emission"]

        if getattr(self, origin):
            emission_value = 30.0
        else:
            emission_value = 0.1

        node.inputs[1].default_value = emission_value

regarding :
obj["00_iSight Camera Indicator"] = getattr(self, origin)

All this line does is update the ID property you made for the object. Useful if you want to keep track of the state of some parameters within the Object. However, you still need to generate some effect from the switching on and off of the BoolProperty. (shown above)

So will changing the node itself mean I don't need the custom properties?

Not working, updated the code...

and yes, the custom properties are a little redundant for your immediate scenario.

Oh well, I'll leave them in there, seeing as though I went to the trouble of making all of them...

Awesome, all working, your the man dude!


text:
How to use an if statement inside the draw function to change the UI at runtime?
I have a basic panel and an enum property and I want to change some of the things shown on the panel depending on what is selected in the enum. I tried what was logical and this is what I did:
if self.icons == 'Brightness':
    row.prop(scene.ignit_panel, "brightness_icon")
elif self.icons == 'Backlit Keys':
    row.prop(scene.ignit_panel, "backlit_keys_icon")
elif self.icons == 'Volume':
    row.prop(scene.ignit_panel, "volume_icon")

However it isn't working, it's no longer displaying those things, and everything below it is no longer displaying either. Can this actually be done or am I just showing my noobiness again?
*Update*
I tried playing with the buttons and started getting errors:
Traceback (most recent call last):
File "/Users/MacBook/Documents/Blender/Blends/MacBook/MacBook.blend/macbook_controller.py", line 302, in draw
AttributeError: 'IGLayoutDemoPanel' object has no attribute 'icons'

location: <unknown location>:-1

Thanks, Matthew

If everything below these lines doesn't show, it often means you have an error in your code, which crashes the draw function and stops the drawing at the line with the error. Take a look at the console (Window > Toggle System Console) to check the output and see if there are any error messages. You might have a typo (scene.ignit_panel ==> scene.ignite_panel?) or some other bug.

I use the run script in pyconsole addon and that showed no errors in the console, I checked the spelling against everything before that and thats all fine...

Look at the console when you're hovering over the panel with your mouse (or any time a bit after running the script). Blender redraws and panel when the mouse moves and if there are any errors during drawing they will pop then.
Might also help if you edit your question and paste more or all of your code there.

Ok, I'll try that, also, how much code should I put in? I have a heck of a lot...

Ok, now we're getting somewhere, I tried playing with the buttons and now I have some errors, could have sworn I'd already tried that! I'll put the error into the description.

Found the problem, 'icons' wasn't recognized because it was from a different class, I just had to reference it.
icons = scene.ignit_panel.icons

if icons == 'Brightness':
    row.prop(scene.ignit_panel, "brightness_icon")
elif icons == 'Backlit Keys':
    row.prop(scene.ignit_panel, "backlit_keys_icon")
elif icons == 'Volume':
    row.prop(scene.ignit_panel, "volume_icon")


text:
Download add-ons from console?
When I download add-ons from this page, sometimes I get a zip file, but sometimes it's just a link like this.
I don't have programmer training, but I know that's something to do with calling an action from the console. Before I just copied the text into a text file, saved it as a zip and installed it that way, but what's the actual way to get the add-on from a link like that?
I saw this: How can I get a list of the installed addons using the API? but it doesnt help me.

The wiki pages for addons are in need of an update. The list on the first page you refer to is listed in three columns, the first lists addons that are included with each blender release, the middle column are included in the addons contrib repository and the third column are maintained by users with each addon available from their own repositories or download locations.
Where a contrib addon has a download url starting with https://svn.blender.org/svnroot/bf-extensions/contrib/ - which is blender's old svn repository - it can now be found at https://developer.blender.org/diffusion/BAC/ - provided it hasn't been removed for some reason.
It can be a bit awkward to download multiple file addons through the developer.blender.org site. If you don't want to install git and follow the checkout instructions on the contrib page you can access the git repository through the gitweb interface to download a snapshot of all or part of the contrib repository.

You can use wget which is a command line tool to retrieve files using HTTP, HTTPS and FTP you can download it from here and these are the installation instructions and how to use
Also rather than coping it to a text file you could have right clicked on each of the six files and clicked 'save link as....' (a easier way) after that just put all of them in a folder and put that folder in the add-on folder


text:
Add different textures to front and back of plane with solidify?
I have a map; a plane and a Solidify modifier. I have already applied an Image Texture to one side, but Blender is obviously applying the texture to both sides.
I want to add a different Image Texture to the other side of the plane, however. Is there a way to do this?
I have tried to add another one using the Geometry > Backfacing feature, but it did not work.
Map mesh and .blend file's material:

Viewport render of map mesh and Backfacing material (not working):

Related http://blender.stackexchange.com/questions/2082/how-can-i-make-a-material-only-apply-to-a-side-of-a-plane

There was only one image in the file, so I substituted a Diffuse BSDF for the second image. There are two options you have now.
Option 1
The reason that the Geometry > Backfacing did not appear to work was because that the Solidify modifier made it so that the map/diffuse went inside the map.
An exaggerated Solidify:

The solution if you want to keep the Solidify modifier goes like this. Apply all modifiers. Use the steps in Add different materials to different parts of a mesh? to apply the other image/diffuse to the non-map faces.
Option 2
Solution produced with Option 2 (low-res; 20 samples):

This is the better solution. Since the Solidify modifier does next to nothing, delete it, and the original node setup will work. The two Diffuse BSDF's outputs are crossed just because it needed to be inverted. I'm sure you understand.

The following .blend file produced the result at the top of Option 2.

Optionally you could also use the Backfacing output directly in a Color Mix Node to avoid having duplicate shaders

@DuarteFarrajotaRamos Agreed. Are duplicate shaders bad, though?

Not bad per-se, just a slight optimization to make make the tree simpler, probably a few less seconds of render

@DuarteFarrajotaRamos I'll keep that in mind.

I've added a new image, after i applied these nodes, but its not working as you can see, both sides of the plane, when rolled up are same texture.

@Ulus can u share ur .blend file?

http://www.blendswap.com/blends/view/85006

@ShadyPuck Found a fix? :)

@Ulus I've been busy. Will try to get to it tonight.

@ShadyPuck Ok! :)

@Ulus Cannot see .blend. Please upload to Blend Exchange.

@ShadyPuck Blender file at top now :)

@Ulus Finally got it!

@ShadyPuck The first option sounds a bit long and confusing, so I'l go for the 2. option because its true that the solidify doesn't make a big difference. Thanks.

@Ulus Glad that I could help.

@TheRageMachine et al: Solidify makes one small difference: it adds a bit of a highlight to the side of the paper, giving it a much more realistic look. I wonder if there is another way to accomplish this effect?

I am able to use backfacing and solidify at the same time by checking the "Only Rim" option in the modifier.

I upvoted since this worked for my case but it does not really solve the issue, as it only solidifies the rim.

In the Solidify modifier, use the option Materials > Material offset to select a different material for the new face created by solidify. Make sure the second material is assigned to the object and it shows the texture you want. (I checked this on Blender 2.93)


text:
How can I Select all vertices that are outside?

HI !
I have this wall made by cubes and I am trying, via script, to select vertices of each block, that are outside, like this:

It´s is possible to make this via python ?
Thanks

Do you want to do this with python because you don't know another way or because you particularly want to use python?

Because i need to this using python ... @RayMairlot

sorry, can you explain you "outside" concept.? why that vertex is outside?  can you upload the file please?

Can use this algorithm by Hulifier and implement it in Python: Is it possible to scatter points on the outside surface of a group of instances?


text:
Newbie Question About Basic Selecting
I've got a very basic model, which is just two shapes at the moment.  I'm having a hard time figuring out how to select the bottom shape.  Clicking on it only moves the 3D cursor around, but doesn't change the selection.  All the tutorials I've seen have to do with selecting a specific vertex or face of a shape that's already selected.  I'm lost on how to select a completely different shape in the model.

Selection in Blender is, by default with the right-mouse button, not left. You also seem to be in Edit Mode in your cube, forbidding selection of other objects. Press Tabto enter/exit Edit Mode.

@DuarteFarrajotaRamos  So simple, yet so hard to find.  Thanks, that fixed everything.


text:
Delete selected particles and their trajectories
I have a (baked) particle cache, I can enter "Particle Edit" mode, but I can't seem to be able to delete selected particle trajectories. Can it be done? How?
Example
I've created a minimal example: there's an emission object and a "kill particles" collision object. A "dupli" object is added just for visibility.

Let's say I want to remove retroactively all the particles that aren't killed by the obstacle.
Attempts
Several other related questions have answers that mention Select+X and Select+Del (in Particle Edit mode) as ways to remove trajectories or trajectory points: it wasn't specified. I'm unable to do either.
In "Path" select mode, I can't seem to select anything, with either  RMB or C+LMB:

In "Point" select mode, I'm able to select trajectory points (but I wouldn't know how to select all the trajectories: there's no Ctrl+L functionality). However, X and Select+Del show no effect.

Same for "Tip":

The "cut" brush also seems ineffective:

File
you can download my minimal example here:

(An answer like "that's not currently possible", if that's the case, would be good as well, as long as it's sourced)

I think you can remove them not physically, but make invisible inside material (fully transparent). Ugliest solution is to select particles by their ID and assign Transparent shader

@SergeL And how would I target those ones specifically in my material setup? (I mean: say I make a Mix node with Transparent + My material as shaders. What would the 0/1 variable be that I should use for the Mix Factor?)

Via a Frame change handler
Here is a frame change handler to set the size of any particle still alive at frame 27 (arbitrary choice from sample file) to zero.  Needs to change frame to 27 at least once to set the list.
System console print from sample file
27 [5, 12, 15, 16, 18, 21]

states on frame 27 particles 5, 12 etc are still alive, and will be zeroed in size each and every frame from now on.  Once this is known it could be hard-coded into the handler instead of calculated each time.
import bpy

context = bpy.context
ob = context.object
parts = []

def particle_remove(scene):
    global parts
    ob = scene.objects["Emits"]
    ps = ob.particle_systems.active
    for i in parts:
        ps.particles[i].size = 0
    if scene.frame_current == 27:

        parts = [i for i, p in enumerate(ps.particles)
                if p.alive_state.startswith('ALIVE')]
        print("27", parts)
bpy.app.handlers.frame_change_post.append(particle_remove)

to remove the handler (and all frame change post handlers)
bpy.app.handlers.frame_change_post.clear()

As far as I know, there is no way of deleting individual particles.
BUT - possible workaround:
In particle edit mode, deselect "Keep Root", hover your mouse over a strand, press L to select the whole strand (you'll have to repeat this for every single strand) and move them somewhere else. They'll still be in the scene, but out of the way at least.

I'll test it later, but this seems -- if not a solution -- at least a good workaround! (It scales up quite badly for large numbers of particles though, if you need to select them individually)

True, but moving/hovering over the strands and repeatedly pressing "L" works okay-ish. But that is the only solution that comes to mind


text:
Transparent objects passing through causes a shadow
My scene contains transparent objects that pass through each other during the  animation but it seems to be casting a shadow when the overlap
I've attached a screenshot if anyone can help.

Although that isn't exactly related, do not plug output from Normal Map node into Displacement input socket of Output node; use Normal input socket of Diffuse node instead. See http://blender.stackexchange.com/questions/16443/using-a-normal-map-together-with-a-bump-map

you can always just turn off cast shadow in the object menu, and animate that too

are you sure this is caused by the transparent objects? does the artifact disappear when you hide them on a layer which is not being rendered?

That's z-fighting, not a shadow.  You have some overlapping geometry there.

Use this node setup to disable cast shadows:

Sorry, its still doing the same thing. I have updated my question with a screenshot of my node setup if thats helps


text:
Is there an add-on for a knife-like tool for curves?
For instance, splitting a Bezier circle into cyclic halves cutting across its diameter is quite tedious when directly manipulating segments, control points and handles. Things get complicated when editing more complex curves with all the (un)hiding and moving of overlapping points to (re)connect and (re)align everything properly to keep the original shape intact.

Sadly Blender lacks such tools.

No there is not. Unfortunately there are very few cad-like tools for bezier curves in blender. Curves are kind of a second-class citizen, and although they have improved considerably in recent years, they are still not regarded as primary modeling tool.
The closest I know you could currently get is probably a relatively recent addon "Extend / Trim Curve CAD Tools for Bezier Splines" which works relatively well for most situations:
http://blenderartists.org/forum/showthread.php?387520-Addon-Extend-Trim-Curve-CAD-Tools-for-Bezier-Splines


text:
How to install Sun Path addon (Blender 2.8x)?

Tutorial for version 2.63 that works with a sunpath package:
https://www.youtube.com/watch?v=lsovmL9hv80
Sunpath version that works with 2.71 here: https://www.ods-engineering.com/tools/ods-studio/download/#4
Python package for performing high-precision astronomy computations here:
https://pypi.org/project/pyephem/

Q: How to install the Sun Path addon in newer versions of Blender?

Sun Position Addon  and this from old BA thread  wouldn't be too hard to update to 2.8

I am not sure if anyone is updating it. Or is there an existing way to import the python package for it?

sun path (sun pos) 2.8 Version Very realistic sun studies for architects: github kevancress/sun_position_b28_test

2.80 compatible almost full functional but named as "test"
https://github.com/kevancress/sun_position_b28_test

Manage to find the python scripts here:
https://github.com/ccamara/blender-architecture-scripts/tree/master/addons/sun_position


text:
Blender 2.8x - Particle Color based on actual color of emitter
Looking for a way to set the color of each particle to the exact color from where it was emitted.
Trying to make a 2d image plane dissolve effect.
Checked this thread but its not doing what I am trying to achieve:
Particle Color based on where the particle is emitted?

I'd like to get something like this:

Thanks to @Lumpengnom at https://blenderartists.org/
I found the solution!
Important steps are:
1.) Add a texture coordinate node, connect UV to vector and enable the "from Instance" check-mark.
2.) Use Cycles renderer, also for preview!, otherwhise you will not so the right result which is very irritating.
Here is a quick video tutorial:
https://youtu.be/8W1J8hYjK9g

Links can go down... Do you mind adding a few steps which actually solved your issue to this question?

This is really useful. I'm posting an example .blend just to make the details of the particle system settings and material nodes totally clear.


text:
Motion blur samples limit too low for a long exposure effect?
Im trying to get a long exposure effect using the eevee camera motion blur but the results i get at slower shutter times are very grainy, even at the maximum 64 samples. I tried speeding up the camera animation and setting a faster shutter but i cant seem to get trails of the desired lenght without the grainy effect, and the general render samples dont seem to affect the motion blur samples.
The performance shouldnt be a problem since the objects in the scene are simple emission objects and the current renders are taking about 4 seconds.

How to get a long exposure effect using Eevee?

You could merge multiple renders and or use cycles.
But if the end effect you're going for is just abstract smeared lines, build them using curves and turn up bevel.  On the material, mix a transparent and a emission shader to create a similar effect.  and with eevee change the settings -> blend mode in the material to alpha blend.
This method will give you much more control over the effect too.
As a bonus: use mesh follow -> trace verts option in the Btrace addon to make curve traces from animated objects.
Here's an example I just made.

I tried to do it on cycles but the motion blur is kind of unpredictable. Ive been trying your suggestion of using curves and it looks a bit more stylized but i think it will work well. Thank you for your advice!

Here's an example I just made:  https://i.imgur.com/WH1eYtQ.mp4


text:
Animated Gradient Node?
I'm working on a knob with some LEDs around it.
When the knob is all the way at 0-position only the top and bottom LEDs are on and when all the way to the right 100% all the LEDs will be on.
(the LEDs are just an image texture with some bump. With one node of a turned-off LED and one node of a LED material that is glowing.)
The way I'm planning on animating this effect is to have a Gradient node controlling the mix fac of a Mix node. My question is how do I get the gradient "butterfly pattern" of the mix fac?

Pic 1, the knob at 0, top and bottom LEDs are on
Pic 2, the knob at 50%
Pic 3, the way the knob looks.

I think with the gradient texure and some math you should be able to do it. Did you tried that?

Do you want your LEDs to light up one at a time, or do you want the fade?

Hello and welcome. Please don't write in all caps, it is the online equivalent of shouting, is harder to read and is considered rude

didn't mean to offend anyone with capital letters, will only use small caps from now on. :)

Not sure if i understood the request correctly, but that's the result (don't know if I'm allowed to post gifs):

And that's the nodes:

As you can see top two rows are almost identical except X and Y are multiplied by -1. Maybe there's a more beautiful way how to reach  the symmetry, but I'm lazy :)

Thank you very much, this look perfect, will try it and let you know how it goes.

This node setup works beautifully but is there a way to get a sire gradient from black to white? right now each led light up, but with a larger gradient I think I could get a more feathered look where the surrounding led of the active led is also slightly affected by the light. which of the math nodes do I use to control that?

Looks like you should change subtraction node to power: https://i.sstatic.net/XTRCZ.png
And by the way, you can get rid of multiplication of X and Y by -1 with using vector absolute

thank you once again, you are the man!

You're welcome :)
There's wrong screenshot in the comment above. Fixed: https://i.sstatic.net/mcEhO.jpg

You can get a gradient in all quarters, from 0.75 at North and South, to 0.5 at East and West, by using the absolute of X and Y as the texture-space for a Gradient > Radial node. And you can map that to something more convenient using a Map Range node.

Here, the range is used to produce a basic mask, whose extent is driven by the Z rotation of another object. You could multiply the mask with whatever color-gradient you wanted to put in it.

Could I be so lazy to request a "Download the blend"?

@batFINGER .... Done.

Wow that's clever! Thank you guys


text:
How to list all collections and their objects?
I have a scene with 2 collections of 4 objects each. I am trying to get all collection names and their objects' names. Unfortunately, info panel nor python hints have not been helpful to find the command.
How do I get a list of all collections' names? How do I get a list of all objects' names in a given collection?

You can access all collections through bpy.data.collections. The objects within the collection (and child collections) are given by bpy.data.collections.all_objects. This is documented in the BlendData types and the documentation of the collection type.
A little example script for printing the content of the collections:
import bpy

for collection in bpy.data.collections:
   print(collection.name)
   for obj in collection.all_objects:
      print("obj: ", obj.name)

Thank you for your answer!
Last two lines should have one indent less... I had an error for that but it was quickly fixed.

You're right. Fixed it.

BTW if you want to only have the objects within the collection, excluding child collections, you can use bpy.data.collections.objects.

Ok! Thank you, gtzkw!

how to get collections of a particular object?

Some python console code
The python console is a great way to learn how the API works. For convenience C = bpy.context and D = bpy.data
Using simply the default file

All collections and all objects in each.
>>> for col in D.collections:
...     col.name, col.objects[:]
...
('Collection 1', [bpy.data.objects['Cube'], bpy.data.objects['Lamp'], bpy.data.objects['Camera']])

or similarly
>>> for col in D.collections:
...     col.name
...     for o in col.objects:
...         o.name
...
'Collection 1'
'Cube'
'Lamp'
'Camera'

Note the scene's top level or "master collection" is not listed above.
>>> C.scene.collection
bpy.data.collections['Master Collection']

Any objects in this collection?  No, but if we link objects to it context.scene.collections.link(ob)   there could be.
>>> C.scene.collection.objects[:]
[]

Worth mentioning the all_objects will recurse through and list all descendants (children, grandchildren, ...) collection's objects. In this case the child collection is "Collection 1"
>>> C.scene.collection.all_objects[:]
[bpy.data.objects['Cube'], bpy.data.objects['Lamp'], bpy.data.objects['Camera']]

Iterate through master collection's child collections, and list their objects.
>>> for col in C.scene.collection.children:
...     col.name, col.objects[:]
...
('Collection 1', [bpy.data.objects['Cube'], bpy.data.objects['Lamp'], bpy.data.objects['Camera']])

Sorry batFINGER, your comment is very interesting and gives more knowledge than gtzkw's. However, he/she answered first and the answer solve my problem so I must give the point to that user. I am a new user and I do not have enough reputation to mark it as useful.
Thank you for sharing your knowledge!

aren't coll in D also potentially deleted "non-existent" collections?


text:
Smart UV Project Multiple Objects to Different UV Maps
I know there isn't natively in Blender a way to Smart UV Project multiple objects to their own UV Maps without doing it manually for every object but I bet it's possible using a script. However I couldn't find it anywhere and can't really code it myself. Could anyone help with the right script?
I've come up with something like this but it unwraps everything into one UV Map. I know that's because of the fact that Smart UV Project works for all selected objects, not only for active object but that's all I was able to think of.
import bpy

selection = bpy.context.selected_objects

for o in selection:
    bpy.context.view_layer.objects.active = o
    bpy.ops.uv.smart_project()

Deselect all outside loop (after setting selection) bpy.ops.object.select_all(action='DESELECT') in loop toggle the objects selection o.select_set(True)  at start, False at end.

Thank you! It works. :)

Here's the working code, thanks to batFINGER:
import bpy

selection = bpy.context.selected_objects
bpy.ops.object.select_all(action='DESELECT')

for o in selection:
    o.select_set(True)
    bpy.context.view_layer.objects.active = o
    bpy.ops.uv.smart_project()
    o.select_set(False)

That's nothing, it's because you entered the edit mode with all of your objects selected.Go to object mode and selected one object and go back to edit mode, you can see every object has unwrapped individually.

Well, I think you didn't understand me correctly. I need to unwrap about 100 objects the fastest way possible - smart UV project will work fine in my situation. I don't want to select one object at a time, Smart UV Project and then do it 99 times more. I need a script that does it for me. I've tried using my script both in object mode and in edit mode. That's not the case - the script works the same way, it packs all of the selected models in one UV Map and I need the script to UV unwrap all models to their own UV maps.

yes, it happens check again. Blender can take in multiple objects into editmode at once, your situation here is that you have selected ALL objects at ONCE and entered edit mode. You are wanting each object to be unwrapped at once into their own uv maps and that happens but since you selected all of them and went to edit mode all the uv maps show up on the editor. Run your script again with all objects selected and then this time deselect all(Alt+a) and click on one object, enter edit mode and you can see it has unwrapped individually onto its own uv map and this has happened to all others.

Please read my comment one more time. Then try to do it yourself your way and you'll see that it doesn't work as you think it does. Thank you for your effort but my problem has already been solved above, using a script.

yes your script works, i said there is no problem in the script. so what exactly is your problem/.


text:
Save all render passes to EXR image?
I am having an issue with EXR file export that I did not encounter in previous versions of Blender. I used to be able to render a render layer with all its passes and get all the passes included with the render layer with the EXR export; the problem I am finding now is that I am not able to "pack" the passes with the EXR file (see graphic below). I am working with "standard" EXR, as I understand that the EXR multilayer is for multiple file handling (packing all the image files into a single container), but I may be wrong.

In the screenshot, the graphic is an EXR saved from the rendered layer; you can see in the screenshot how the "extra" passes from the render layer has been ignored by the graphic and only shows the standard image, z and alpha passes. I found this issue for the first time with Blender 2.71; and maybe with Cycles; in the past I have never had an issue with EXR export.
Am I missing something? I hope EXRs still work with Blender, I wouldn't know how to composite without such invaluable aid. Sorry if this question has already been answered somewhere; I have really searched the site for information on EXR but I could not find an answer to my issue.

Single EXRs or Multilayer?
First you have to decide what type of OpenEXR you want to render:

OpenEXR to get single files of your passes or channels/layers
EXR Multilayer to get a multi-channel file with all your passes or channels/layers included

This decision really depends on your further workfow. For e.g. Blender or Nuke it's much more useful to have one multi-channel EXR, but in Photoshop, After Effects or Fusion it's easier to use single EXRs.
In the context of the Layer Management the EXR Multilayer term is quite confusing. For this reason and also to consider the OpenEXR concept it should be named EXR Multichannel.

Passes/AOV's
Then you have to decide which passes are key for compositing. In the view Layer tab->Passes section of the properties editor select the passes you need:

For 2.79 and earlier: In Scene Tab you can enable all standard passes of the render engine and create individual render layers.

You are ready to render if Multilayer EXR fits your needs. Blender automatically writes all enabled passes and layers as single channels to the EXR as expected.
If you choose OpenEXR, Blender only saves the beauty pass (final render) although other passes are selected. To save all your passes or channels/layers separately is only possible with the help of the image compositor. In this case you have to create a file output node and add new input slots in the properties of the node:

Still the same for Blender 2.8x:

The file output node makes it possible, whether OpenEXR or EXR Multilayer, but especially in the multilayer case, that you can unleash the full power of the format and pack your custom channels e.g. mattes or backgrounds like this:

Note: If a 'Z pass' is required, check out these answers: How can I get a Depth of field render pass?

Cycles light passes for reference

Further explanation in the manual: https://docs.blender.org/manual/en/latest/render/layers/passes.html

Tlousky's production script
To speed up this process you can also use Tlousky's production script. It automatically creates a file output node based on your enabled passes and your output directory:

Note: It's not updated since blender 2.69 that's why some passes are currently not supported.

Hey, this is very helpful. I am just diving into the whole EXR thing. I tried to reproduce your node set up and I failed adding new inputs for the file output node. I am using Blender v2.74 and either cycles nor the blender internal is offering me an option to add mmultiple inputs for this node.
besides that, I am wondering why my z pass is white and how I can get a real depth pass form it.

@SlimMarten Can't reproduce your issue, File Output node works as expected in 2.75a.

From the sounds of what you are explaining, You do want to select EXR Multipass.
the 'standard EXR' will only include RGBA, and an optional Z-depth, regardless of what other passes you have selected.
the OpenEXR Multi layer option will include each pass as a separate layer that you can then access from the image node inside blender.
The method Yauda had described will output a separate file for each pass. which will mean when you bring them back into blender, each layer will be have to be a separate image node.

Say goodbye to 'File Output'!
There is an obvious misleading on this thread. Every video and every post on forums says that you need to have 'File Output' node in the compositing, which  is so tedious to have so many layers ,name them and connect one by one!
Just UNCHECK 'use  nodes' on compositor. And choose the output format to 'openEXR multilayer'. All the passes you chose would automatically be saved in the exr file, with the pass default name.

I can't comment so I will ask it here: are you asking how to save the different passes to different files ?
If so, you can add a file output node that will export your passes in the desired format.

Here I apply some filter on my passes, but then I output the desired one into files.
See the properties of my File Output Node. You can choose the format, codec, etc of the EXR files. You can even choose different format for different files if you prefer.
When you add the File Output Node, you will need to add as many input in the node as files you want.
I hope this helps.

Thank you very much. Your answer gives me excellent information and I find the screenshot very useful; my problem, however, was that I could not get any pass into the EXR; I finally found the problem: it was simply that I needed to use multilayered EXR; I had already tried that, but the new feature that I failed to see was that you needed to select the actual render layer in the little dropdown at the bottom of the image node; once the right render layer was selected, everything worked as expected.

In my experience (I use EEVEE) I never got things to work with EXR files so I just export all the passes to seperate files using the output file node for each passe. I am new to all of this so it's maybe not the right thing to do but at least it is working very well.
For example for a movie clip it works like for single images.

As you can see in the image, all passes are going to be saved in different folders
Then you only have to use the movie clip node or image node as input for each passes and then composite them with effects you want.
It looks like this:

For this example I only used the combined and the myst (depth) passe, but it is the same for all other passes.
If I am completely off I am sorry, but it works for me the way I want!
Good luck!


text:
How to create a Folder/File Dialog?
So I need to allow the user of my script to choose a directory that contains images, and then run my script on each image. I already have my script made here. I looked at this question already, but that is about exporting, not importing.
It should look like this:

And should allow the user to choose the directory.
Thanks!

For directories or file paths you can use a StringProperty. In order to get a File Dialog instead of a Folder Dialog, simply set its subtype from DIR_PATH to FILE_PATH.
path: bpy.props.StringProperty(
        name = "Custom Path",
        description="Choose a directory:",
        subtype='DIR_PATH')

Following example adds a Folder Dialog to the Tool Shelf and prints the path to the console.

import bpy

from bpy.props import (StringProperty,
                       PointerProperty,
                       )

from bpy.types import (Panel,
                       PropertyGroup,
                       )

# ------------------------------------------------------------------------
#    Scene Properties
# ------------------------------------------------------------------------

class MyProperties(PropertyGroup):

    path: StringProperty(
        name="",
        description="Path to Directory",
        default="",
        maxlen=1024,
        subtype='DIR_PATH')

# ------------------------------------------------------------------------
#    Panel in Object Mode
# ------------------------------------------------------------------------

class OBJECT_PT_CustomPanel(Panel):
    bl_idname = "OBJECT_PT_my_panel"
    bl_label = "My Panel"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "Tools"
    bl_context = "objectmode"

    def draw(self, context):
        layout = self.layout
        scn = context.scene
        col = layout.column(align=True)
        col.prop(scn.my_tool, "path", text="")

        # print the path to the console
        print (scn.my_tool.path)

# ------------------------------------------------------------------------
#    Registration
# ------------------------------------------------------------------------

classes = (
    MyProperties,
    OBJECT_PT_CustomPanel
)

def register():
    from bpy.utils import register_class
    for cls in classes:
        register_class(cls)

    bpy.types.Scene.my_tool = PointerProperty(type=MyProperties)

def unregister():
    from bpy.utils import unregister_class
    for cls in reversed(classes):
        unregister_class(cls)
    del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()

Further reading: How to create a custom UI?

To collect all images in a folder, you can use e.g. os.listdir() to return a list of the files in the folder and make sure that the file type is correct:
import os

# Path to the folder
path = '/home/user/Desktop/'

# Collect all OpenEXR files within the folder
exr_list = [f for f in os.listdir(path) if f.endswith('.exr')]

# Iterate through the list
for i in exr_list:
    print(os.path.join(path,i))

Further reading: How do I list all files of a directory?

See the revisions of this answer for Blender prior to 2.8.

Thanks! But how do I access the files in the directory?

I've updated the answer, but as you can see that's not really blender specific.

This example does add a folder dialog to the tool shelf and prints the path to the console, but why does it print the path to the console random numerous times? Sometimes 6, sometimes 11, 9, etc. But never just once. I'd like to use it in an add-on but I have a feeling it won't work if I can't get it to do what it's supposed to do just once.

As print() is part of the draw() method, it's going to be re-drawn by Blender... Don't worry, just use it @GregMathieson


text:
Dynamic flow chart animation
I didn't use Blender before, but from what I saw (e.g. on YouTube) I think I could use it for creating dynamic flow chart animations (that actually look good :-). Since I do not know how to start with this, I hope you could give me a hint and/or guide me the right direction. This is a schematic example on what I want to do:

For a series of time points, I get data for the temperatures inside a set of water tanks and the amount of water flowing between them from some computations that are done in Python. I would like to visualize the temperature within the tanks by color, and the mass flowing between them by thickness of the arrows, in both cases also stating the current values, and show their development over time with an animation (while the changes between time points do not necessarily have to be animated, a series of pictures showing the states at the time points would already be great).
Everything should be designed in a way that the animation can be automatically generated also for other data sets. Also in future, this animation will probably be extended. As I stated, I'm completely new to Blender, but advanced in Python.
All hints and advises are highly appreciated! Thank you very much for your help!

Edit: as suggested, I split up the question in several smaller ones step by step.

Link to first question on how to create the curved arrows (solved)
Link to second question on how to calculate object colors from external temperature data using a color map

yes, this is very possible - but as it stands you are asking a question which is multi faceted - or rather 4 or 5 considerably elaborate questions disguised as a concept. Someone could answer, but it would take a long time and only be applicable to a narrow audience. Let me suggest that you break it down. 1. How to make boxes at positions 2. How to script the splines to join them 3. How to make the arrows 4. How to animate Colour changes 4. How to animate  spline Width changes. -- Also the design of how to spread these boxes and decide where the spline goes and what the arrow looks like.

You are allowed to ask as many separate questions as you want in new Questions. The better you become at making your question modular, the better we can answer short and direct.

@zeffii Thank you for your suggestions! In the meantime I found some hints on animation, and I managed to create the boxes (which are cylinders in 3D). So I will now first of all ask a question on how to make these curved arrows (which I think would be Question 2 and 3, but make sense to be asked together, right?), and link it to this question as well.

yes! my response was definitely not intended to be discouraging, I love these kinds of questions..but splitting it up gives more people a chance to answer the individual elements.

As zeffii explained, SE does better with shorter questions about specific operations; these are more likely to be applicable to other projects and thus more helpful for people looking for solutions in search engines. As it is now, this question is still too broad (your other question is great though :). Feel free to edit this question at any time, and we can re-open it accordingly.

@gandalf3 I thought that solving the problem step by step in different questions and providing the links to the several solutions in this post might be a good idea, so I would probably not change this question but provide links to this others, would this be OK ?

I don't see why not, but this question will remain closed as is. That's not necessarily a bad thing, you'll still be able to edit in the links, but no one will be able to add an answer.


text:
Set color of Blender object based on external data (e. g. temperature) using a colormap
I want to do an animation of a Blender object that changes color over time using a script. I already found out how to change the colors and set the keyframes from a script, but what I would need in addition is a possibility to "translate" the values of the external data (which are temperature values) to corresponding colors with a colormap (like e. g. the Jet colormap in Matlab).
I suppose that there is a simpler solutions than calculating these values "by hand", since I already saw how this can be applied for smoke, but the solution there seems not to be applicable for objects different from smoke.
Thank you again really much for your answers, you are a great help for me!
Edit: the question on the complete task I want to achieve (which has as suggested been split up into several smaller questions) can be found here, where also the application is shown.

In this case you have a predefined range 10 ... 90 degrees, it's simple to remap those to a 0....1.
Using a Cycles material
You could give each object a Value Node and key-frame its values within a range 0 ... 1, then convert them via a ColorRamp node to your Jet colormap (here quickly defined by hand).

Octave Gradients (add-on)

I wrote a little add-on that can recreate Octave/Matlab default gradients: Get it here. Installation can be done using the zip on github and Blender's Install from File feature in User Preferences. {category: 'Node', name: 'octave gradients'}
This adds a panel called Octave Gradient Demo to the Cycles node view.
From here you can choose the gradient by name, it will display the colors in the same panel.

The set gradient button will write the gradient to a ColorRamp if it finds one in the current material, else it adds a ColorRamp and then fills it with the gradient info.

The location of the newly added ColorRamp is a contentious issue, how would I decide where to add it? for now i've set it to add the node to (0,0).

Notice i've defaulted it to Linear, but gradient might be smoother.

Choices:

Usage

enable addon
make sure renderer is set to cycles
click an object, and create a new node based material
get a view open to see the nodes for the material
in the right side panel (use N to show the shelf) you'll see the Octave Gradient Demo panel.
initially this will show all black ramp slots until you change the palette from the dropdown.
If you haven't already added a ColorRamp node to the current Material, that's OK the set gradient button adds a ramp for you (but it might not be visible, zoom out if not)

Thank you again really much for your help, the solutions you are creating are just amazing! I will now try to get all of the things you suggested working. It might will take some time since there's also vacation time now, but I will definitely try and tell you once I succeeded! I only tell you this so you do not think I've lost interest in my project.

Hello again! Sorry for my late reply, but I finally found the time to work on my implementation. I cloned the Gist you supported me, and ran it within Blender. But I get two errors:
One in line 102 saying name 'false' is not defined which I think is simply a spelling mistake, so I changed false to False.
The other error appears on line 85 and says AttributeError: 'NoneType' object has no attribute 'nodes'. I tried to look deeper into it using pdb, but could no really understand whats going on. Maybe we are using different Blender version? Mine is 2.75. Thank you again for your help!

Wow, thank you! You're really fast! I'll try, and let you know how it went!

please check the revised instructions.

@zeffii is it possible to use this approach to color an entire surface at once?
i.e. say I have a surface and also an array of values for each node that I want to color by. I could normalize the values to be 0..1, but without downloading the addon and trying it appears as if this would work by setting one value at a time, i.e. for one node at a time. Is it possible to pass in an entire array of values instead? Similar to how you would use a seperate xyz node to extract the z values to color by?

In theory, you could use OpenColorIO for such a transformation. OpenColorIO can be used to transform data to meet colour critical precision, transform into greyscale, create linearized or nonlinear transforms, etc.
Without knowing much more about your context, it is difficult to provide a more robust answer.

Thank your for your reply! See this post for an impression on what I want to achieve. Could you give me another hint on how OpenColorIO could be used in this context? That would be really great!


text:
Can I use both GPU and CPU together when I render with Cycles to decrease render time?
Is it possible to use both GPU and CPU on a single render? I guess that the GPU and CPU should render the whole frame so it doesn't have different pieces rendered by CPU and a few other by GPU so the image looks weird because of the differences in the two render methods.
I don't want to run two independent instances of blender that might crash the other with 100%lode problems, or just end a half hour before the other.
The other is how do I make the GPU and CPU render the same style, I know i have seen very different result between CPU and CUDA render.
if you are working on a animation you shulde reed this also, the method disused ther is runing two independent rendering on the same time.
Cycles hybrid rendering

No, that thred did disus runing two difrent rendering on the same time, this is for runing one.

"Is it possible to render with Cycles using both the CPU, and GPU? If not are there any other workarounds that maximize the hardware's potential?"  - It's from question.

Reed the answers, they are talking abute runing two instance of blender working on different frames

... From first answer: "If you want to render a single image, you can set a different seed in the Sampling panel and render for example 2000 samples with the CPU and 4000 with the GPU and overlay both images in the compositor"

That will make things hard to balens the sampels, the second problem is that the cpu is building the BVH. The last problem is, how the hell do I synk the difrent rendring methods so the materials work the same, I have seen way to difrent variation on the rendering result to think I just can merge two difrent result.


text:
How to make this material with Voronoi texture in blender with the same color

How to make this material with Voronoi texture in blender with the same color

I would do this by combining two Voronoi Texture nodes, one set to F1 and Euclidean from which I take the Color output. The other I set to Distance to Edge and use the only available output, Distance.
To make them both match each other, I plug an external Value node into their Scale inputs to change them at the same time. I also set them to 4D, this way I can use another Value node to change the seed of the texture if I don't like the pattern.
The Distance to Edge I plug into a Color Ramp set to Constant, this way I can control how large the black areas between the colored pieces are.
Then I multiply the two with each other - the result are greyscale tiles with black gaps. This I plug in another Color Ramp node to give the greyscale values colors (starting with black to the left to keep the gaps black). For the texture coordinates I mix in a bit of a Noise Texture to make the edges of the Voronoi pattern more random by using a Mix Color node set to Linear Light and just a very small mix factor so that it's not too crazy.
I just made some similar colors to your reference, you can probably do better and by mixing with other noise etc. you could achieve not so homogenous colors - this is just to give you a basic idea.
This is the nodetree:

And this is the result:

Optionally you can also use the pattern to drive the roughness and maybe a Bump node like I did in the next example, however your reference image looks like the surface is quite smooth so you can probably get away with my above setup.

Thank you very much for this help and your useful guide. Always be healthy


text:
How to make a video like this with Blender software?
How to make a video like this with Blender software?

Video link

Hi. Please use a title that matches the content of the question. It should be descriptive but succinct, unique and identifying, summarizing the issue in such way that anyone searching for a similar problem is likely to find it. Use the [edit] link above, remove anything superfluous, avoid words like "this", "help", "issue with" or "question about". Remember, your title is the first thing potential visitors see, answers you get depend heavily on how insightful it is. See What is the problem of asking “How do I do this?"

Here is a try:

You could subdivide a grid, then split each face:

Scale down each face with the Transform Pivot Point set to Individual Origins:

Choose the top view and unwrap with the Project from View option. Then in the UV Editor scale down again with the Pivot set to Individual Origins:

Create a mix between a Transparent and Emission shader with a Noise Texture as factor:

Animate the Mapping node on X and Z (you can also set the Noise Texture to 4D and animate the W value to make the noise change while it moves on X):

Mix with some other noise textures if necessary, through a Color > Mix Color in Darken mode:

Result:

I think there are 2 noises passing in opposite directions in the reference? No biggie..

OK I'm going to edit  ;)

Ok friends. It is working. Thank you!


text:
How deep does Blender file packing go?
I recently (almost) completed a project and I am in the process of archiving about a hundred *.blend files having selected those used to ouput *.mp4 files for editing in Premiere Pro. I have gone through each of the "hero" files and selected File\External Data\Pack Resources.
After everything is packed, I will remove all the extraneous incremental files and only keep the packed versions thus clearing hundreds of GB from my C:\ drive.
I understand that packing should include all the textures and meshes, but I have many files that have other *.blend files appended and loads of particle systems as well - some of which have appended collections as the generator. During development, the directory structure grew to sixteen categories with as many as twelve subdirectories each of which could have four to ten subdirectories. There are also imported alembic files from other programs with their associated textures that are spread over two additional drives in various subdirectories. Packed files appear to find and include the textures properly, but...
My questions: How deep does Blender packing go? Will it include all the appended files? Will it included the textures, cameras, lights and animations from the appended files?? Will it truly create stand-alone files without needing any external resources? What happens with caches? Will they be generated anew if a packed file is opened and run?
With so many files, it would be prohibitively time consuming to backtrack which collections have been appended into which "hero" files and even more time consuming to verify that each of the packed files opens and functions properly.
Additionally, I do not want to keep all the hundreds of GB worth of development files available on an external drive in the off chance that some texture or collection is missing. But of course recreating some of those would be a real nightmare.
I think I have all the *.mp4 files needed for the final Premiere edit, but some scenes may need to be extended or otherwise modified as editing progresses and music and effects are added.
Any clarification or guidance would be most graciously appreciated!!
Thanks in advance,

Appending and importing are static processes, ie they don't rely on the source files anymore, which means you don't need to worry about that data, it's safely stored in your file. Packing is aimed at data that's referenced externally, such as image and video files).
Linking on the other hand is dynamic, so if you linked in some data from another (source) file, this source file must stay around.

Thank you for your input. That helps narrow down some of the confusion.  One additional thing I've discovered: I have an alembic file that uses an external cache for its animation.  This cache did not pack with the "packed" version of the file so when I reopened it, the mesh was not in the proper position for the frame -e.g., a trucking move ended with the mesh in frame, but it was not in the same pose. I had to put the cache file back into its original directory for this to work. This will become somewhat tedious to troubleshoot as I have multiple alembic animations in numerous *.blend files.

Generally I think the premise is flawed. You should keep external files external, and archive/compress your entire project structure instead.

Thank you for your input. While that will be done eventually, right now, I am simply trying to find the best way to keep all of the necessary files, textures, caches, etc so that I can delete what is not needed and free up some 350GB of space on my C:\ drive. Since I know what *.blend files I am using as final versions in the project, I had hoped that packing would include everything referenced by those files and I could get rid of everything else. Unfortunately, it appears that, without manually going through every final file and examining it, there is no reliable way to accomplish this.

Since this is still a working project, I need to revisit some of the *.blend files during the editing process. In fact, I just made some graphic changes and added 90 frames to one of the files. Archiving gains me nothing at this point, nor does archiving the entire 350GB.


text:
Is it possible to unwrap based on vertex group (weight)?
^This
I have a dog character with all the bones properly named and have vertex groups
However, when I try to unwarp it (even with smart UV) the result is not as desirable. (It's splitting to mostly large chunks that doesn't quite make sense and also a lot of bits and pieces)

I wonder if there is a way to unwrap the whole mesh to parts based on vertex group? (Each face would belong to the vertex group that has highest weight of it.
I want the UV map to have the same number of parts as the number of vertex group. Hope it makes sense

Any help is appreciated! Thanks!

No, you cannot use vertex groups. To tell Blender where you want to split the mesh - how should Blender know what "makes sense", and "smart" in this case means automatically by an angle threshold which you can set while unwrapping (there you can also set the margin between the UV islands, the gaps seem quite large in your screenshot). In order to let Blender where to split the UVs you need to mark edges as seams. But even if you would select e.g. a leg group and mark the border to the body as seam, you probably need another one going down vertically to unfold the leg mesh properly.

What did not fit in the above comment: to make it a bit easier to split up the mesh in its vertex groups, you can 1. select just parts of the mesh to unwrap and so unwrap it one after another or 2. select all vertices belonging to a certain group with the Select button at the bottom of Vertex Groups and then in the viewport menu choose Select > Select Loops > Select Boundary Loop to select only the border edges of the grouped vertices, then Ctrl+E > Mark Seam. Once you marked seams, you can also use Select Linked with L over an area to select only that within the seams.

I'm hesitant to write this as answer because I want to give others a chance to maybe come up with a better solution where the vertex groups / weight painting might be a bigger help...

You can use geonodes to separate faces by vertex groups, join back, and now with the edges split, uv unwrap. Then you can copy the corner data to the original mesh to keep the original indices and have geometry without splits, but with UV unwraps as if there were seams on the splits. This is not clear, however: "Each face would belong to the vertex group that has highest weight of it".


text:
Selecting objects in a collection
I was trying to select the objects in the newly create collection but i was not able to select as newbie i don't know some rookie mistake there so kindly help me with thisI have attached the video kindly check on it

Why are you switching to Scenes in the Outliner?  - Once you moved the cubes to the new collection you could select them individually and work on them as usual without switching to the Scene view! In any case you could have just clicked on 'Objects' in the Outliner and selected them from there.

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

Not sure why it's not possible to select them when you are in Scenes display mode

@moonboots You can select them if you expand the Objects section in the Scene outliner. I assume the Scene Collection entry there just includes the names of the collections which you can rename and enable/disable.

Sure but I agree with you, I'm not sure why he switch to Scene

okay sure i will use in built to upload gifs or images without using external links.So can any one tell me how should i  select the objects in a collection .I saw a video where they created a collection with some objects and when they selected the collection in the scenes all the objects in the collection were selected so i was  trying to do the same thing.So image imagine i want to add all black and white chess pieces to two different collection and i want to select the black color pieces alone may i know what to do.


text:
Selecting face on both front and back
I was trying to select both the faces in this shape i used knife for first time to get the cuts i dont know if i have any additional double edges or not but i was not able to select the both front and back faces in the xray mode