text:
Create Custom UI list with String Objects and store them to addon itself
I want to recreate this kind of Menu UI, don't care about the color swatches in front of those. Just need a functionality to add using that plus sign, and I get a new string variable as these and can rename on double click. If you can provide a code is useful, or you can point me to theory or docs for creating the UI.

Text editor > Templates > Python > UI Panel or Create an interface which is similar to the material list box

Have a look into Create an interface which is similar to the material list box (possible duplicate)
These examples are way better and much more complete than the ones you will find in the templates / documentation / blogs and can be customized to any requirement.
######################################################
The name property (string) is instantiated by default
(see the comment in the code) as part of the PropertyGroup (which stores the contents of each item) so in this case you do not have to do anything, except editing draw_item and turn the label() into a prop() call if you want it to be editable (mentioned in the code comments as well).
-split.label(text=item.name, icon=custom_icon)
+split.prop(item, "name", icon=custom_icon, emboss=False, text="")

Reduced version of the first example from here to add/remove any number of meaningless items and allow the user to edit their names.
# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

bl_info = {
    "name": "object-uilist-dev",
    "description": "",
    "author": "p2or",
    "version": (0, 1),
    "blender": (2, 80, 0),
    "location": "Text Editor",
    "warning": "", # used for warning icon and text in addons panel
    "wiki_url": "",
    "tracker_url": "",
    "category": "Development"
}

import bpy

from bpy.props import (IntProperty,
                       BoolProperty,
                       StringProperty,
                       CollectionProperty)

from bpy.types import (Operator,
                       Panel,
                       PropertyGroup,
                       UIList)

# -------------------------------------------------------------------
#   Operators
# -------------------------------------------------------------------

class CUSTOM_OT_actions(Operator):
    """Move items up and down, add and remove"""
    bl_idname = "custom.list_action"
    bl_label = "List Actions"
    bl_description = "Move items up and down, add and remove"
    bl_options = {'REGISTER'}

    action: bpy.props.EnumProperty(
        items=(
            ('UP', "Up", ""),
            ('DOWN', "Down", ""),
            ('REMOVE', "Remove", ""),
            ('ADD', "Add", "")))

    def invoke(self, context, event):
        scn = context.scene
        idx = scn.custom_index

        try:
            item = scn.custom[idx]
        except IndexError:
            pass
        else:
            if self.action == 'DOWN' and idx < len(scn.custom) - 1:
                item_next = scn.custom[idx+1].name
                scn.custom.move(idx, idx+1)
                scn.custom_index += 1
                info = 'Item "%s" moved to position %d' % (item.name, scn.custom_index + 1)
                self.report({'INFO'}, info)

            elif self.action == 'UP' and idx >= 1:
                item_prev = scn.custom[idx-1].name
                scn.custom.move(idx, idx-1)
                scn.custom_index -= 1
                info = 'Item "%s" moved to position %d' % (item.name, scn.custom_index + 1)
                self.report({'INFO'}, info)

            elif self.action == 'REMOVE':
                info = 'Item "%s" removed from list' % (scn.custom[idx].name)
                scn.custom_index -= 1
                scn.custom.remove(idx)
                self.report({'INFO'}, info)

        if self.action == 'ADD':
            item = scn.custom.add()
            item.name = "Your Name"
            item.id = len(scn.custom)
            scn.custom_index = len(scn.custom)-1
            info = '"%s" added to list' % (item.name)
            self.report({'INFO'}, info)
        return {"FINISHED"}

class CUSTOM_OT_printItems(Operator):
    """Print all items and their properties to the console"""
    bl_idname = "custom.print_items"
    bl_label = "Print Items to Console"
    bl_description = "Print all items and their properties to the console"
    bl_options = {'REGISTER', 'UNDO'}

    reverse_order: BoolProperty(
        default=False,
        name="Reverse Order")

    @classmethod
    def poll(cls, context):
        return bool(context.scene.custom)

    def execute(self, context):
        scn = context.scene
        if self.reverse_order:
            for i in range(scn.custom_index, -1, -1):
                item = scn.custom[i]
                print ("Name:", item.name,"-", "ID:", item.id )
        else:
            for item in scn.custom:
                print ("Name:", item.name,"-", "ID", item.id)
        return{'FINISHED'}

class CUSTOM_OT_clearList(Operator):
    """Clear all items of the list"""
    bl_idname = "custom.clear_list"
    bl_label = "Clear List"
    bl_description = "Clear all items of the list"
    bl_options = {'INTERNAL'}

    @classmethod
    def poll(cls, context):
        return bool(context.scene.custom)

    def invoke(self, context, event):
        return context.window_manager.invoke_confirm(self, event)

    def execute(self, context):
        if bool(context.scene.custom):
            context.scene.custom.clear()
            self.report({'INFO'}, "All items removed")
        else:
            self.report({'INFO'}, "Nothing to remove")
        return{'FINISHED'}

# -------------------------------------------------------------------
#   Drawing
# -------------------------------------------------------------------

class CUSTOM_UL_items(UIList):
    def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
        split = layout.split(factor=0.3)
        split.label(text="Index: %d" % (index))
        custom_icon = "COLOR"
        split.prop(item, "name", icon=custom_icon, emboss=False, text="")

    def invoke(self, context, event):
        pass

class CUSTOM_PT_objectList(Panel):
    """Adds a custom panel to the TEXT_EDITOR"""
    bl_idname = 'TEXT_PT_my_panel'
    bl_space_type = "TEXT_EDITOR"
    bl_region_type = "UI"
    bl_label = "Custom Object List Demo"

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

        rows = 2
        row = layout.row()
        row.template_list("CUSTOM_UL_items", "", scn, "custom", scn, "custom_index", rows=rows)

        col = row.column(align=True)
        col.operator("custom.list_action", icon='ZOOM_IN', text="").action = 'ADD'
        col.operator("custom.list_action", icon='ZOOM_OUT', text="").action = 'REMOVE'
        col.separator()
        col.operator("custom.list_action", icon='TRIA_UP', text="").action = 'UP'
        col.operator("custom.list_action", icon='TRIA_DOWN', text="").action = 'DOWN'

        row = layout.row()
        col = row.column(align=True)
        row = col.row(align=True)
        row.operator("custom.print_items", icon="LINENUMBERS_ON") #LINENUMBERS_OFF, ANIM
        row = col.row(align=True)
        row.operator("custom.clear_list", icon="X")

# -------------------------------------------------------------------
#   Collection
# -------------------------------------------------------------------

class CUSTOM_colorCollection(PropertyGroup):
    #name: StringProperty() -> Instantiated by default
    id: IntProperty()

# -------------------------------------------------------------------
#   Register & Unregister
# -------------------------------------------------------------------

classes = (
    CUSTOM_OT_actions,
    CUSTOM_OT_printItems,
    CUSTOM_OT_clearList,
    CUSTOM_UL_items,
    CUSTOM_PT_objectList,
    CUSTOM_colorCollection,
)

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

    # Custom scene properties
    bpy.types.Scene.custom = CollectionProperty(type=CUSTOM_colorCollection)
    bpy.types.Scene.custom_index = IntProperty()

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

    del bpy.types.Scene.custom
    del bpy.types.Scene.custom_index

if __name__ == "__main__":
    register()

To add to this, you can do this for any Property prop type: https://blender.stackexchange.com/questions/255567/how-to-use-property-definitions-and-propertygroups-with-uilists/273847#273847


text:
Script to Rename selected object same as the active object plus a suffix

So what I want basically is as follows:-
Basically I have two objects with different names. So lets say I select both of the Objects named "First" and "Second". So I make one of them named (First) as active selection. I want a script or addon which can rename the non-active object(named- Second) have the name of the first one but with a changeable suffix like say "_HP". So after applying the script I will have something like this.
Don't mind the annotation/painted names those are so u can easily see which object is named which. Thank you!

What if there are 3 or more objects in the scene?   Like a light or camera?  Or would that never happen?

Nah mostly I use max two objects:- One is high poly and other one is Low poly, if there will be a third I will try to rename it manually.

You can use bpy.context.active_object and bpy.context.selected_objects.  The first tells you the object that is active — the one you want to use as the source of the name.  The second one tells you all of the selected objects, including the selected objects.  The simplest script to do what you want in this case is
import bpy

name = bpy.context.active_object.name
suffix = "_toy"

for object in bpy.context.selected_objects:
    if not object.name == name:
        object.name = bpy.context.active_object.name + suffix
        break

You can enter this in the text editor, change the suffix string to whatever you like, and use the run key to run it.
It does have a bug, though.  If you have selected multiple objects, it will rename the first one in the list, and it might not be the one you want.
It's also inconvenient, in that you have to edit it every time you change the prefix.
You could turn it into an add-on with an object mode panel that you could use to set the suffix, of course:
bl_info = {
    "name" : "renamer",
    "description" : "rename the selected object",
    "author" : "Marty",
    "version" : (0, 0, 1),
    "blender" : (2, 80, 0),
    "location" : "View3D",
    "warning" : "",
    "support" : "COMMUNITY",
    "doc_url" : "",
    "category" : "3D View"
}

import bpy

from bpy.types import Operator
from bpy.props import StringProperty
from bpy.types import Panel

class RENAMER_OT_Message(Operator):
    """ Renamer operator
        Renames the other selected object to the same name as
        the active object, with a suffix added.
    """
    bl_idname = "renamer.rename"
    bl_label = "rename"
    bl_description = "rename the selected object"
    bl_options = {"REGISTER"}

    @classmethod
    def poll(cls, context):
        return context.mode == "OBJECT"

    def execute(self, context):
        if not context.active_object:
           self.report({'ERROR'}, "No active object")
           return {'CANCELLED'}
        if len(context.selected_objects) != 2:
           self.report({'ERROR'}, "You must select two objects")
           return {'CANCELLED'}
        name = context.active_object.name
        for object in context.selected_objects:
            if not object.name == name:
                object.name = context.active_object.name + context.object.suffix
                break
        return {'FINISHED'}

class RENAMER_PT_Panel(Panel):
    """ Renamer panel
        A panel to display the renamer operator
    """
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "renamer"
    bl_idname = "renamer.panel"
    bl_label = "rename selected"

    def draw(self, context):
        col = self.layout.column()
        col.prop(context.object, "suffix", text = "Suffix")
        col.operator("renamer.rename", text="rename")

classes = [
    RENAMER_OT_Message,
    RENAMER_PT_Panel,
]

def register():
    for c in classes:
        bpy.utils.register_class(c)
    bpy.types.Object.suffix= bpy.props.StringProperty(
        name="suffix",
        description="Suffix to add to name",
        default="_HP",
    )

def unregister():
    for c in classes:
        bpy.utils.unregister_class(c)
    del bpy.types.Object.suffix

if __name__ == '__main__':
    register()

Oh wow, really that is almost what I wanted. Can I have one more change in this plz, Can you also make an another parameter, so the Active object can also have a suffix like "_LP". So after the rename script it will make two object : "First_LP"(active) and "First_HP".,

Thank you btw, I really appreciate you make a script and an addon too.

@NamanDeep Since you're apparently a new user to Blender StackExchange, you might want to read What should I do when someone answers my question? and perhaps accept my answer.

Your change request involves a lot more code than is reasonable for a StackExchange answer.  Using what I provided you should be able to make the changes to add the second parameter. It's a good way to learn, and StackExchange is meant to teach you how to do things, not do them for you.

Yeh, I actually did it, making some duplicate of the parameters and using the active object parameters to change its value and using that in execute funciton,. Thanks tho, I am still new to blender scripting, Although I have coding background but not experienced with blender's scripting, Thanks again

You're welcome.  It's aimed at people with less scripting knowledge, but it's a good introduction to blender scripting, so I recommend Scripting for Artists as the best available introduction to Blender Scripting.

Here is one trivial script that will rename per your (incomplete?) spec, where I've allowed for non-mesh other items (light, camera):
import bpy

suffix='HP'

if bpy.context.object is None:
    print('you need to select one object')

name_base=bpy.context.object.name

for obj in bpy.data.objects:
    if (obj is bpy.context.object) or (obj.type != 'MESH'):
        continue # skip selected
    obj.name=name_base+'_'+suffix
    break

The 'for all objects' loop breaks after renaming the first unselected object in the scene.  Or one could have name objects, and use an incrementing index like
suffixIdx=0
.
.
.
    obj.name=name_base+'_'+ suffixIdx
    suffixIdx += 1
    # break   # remove the break statement

or gussie that up by formatting the suffixIdx so that the suffix is a three digit number preceeded by zeros like obj.name=name_base+'_'+suffix+'.{:03d}'.format(suffixIdx)

Thank you, really appreciate the help mate. :D Although Marty Fouts gave me exactly what I want. your solution is really good too. :)

source: Stack Exchange

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

sort: votes


text:
Script to move a specific modifier (eg. Array) of two or more objects to top of Modifier stack
Currently I have this script.(IMAGE) but also attached the blend file for better understanding
https://www.mediafire.com/file/fjg3ger7lbukmlk/Text_s.py/file
https://www.mediafire.com/file/lr8yc0cttw3nkgh/test.blend/file
So what My code basically is doing for a selected object is as follows:-
finding if object has Mirror modifier or not.
If exists, I delete the already existing [Mirror] Modifier and make a new modifier Mirror with but with some pre-defined changes of its options:- like in my code, changing UV offset X to 1.0 from 0.0
My code works fine If I select just a object and run the script, but as soon as I select two objects. It gets frozen and eventually crashes.
I know this code description is too complicated. Don't mind it.
For now I basically want to develop a code as follows:
If I select two or more objects in scene and when I run the script.
my modifier[eg mirror] moves to top of modifier stack for both the objects.

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.

@DuarteFarrajotaRamos Actually I did uploaded a image of code here, but it somehow didnt uploaded to post.

Also don't post images of code. If the code is relevant to the question post it as plain text using proper code tags, so people don't have to type it by hand.

WiP... A comprehensive list of operator overrides

As by this Q&A: reorder modifier/constraints stack order in python
Use bpy.ops.object.modifier_move_up or ..._down. To avoid the need to make each object active before moving modifiers, use context override {'object': ...}
import bpy
from bpy import context as C

def check(obj, name):
    index = obj.modifiers.find(name)
    if index == -1:
        raise KeyError(f"Couldn't find '{name}' modifier inside '{obj.name}' object")
    return index

def move_up(obj, name):
    check(obj, name)
    bpy.ops.object.modifier_move_up({'object': obj}, modifier=name)

def move_down(obj, name):
    check(obj, name)
    bpy.ops.object.modifier_move_down({'object': obj}, modifier=name)

def move_top(obj, name):
    for i in range(check(obj, name)):
        move_up(obj, name)

def move_bottom(obj, name):
    for i in range(check(obj, name), len(obj.modifiers)-1):
        move_down(obj, name)

for o in C.selected_objects:
    move_top(o, 'Mirror')

How to move modifiers of multiple objects up or down?

Thank you, Markus von Broady , That's exactly what I needed!

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


text:
Emitting sparks or dust at rigid body collisions
I'd like to have automatic particle emission when rigid body objects collide with others (I have many objects). Not that I can find it but I've read of an option under children that can spawn others when a particle collides, however I haven't seen anything regarding rigid body collision events.
Can this be done out of the box? With a plugin? Or, last resort, with a small amount of scripting?

This is not possible yet; That's one of the things Particle Nodes will allow, however they are still in development.

This is not yet possible. However, this is one of the many great things Particle Nodes will allow - these are still in development but can be tested here.

I am not sure if you want ANY rigid body, colliding with any other else rigid body in your scene, to emit particles (i'd love that too), but if the interactions aren't too complex, i guess this tutorial could fit your needs.

He asks for an automated solution.

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


text:
Use quaternions/remove gimbal lock from blender view
This took me a while to find so I'm adding it here.
I was trying to use the Project From View UV Unwrap and because 1. there's no way to roll the view camera and 2. the camera gimbal locks at the poles I was having a lot of trouble getting the correct direction to match my texture.
The answer is of course to put the camera in quaternion mode, but I had no idea how to achieve this. There's the Transform Orientation selection box which has the Gimbal option but this is not for the camera's transform.

What I wanted was to change the TrackBall/Turntable option in File->Preferences->Input

(source: blender.org)
Also see:

What is the difference between the trackball and turntable style view modes?

This script may also help add a bit of control to either view type: http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/roll_view

I found that under the TrackBall/Turntable option in File->Preferences->Input I changing "View Navigation" from "Walk" to "Fly" worked.

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


text:
Working with big numbers
I want to extrude a shape from an SVG file, then create its negative (boolean with a scaled cube).
I can do the obvious steps if I scale and move the shape. The real problem is that the SVG file works with big numbers (in the millions). I can not zoom out enough to see the object(s) in their original size but it would be important not to change the coordinate-space.

Why not scale the SVG down to a manageable size, then apply the scale (Ctrl-A)?

@CharlesL The object is not centered around (0,0) It is in a different coordinate system, my goal is to use that one in Blender as fully as possible instead of transform -> process -> reverse transform (and hope I got the reciprocals right).

You can set the 3D View far clipping distance in the properties panel (press N in the 3D view to toggle it),
and/or
the Camera far clipping distance in the Lens section of the Camera tab:

By the way, it's limited to maximum 10 000 units (or 10Km), so I don't think it'll works nice with objects having scale in millions.
You should consider scaling down the objects by a factor you know (say, *0.001):

select all objects (press A)
press S, then .001
then, left click to confirm.

If you want to control the scale center point in order to keep relative coordinates of the objects, you can place you 3D cursor where you want and choose 3D cursor pivot center before scaling your objects.

Thanks, the viewport now can accommodate my object. After an Origin to Geometry can I center the view (and move the cursor) to my origin?

@vbence Shift + C to center the view on your object and Shift + S > Cursor to selected to snap the cursor to it.

We're getting there.. :) Now can I center the viewport too to this point?

OK I used N > View > Lock to Object.


text:
Creating a planet using grid and warp; texture is distorted?
I was following this short tutorial about creating a planet by warping a grid or plane. It works great, but I'm having one problem: the polar ends of the planet (top and bottom) are sort of coming together in a point. It's really distorted. Here's a picture.
Here's one of my nodes and UV map.
I'm not sure if it's the texture, because everyone else was using Earth textures and I made my own in Gimp. Is there a way to fix this?

See How to get perfect UV sphere Mercator projection?

@iKlsR The thing about an edge loop is actually something I tried, but I didn't think it was what people usually did. Thanks!

I marked it as a dupe since it correlates with the linked post and is basically asking the same thing, if you were after something else, just flag it for reopening.

@iKlsR I wasn't sure what to ask or what to look for, so I don't really mind.


text:
Limit a mesh so it doesn't collide with or enter another mesh?
I'm wondering if it's possible to limit a mesh so it doesn't collide with another mesh. I'd like to be able to move a mesh around the 3D view and have it stop moving along that axis when it touches another mesh (of my choosing, preferably). Is this possible?

@gandalf3 Thanks for the other question!

AFAIK it's only possible when having Blender animate things, like when creating a cloth animation.

@jwenting That should be a feature... but I imagine it would be hard to implement.


text:
Linux kernel crashes corrupt my Blender files
I have frequent kernel crashes (which I haven't solved, but that's another story) that absolutely destroy my Blender save files. If I have a file open in Blender, even if I'm not doing anything to it, it will be corrupted when I try to open it again after rebooting. I'll get the infamous "file format not supported" error and when I check the size of the .blend file, it's 0B.
I also have auto backups turned on, but when I went to check if they were any better, they were also 0B.
I'm not expecting to solve my kernel crashes, but is there a way to make sure these corruptions don't occur, outside of manually backing up my files every 5 minutes?

Kernel crashes can be caused by things external to the kernel like Ram, HD, powersupply not supplying power consistently to these components, or overheating. Blender assumes your computer functions normally, and that's what we assume here at BSE too. I've had failures like this in the past and have relied on the .blend1 and .blend2  files which you can rename. Beyond that this question is out of scope for BSE.. -- i'm not aware of any ultra-defensive mode..

save often, save using sequential file names. until you resolve the Kernel / crashing issue

Blender stores a copy in /tmp (check if that copy is OK). Some distros remove files from /tmp from boot to boot, so you might want to start the machine after a crash from a USB or any other mean that avoids removing /tmp.

@YoMismo My tmp folder was clean, but I've changed the temporary storage folder to something in my /home/username directory. Hopefully that will help.

@zeffii I thought maybe there was a setting in Blender that was constantly accessing the files you open and therefore might cause corruption. Thanks for the suggestions.

Have you tried using the File > Recover Last option? it automatically loads the latest blend file saved to the tmp folder.
By default Blender saves the scene every 2 minutes. You can change the Auto Save duration in User Preferences.


text:
Select Mesh from scene which has volume equal or close to the active mesh
I am trying to develop a code which can Calculate volume of active mesh object and find another mesh and select it from scene which has volume equal to active mesh or (smaller or greater than active mesh, lets say the difference could be 10% in volume of both).
For eg. My active mesh is "Monkey_susan" it has volume 10cubic centimeters.
and lets say in scene there is a object named "Susan" which has volume about 9cubic centimeters. which is in range of 90% of "Monkey_susan" volume, so difference in volume is 10% so it is matched and then selected.

Not sure it completely answers your question but here's how to calculate volume of an object : https://blender.stackexchange.com/a/99676/86891

I think it does 60percent of my work., so yeah the rest is just to compare objects, thanks mate


text:
How to remove Parent of an object using python while preserving transformation
My question is how to clear parent of an particular object lets say its name is 'Cube'.
I don't want to use
bpy.ops.object.parent_clear(type='CLEAR_KEEP_TRANSFORM')

Because this only clear parents for the selected objects. and that is not my case. as I want to remove parents of objects with particular name and also keep the transformation. Is there any method without the above line of code.
And also I want to do it with a code not using Alt+P, thank you.

obj.parent = None ? https://docs.blender.org/api/current/bpy.types.Object.html#bpy.types.Object.parent

I updated my question. lets say the parent of the object is 'a' if a has some uniform scale. and when I use the line u suggested it clears the parent but it doesn't preserve the transformation which I need

Clear Parent and Keep Transformation

actually I found another way. If you apply transform of the parent object and then set obj.parent=None. then it keeps the transformation. Can u tell me a code for applying scale and rotation without using bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)


text:
Error During Running Python file in a Blender Subprocess from blender
I am working on this code from the post: How can I run blender from command line or a python script without opening a GUI?
I am trying to open a blend file and have a script run in that blend file to do some actions.
but I get error while running this code from the above post
import bpy
import subprocess

f_path = 'C:/Users/naman/Desktop/test.blend'

code = """
import bpy

for obj in bpy.data.objects:
    print(obj.name)

"""

output = subprocess.check_output( f"blender '{f_path}' -b --python-expr '{code}' ", shell =
True)
print(output.decode('UTF-8'))

Error in the Blender

This looks like a near-duplicate of the later https://blender.stackexchange.com/questions/293440/how-to-run-script-in-a-new-blender-subprocess . I'll close this one, assumng the later one is more correct. If you need to expand / make adjustments, please do so, in your other post.

I’m voting to close this question because it's a near duplicate of https://blender.stackexchange.com/questions/293440/how-to-run-script-in-a-new-blender-subprocess

No, It's not entirely similar, on the link u mentioned I am asking how to open a blender subprocess and work code on it, In this post I am trying to open an existing file as subprocess, Check F_path for both the post

Hi, @NamanDeep, Thanks for the correction This was actually flagged for the duplicate answer, given to both posts. I don't know if it helps, I deleted the copy on this post. I'll reopen your question. Sorry for any inconvenience.


text:
Delay freefall of a cloth mesh

I got a single object made of multiple cubes with a cloth modifier applied. My goal is to delay freefall for every cube so for an example:
Green cube freefall will start at 30th frame.
Pink cube freefall will start at 60th frame.
Blue cube freefall will start at 90th frame.
Yellow cube freefall will start at 120th frame.
Optionally, is it possible to change the location of a cube right before freefall? Example, blue cube will start freefall from the (approximate) location of the green one.
Is armature modifier the right direction, if yes I will invest more time into learning it.

You can control when they fall by controlling pinning.  You can animate pinning through the use of vertex group modifiers.

Create five vertex groups on the simulation mesh.  Assign all verts at weight 0.0 to "pinning".  Assign appropriate verts at 1.0 to groups "blue", "pink", "green", "yellow".

Nominate "pinning" as your pinning group for your cloth physics.

For each color group, create a vertex weight edit modifier, with a custom curve, where you set the curve to just be a straight line at the bottom of the curve, to remove all verts from that group.  Then animate the global influence of each of these modifiers to 0 (when you want the group pinned) or to 1 (when you want the group unpinned.)  There are probably other ways to do this, this is just what I do.

For each color group, create a vertex weight mix modifier that adds the color to "pinning" group.

Make sure your cloth modifier is being run at the bottom of this stack.

I'm sure you could do this with only the vertex weight mix modifiers, but I think the vertex weight edit modifiers demonstrate more of what can be done for further problems.

This is it, thank you! Using only vertex weight mix modifiers is enough for my project. Not sure what advantage I get by using vertex weight edit too.

first select your cube, TAB -> edit mode -> A (select all) -> P -> Loose parts.
Then change the start simulation frame for each cube as you want.

Result:

(Had to delete my first comment on this) At first I thought that was the solution but then I realized it made all the cubes as separate objects. I need to have all them as one object because the cloth modifier acts differently with separate objects and a single object.

Compare the green cube deformation in both animations for the difference.

@Boris Are they deforming different because they are separate objects or because the timing of falling and bumping into each other is different...? I mean, in the first animation the green one gets more squashed by the blue one because it's on the ground, while in the second animation it's back in the air...

@Gordon Brinkmann
In the case with separate objects, the green cube is not affected by the blue one at all. More details - https://blender.stackexchange.com/questions/248942/cloth-modifier-doesnt-collide-properly

@Boris I'm sorry, I was thinking of soft body physics anyway, my mistake.


text:
Animating Hair along their path
I would want to try to achieve this kind of animation but i am not sure how to proceed. what i am interested in is the "follow path of the hair particles"
Any help or advice on how to proceed would be awesome!
Full animation: https://www.instagram.com/p/BsJ05RWHBV8/

Hello :). What have you tried so far and where exactly are you stuck?

You can do this easily using Falloff Tracer node.
Falloff Tracer is available on Animation Nodes + Extra Nodes addon.

Awesome!! I am really new to animation nodes and I am having a hard time to understand how to put it all together.

Particle Instance Modifier might be your friend.
I used it once to make water droplets fall down wet hair. It's hard to see because the droplets are a little too transparent and the GIF is really bad quality, but they're there!

(see original complete HD video: https://youtu.be/1kSnauxiZqY).

You tell your particles that they should sprout in the hair system of your choice, how many of them, and where along the hair shaft do they go - and you can animate any of these sliders (see how they move with the animation). They will stick to the hair even if it moves.
How it works:

One approach would be to model each hair as a separate curve (you could probably have a decent result with most of the curves being duplicates), adding a cylinder with curve deform modifier, setting the object origin to one end and then animating the scale of the object (along one axis). Similar approach would be to add an array modifier and animating the count.

notice, that the mesh has to have a lot of loopcuts for this to work
With the array modifier, it would look the same, just instead of animating the scale, you would animate the count and the mesh would be just really short cube (/cylinder)
I would think there is better approach, but I am not sure what it is.


text:
How to use a green texture map from a game character?
I extracted a game character and along with it came this green texture map with the filename postfix Exp. is this engine specific or is can it be used somewhere in blender?

A Halloween mask?

Complete and total guess: Use a separate RGB node. Plug red into Subsurface and green into Specular

This practice is called channel packing

Well, I had the same question for the same reason and I finally worked it out. Apparently it's a Unity thing. What you're looking at is an RGBA texture map. G has ambient occlusion, R has metallic, B has something they call a "Detail Mask" but I didn't immediately get the purpose, and A has has the "smoothness" mask which is an inverse of roughness in the form of 1-sqrt(roughness). Here is more than you probably want to know: https://raytracing-docs.nvidia.com/mdl/api/html/mi_neuray_example_distilling_unity.html

Followup: yes, I suspect you can use them in Blender. You'd just need to pull the image into your favorite image editor and bust the 4 channels into individual grayscale files. The smoothness is probably the only odd item, but I'm sure there's a blender filter which could be used to convert to roughness.

There is also the Separate RGB node in the node editor to get each cannel without relying on external software.

But separate rgb only has access to alpha in the compositor

You can pull alpha straight from the image texture node


text:
Is it possible to clip half an object indirectly similar to section plane in SketchUp
Hello beautiful artists,
I was wondering if I could clip a finished 3d model to view only a portion of the model without really messing with the object mesh directly. The idea is quite similar to the "Section plane" tool in Google SketchUp. Here is a screenshot of it.

The whole point of doing this is to be able to display the same object with two different design versions in the same position to more less achieve a before & After effect like the below-attached image. It would be great if I could animate the before model into the after model with a cool transition.

I am looking forward to hearing from you smart crowd.
Thanks in advance.
Ash

You could use boolean for this

If Boolean doesn't work you could do it in the Compositor

Or very easy with shader nodes

Tutorial here: https://youtu.be/LbCKAlwxxmE

i updated my answer - now can can animate two objects. It is pretty much the same, just use two objects and instead of using two materials, just make one material with alpha = 0 and for the other object just the other object with alpha = 0

I believe you want something like this:

This accomplishes your first request, the slicer, by using a Boolean Difference operator.  The techniques is fairly simple.
Slicer

Create the object you want to slice
Create a cube large enough to contain the object with the same origin
Move the cube to one side of the object along an axis.
Set the cube's Viewport Display to wire to make it easy to see.
Deselect the cube from rendering so that the result shows up in a render but not the cube.
Add a Boolean modifier to the object.  Set the type to Difference and the object to the cube.  You will probably have to set the Solver to Fast to avoid bugs in the exact solver:

Note: You can angle the face of the cube that is the 'front' of the slicer if you want a slice that is at a diagonal to the movement of the slicer.
To accomplish the AB reveal effect you simply use two cubes, one slicing the object you want shown on the left, the other slicing the object you want shown on the right.
A trick for making the animation easy:

Place both objects at the same origin.
Create the first cube with the same origin.
Give the cube an array modifier.
Perhaps change the relative spacing to something slightly larger than 1 if you want a gap in the reveal.
In edit mode, separate the two cubes
Move the second cube's origin to its geometry.
Create the two Boolean operators.  Use the original cube on object, the second cube on the other.
Parent the second cube to the first cube.

Now when you move the first cube the second cube follows it exactly.
Here's the blend file for my example, but if you want to render it, you do need to disable the cubes from the render and setup camera and lighting.

It's childish to downvote correct answers, especially if you're not willing to explain the downvote.

*** UPDATE ***
ok, so you want 2 objects with that technique, looks like i missed that.
All you have to do is use another object with the same material setup and double the materials as well so that each object has 2 own materials.
Then you change one material to be alpha = 0 and for the other object the other material to be alpha = 0. Don't forget to change the blend mode, then you will get:

Here the explanation for 1 object:
Shader setup:

Just add a plane as a "divider" and make it invisible (by material or by render/viewport checkbox)
result:

or with 2 planes and 3 shaders:

blend file:

Dang, that works better than I thought it would. Good job :))

@JachymMichal: Thank you!!!

Except that the OP wants a technique for switching between two models, not for changing shading on one model.

Still doesn't give the slicing effect that the OP asked about in the first part of the question.

Your first solution was bad.  You even changed it in response to my comment.  How is that 'making solutions look bad' rather than pointing out bad solutions?  Your transparency technique does not solve the slicer problem because it doesn't create a face at the boundary.  I do understand it. It doesn't work.

To expand my comment, you can easily achieve this effect with active bool using slice... You will technically slice your mesh into 2 with some 3rd object and 1 will use 1 material and second object will use 2nd material like this:

Way to achieve this is simple as well, just use your mesh, add one cube (or any object) and you can use default addon called booltools that will give you this menu and you can select your cube, your object you want to cut and press this:

Your cube will be transparent and by moving it you will cut your object... now go to your object (you can now select each cut separately and click on this button and select object:

Do this for both objects and by moving your cube you will see that effect you want... If you want to make it better, you can but it will take additional steps

Also geometry nodes are becoming more and more better and I saw already some people swap one object with another like this with geometry nodes

There are literally multiple ways to achieve this and probably thousands of different tutorials

I think the OP wants to switch between models, not change shading.

In 3D-view, set the orthographic view, and press Alt+B. You will got a frame like in selection box:

Everything outside this box will be hidden. Now you can rotate the view to reveal cuts.

You can also make Alt+B cuts in perspective view, but in this case you will get pyramidal cut


text:
How can I warp text 40 degrees. Like a partial cylinder
Trying to do something like what's at the link below. but with text and other flat objects. Simple Deform bend is close but not what I'm looking for.
https://www.thingiverse.com/thing:3045130

Do these text and other flat objects have enough geometry to be bent properly? You say, Simply Deform is close, can you provide a screenshot to show what you got?

so do you want this? [1]: https://i.sstatic.net/6MOOT.png

First, add your text, rotate it so it's "upright". Convert it to a mesh, and notice in wireframe mode that the topology looks like garbage:

Add a Decimate Modifier set to Planar to clean (most of it) up. Good enough for now. Apply the modifier.

Enter edit mode and select the whole mesh. Select the Spin Tool from the bar on the left.

Use one of the orthographic perspectives (Numpad 1 or Numpad 3) to get a perfect side view. Position your 3D Cursor directly below your text with Shift + Right Click (3D cursor acts as pivot point for Spin Tool by default).

Click and hold down your mouse and start turning the mesh. You can hold Ctrl to make it step  by increment.

Inset all the front faces so you can shade smooth without artifacts.

Voila

EDIT - Sorry, I just re-read your question and saw you said 45 degrees and not 90. Here's a pic showing 45. I also added a material, a base and some ambient occlusion so it looks less like dental clay.

Here it is with the text from your example image along with a simple material consisting of a Bumped Noise Texture (to give it that bumpy, 3D-printed look), and some Subsurface Scattering to make it look a bit like plastic.

Or, I guess, a Screw modifier for a  non-destructive version? Same thing.

Actually he said 40 degrees, not 45  But I would do it like that, too. Or add loop cuts if I already had geometry that I would like to keep, to get more geometry to work with.

Yeah it's not quite 90 or 45 the example I showed somewhere in between but thanks for this. Spin tool was what I was looking for really. With that I can spin any object that is semi flat. Using this with 3d printing for table nameplates or plaques. So once I get the mesh I'm good to go. But you made it look like real. You guys always impress me. So much to know so little time.

As Gordon says, you need enough topology to be able to bend your font. What you can do is create your text, convert to mesh, extrude a bit, Shift to repeat the extrusion:

Create an empty close to your object. Give your object a Simple Deform modifier on Bend mode, Angle > -90°, with the empty as Origin:

Rotate the empty on X (use the Ctrl key to rotate 5° by 5°), move it until you have the correct shape:

Right click on your object and Shade Smooth, in the Object Data panel > Normals, enable Auto Smooth:

If you move the empty you can change the rotation center:

This wasn't quite it but I really like this too.

hello, what do you mean? you can do exactly what you wanted with this method but Christopher's is probably faster  ;)


text:
How to snap an object using a specific vertex in Object Mode?
I can change the origin point to the vertex I want it to snap with, but i loose the old origin location.
In 3DSMax i could do this simply by hovering over the vertex i wanted to use as a pivot and moving it and it would automatically select the nearest vertex as a pivot to snap to the vertex of the other object.
Help I really want to switch to blender but i really hate to sacrifice these little quality of life things max has.
EDIT:
Ok so maybe my explanation is a bit confusing but i found a youtube video of someone doing it in 3ds Max at 1:49 time.
https://www.youtube.com/watch?v=4Aa7NVKK7N4
See how the guy just hover over a vertex and it lets him move the object by that vertex and then snaps it to the vertex of another object, that is what i want to do.

a little suggestion,COMMA is free!From the beginning of your title,I read almost one hundred words without take a breath,so I finally don't get even one word.To illustrate what you want clearly will do good to your problem.

Thanks for the tip, any insight on my problem though?

@CMZneu: you didn't understand NatureK. He wanted to say: Add a sketch with annotation or a screenshot so we can understand what you mean. So please press "edit" and improve your question - or your question will soon be closed.

@Chris There, i linked a youtube video where a guy does what i want but in 3ds Max... so is it possible to do in blender without having to change the objects origin?

I have been working on an add-on that does exactly that, it has not been battle tested, so feel free to try it and report issues if you find any: https://github.com/JulienHeijmans/quicksnap

@JulienH Thanks i look into it

You can't grab a specific vertex in object mode.
But you can use a parented empty.
Vertex Snapping > Closest. You can't choose which vertex snaps.

Using a parented empty. Choose wchich vertex to use.

Thanks that works, still it's not as easy as in 3ds max but at least there is a way, maybe somebody has made an addons or tool that makes it as easy as in max.

Hi :). Yeah, having smart snapping would be really nice. Perhaps one day.


text:
Realistically randomize Rubik's Cube
A particular user with a Rubik's cube in avatar has inspired me by these questions:
Random colors to geometry node
creating a cube mosaic
Randomizing colors on Rubik's cube faces is easy. But what about dealing with perceptive observers, who will point out:
☛ "You have two orange stickers on the rightmost corner" - Allen Simpson [how to make sure each piece doesn't repeat colors]
☛ You have too little or to much of some color [how to shuffle colors rather than randomizing independently for each face]
☛ You can't achieve such layout with a real Rubik's cube, e.g. you have 5 blue corners [or even more nuanced logic]
I think dealing with the realism partially, by solving some but not all of the problems above is still productive and so I invite to share also sub-optimal solutions.
Some examples of impossible cubes: [can you tell why?]

Linkage:
Animation Nodes Rubik's Cube
Something Wrong With Rubik's Cube Corner Part Measurements

Using Geometry Nodes, you can instance a 1 m cube (a piece) onto a subdivided 2 m cube, then store the pieces positions for later. The "Scale" node can be unmuted by people who suffer from OCD, but the logic works regardless.

Use a modifier to bevel the cubes, I chose 3 segments and Amount = $0.05$

 Draw the rest of the owl:

Select (before B3.5 use a switch) faces by position.
Color selected faces based on normal.
Normal can be converted to luminance and  all axis-aligned normals will produce a different luminance.
The luminance is then converted to correct color using a color ramp.
Move all pieces to origin [only if the node was unmuted, otherwise something different happens, DON'T WORRY].

Below that I converted the geometry to 26 instances. Unfortunately there's no vanilla node to convert to multiple instances, so I chain 26 custom groups:

It simply separates the first island (inverted selection), converts it to an instance, joins with geometry already converted to instances, and then joins with still unconverted mesh, so that it can be chained using one link per node. Both "Join" nodes are required in order to not nest the instances.

Below that:

Spawn a grid which represents the centers of Rubik's Cubes.
Capture those centers used later as pivot points in rotations.
On each such center spawn and realize 26 points, which will spawn pieces.
Offset the pieces inside the dynamically assembled collection back to the correct position.
Thanks to offsetting before and after converting to instances, they are now aware of their position, rather than considering the Rubik Cube's center to be their position.
Instance the pieces.
If you don't want your cubes to stand boringly in military-like fashion, you need to move them after rotations, because XYZ coordinates are used to rotate entire sides in unison.

Finally, rotation is hidden in this custom group:

${π\over2} \text{ rad} = 90° = 1.571 \text{ rad}$
It rotates the instances around each axis. It's important for this to be 3 separate nodes, because the rotation depends on the position, and after each cube twist, positions change.
In reality you don't twist the middle pieces of a Rubik's cube, but you can imagine holding the cube in a vice and rotating the middle, so it's valid and spares the step to rotate the entire cube.
To maximize randomness, a different seed is used in each use of this custom group, and the step attribute is used to increment this seed automatically.
Notice the warning: rounding to integers is an unstable, bifurcating process: Something at $x = 3.0$ will floor to $3$, but something that has been very slightly (perhaps due to messy nature of rotations and float number precision) moved to $x = 2.99999999$ will floor to $2$ and therefore possibly rotate by a different angle! This is why I set such dimensions of the spawning grid to have all pieces on whole number coordinates, and use "round" operation - which would fail if you had pieces on $.5$ coordinates…

If you use "Scene Time" node by passing the frame/seconds to 3 map ranges:

from (step-1)*100 to (step-1)*100 + 30
from (step-1)*100 + 30 to (step-1)*100 + 60
from (step-1)*100 + 60 to (step-1)*100 + 90
and use the standard 0..1 output to multiply calculated rotations, you get an animation:

which is also a proof the technique produces valid Rubik's Cube layouts.

+1... that reminds me Leon's answer... https://blender.stackexchange.com/questions/77756/animation-nodes-rubiks-cube/77938#77938 ...

It's an old meme, sir, but it checks out


text:
Cloth modifier doesn't collide properly

There are 4 identical cubes with the same specs - cloth and collision modifiers. The problem is that during the collision the green cube is not affected by the blue one at all.
On the left side: green cube is not affected by the falling blue cube, why?
On the right side: they collide as expected.
Is it possible to make the blue cube interact with the green one (compression)? Naturally, the green cube should compress similarly to the blue one.

It looks like you baked the green one first and then you baked the blue cubes. Is that possible?

No, it's not baked. If you try the same you would get the same result. Just to mention, every cube is a separate object.

Did you use the "Bake All Dynamics" to bake the simulation? And they are all identical as you said right? Weird.

Nothing is baked, it's "raw" animation. Yes, identical cubes.

I recreated a similair simulation with the first two cubes. I get the same result. They do seem to intereact with each other, but for some reason the bottom cube doesn't squish as much as you would expect. I wouldn't know why that is.

When I use Soft Body instead of Cloth it works as expected!

I'm not a math guy ... but in real life in fast motion there is not always deformation equal to all ... like in car line crash the last one is ussually destroid  the most ... also maybe bottom cube is in a stretch force in that moment so all force absorbs blue one ... or what ever :)

There is one weird thing, when the cubes are part of the same object it works perfectly fine and this compression problem doesn't exist. Still I need to use separate object for every cube because of animation.
Soft body is not an option for this project.

You can solve this by joining both cubes into a single object, so that they use a single cloth simulation, and then enabling self-collision on the physics:

I believe that each simulation is its own, independent thing, with the order of the simulations managed by the dependency manager.  In your example, the green cube is being evaluated before the blue cube (it could go the other way.)  The green cube collision stops the blue cube-- so the blue cube's collision never enters the green cube's space.  In the case of the two blue cubes on the right, I believe that the later cube is penetrating the collision of the earlier cube, creating some interaction.  By joining the two cubes, we create a single simulation to evaluate both of them, rather than two simulations run in sequence.

Nathan, thanks for your time. I already knew that, unfortunately I can't animate every single cube when they are all joined into a single object. Can't add a location keyframe for every cube if they are one object.

@Boris You can armature deform them before your cloth sim, and add a location keyframe for every bone.

that sounds like an option. I will try that. Thanks again!

Armature didn't worked for me. As soon as I add the Cloth modifier, the bone become detached from the vertex group, the bone follows the keyframes location while vertex mesh fall down by gravity. If I add a Pin Group then the vertex group becomes static and gravity is not working. In other words my knowledge is not good enough to make it.

@Boris We're kind of getting into different territory than the original question here.  If you'd like to ask another question to learn more about that and get my attention, that would be fine.  Probably what you need to think about is that the positions of your meshes at frame 1, at the time that the cloth modifier is first called, is what sets the base position of your meshes.  Just tested with your file, joining and using armature to control their initial positions, even without any pinning, works fine.

Thanks Nathan, yes I agree. I will ask another question. I believe we covered all possibilities for the original question.

When using cloth I had the same issue when recreating your scene. But when using Soft Body it seemed to work. See image below

Thanks for your time. I can't use soft body, I have a lot of objects and it become very very slow with soft body, Cloth modifier is optimized much better.


text:
How to merge two vertices into one?
In the screenshot you can see I have two vertices selected. How can I make them one, and consequently (hopefully) close the gaps in my model?

EDIT: After I did m a as suggested by Martynas and dissolved vertices.. i got what I wanted :D

Hit m -> a while in edit mode to call Merge menu and choose At Center option from it.

You can also reach it from the Mesh menu:

That might not be the fastest or most convenient way, however that menu has all these other options that you might be interested to see.
Also you could just hit F3 and start typing whatever you wavt to do and if you guess the name of the operation, it's going to show up there:

You are right! It did work. Thanks a lot. I managed to fill the gaps after dissolving vertices :) Updated question with screenshots

Thanks a lot for adding screenshots and all! I will accept in when possible (3 minutes)

I was going to just write m->a,  but BSE does not let short answers like that, apparently, there is a minimum character limit. :D

The Merge menu merges two verts into one so dissolving isn't necessary.


text:
How do I fix my selections being invisible in Edit mode?
I'm following the Donut tutorial and, I don't know what I have pressed, but out of a sudden, all my selections on Edit Mode are invisible (Vertex, Edge and Face). Selection works and I can modify stuff, but I can't see what I have selected.
In the screenshot you can see me extruding a face, but you can't see that the face is selected. In Object Mode, selection is fine.
Any idea of how to fix that

EDIT:
Full screen screenshot:

Screenshot of my overlays:

Hello, can you kindly attach a screenshot of your whole blender tab? So we can know what settings you might have changed by accident.

@YousufChaudhry I appreciate your reply. I added a screenshot of the whole screen because I didn't know exactly what you meant :)

Check the last edit to my answer.

It looks like you have switched overlays off. Enable them to make them visible again:
It looks like you have faces disabled:
Edit: Also check If you disabled something in that dropdown with the arrow and eye:

Thanks! We are close! I was able to show the coordinates of the face selected, but not the default view (dots around the face). Would you kindly see my last screenshot and guide me on how to enable the default outline for the selected face?

@AndréPena check my edits.

I'm sorry but enabling it didn't change it... =(. Check my last edit

@AndréPena check my last edit.

I actually got to the solution and posted an answer. I +1d your answer to thank you for the time you spent. That is really appreciated. Thank you

If the Solidify modifier is being applied and the "realtime" option is selected, the face gets invisible in Edit Mode.
I think the reason is because that faces doesn't REALLY exist. It's a virtual face created by the modifier.

Ah... Well, I guess I couldn't find that out since I didn't know that you had modifiers applied. Anyways, at least you're back in business (!

@YousufChaudhry I'm sorry. I'm so noob that I don't know what matters. But I really do appreciate your time. All the best!

No problem, experience comes with time! Have fun ;)


text:
CAMERA MAPPING : image shows up on front and back of object
I need help figuring out a specific behaviour of the Camera Mapping process in Blender 2.93.1 .
When projecting an image on a closed volume, such as a sphere, the image appears on both sides of the sphere.
I need to have the image projected onto the first surface the camera encounters while projecting, and then not appearing anywhere else.

I could bake the UV cam map modifiers and tweak the face islands ; I could also duplicate the sphere, set an alpha channel, delete the faces where the second projection appears, and have them on top of the over to work around the issue.
But if there's a way to have it projected on the front of the sphere and stop right there without further work, it would be great and help me a lot.
Blend scene :

can u provide blend file?

What method did you use for projecting the texture? If you used Unwrap>Project from View, then you need to select only the faces you want the texture on before unwrapping.

Thanks a lot for your idea ! I'm trying to make this work with the UV project modifier for the need of my current project. The reasons are that I can sculpt the mesh, and even remesh it with voxels while having the image projected on it. I can also move the projecting camera around and the texture follows dynamically. I will give it a shot with the unwrap>project from view, and see how it goes.

One thing is (as you can see) UV Projection modifier generates smaller image in front side to closer camera and bigger image on opposite side due conical shape of projection from point - so distance of camera matters.
In this case I would suggest to use Texture Coordinates > Object and use another object like Empty to control position. To position it smoothly around surface - enable Snapping > Face with Align Rotation to Target.

To prevent appearance on opposite side - use Empty's Z coordinate and clamp it with like Less Than node and use it as a mask for back part of a mesh.

Note: If you are still interested in projection technique see Rich Sedman's answer he used OSL script in shader to free back faces from projection. Blend file included (seems to me quite complicated, probably could be handled better in these days, but it is over my knowledge so I can't help with that).

@Rich Sedman created the entire  projection without using the UV Project Modifier at all.  Phew! ... If OSL is an option, there's a little script here which can be used in combination with UV Project  ,  testing for 'In Front of camera', and 'Occlusion'


text:
Hairnet addon issues
I've been trying to use the hairnet addon in 3.0, the opinions "sheet" and "curve" work just fine, but using fibermesh, gives me this error no matter what
Then I tried using hairnet in 2.9, thinking it was because of 3.0, I used hairnet 6.2. Then I get this new error from fibermesh
The mesh
and the seams
I've tried multiple objects that would have the hair grow on them, nothing changed.
Are there other addons/resources that turns meshes into hair particles? Or is there a way to fix these errors?

How does your fiber mesh look like? I've just tried HairNet 0.6.6 with Blender 3.0 and it worked.

@Blunder let me give the image of the mesh, but fibermesh is doing this with any object, not just the one I'm trying to use it on

Your mesh is not a fiber. Fiber is a mesh that has only (vertical) edges that represent the hair strands. Each edge must have the same number of vertices.
Fiber example:

You could use the Tris to Quads operation, and remove all faces and edges except the "vertical" edges. An Array modifier could add some depth.

Thank you for telling me, but I want to know, are there any methods or addons capable of displaying meshes like mine as hair? If not I'll use what you told me

The only other add-on I know is Particle Hair Guides by Lichtso (https://blender.stackexchange.com/a/212638/107598). It's inspired by HairNet but it looks like it can handle grid meshes (edges with vertical edges). The mesh must be a quad mesh, too. Both add-ons work very well to convert hair cards and particle hair that got converted to mesh back to particle hair. For a "hair block" they don't work.

Does it work well in 3.0?

Checked, it doesn't


text:
How do I fix over-exaggerated curves when using the SubSurf modifier?
I've stumbled across this problem when using the Subdivision Subsurface modifier along with the Bevel modifier. I don't want the top open surface of my mesh to curve too much like in the picture below. How do I fix it?

Since you accepted the given answer: when using Simple instead of Catmull-Clark, you get more geometry but the smoothing effect - which is often the desired effect of the Subdivision Surface modifier - is gone. Do you need lots of geometry for e.g. displacement or do you want to smoothen the mesh? Smoothening doesn't work with Simple so you can delete the modifier. And if you don't need it for displacement, it only makes the object unnecessarily complex and resource-heavy (especially on higher levels like 4) so you can delete it as well.

Set the Subdivision Subsurface to Simple

As I wrote in the other comment, I still wonder how this solution worked for the OP. Either the Sudivision Surface modifier wasn't really needed then the most simple solution would be: remove it. Or it's not needed for smoothing, but to get a (much) higher mesh resolution - but the object in the screenshot doesn't look like that. Actually there are ways to (really) fix this and keep the smoothening effect by loop cuts or other corrections to the original mesh, but this depends on the mesh itself and what it should look like in the end. But, it's an accepted answer... why do I care anyway.

Well, you are right. This wouldn't work in all use-cases. In this case, he/she just got lucky that it got fixed with this. Honestly, even i dont know any better way that to go into edit mode and start arranging the vertices to make it smoother

As I said - if you need the smoothening of the Subdivision Surface (which it is the most common use) it's not just not working in all cases, but it's not working at all. I suspect that because of the Bevel modifier before the Subdivision Surface, the smoothening effect was so minimal (as is visible in the screenshot) that the OP actually didn't realize that the modifier got absolutely useless for this case with the "Simple" option.


text:
Object Normals to follow Rig
I've been searching far and wide for this solution lol. Does anyone know how to make object normal maps connect and follow a rig 'proportionately'? My example here shows it's possible but it affects the whole map
video (clearer) version of texture prop driven to jaw rig: LINK
Would like to know of a way to pinpoint what influences where. I got things rolling thanks to this video (27:52): LINK) but still stuck in the same scenario on how to proceed. It's hard for me to picture in my head on what to do.
I looked at this and thought it was cool but have no clue if I'm warm or cold in the idea to link painted portions (weight or vertex color, or one into either) to prop driver LINK. But then I'm stuck: How would I set anything of the sorts up? With nodes? With certain sections in Blender I'm unaware of? Scripts? Is this the actual way to do it?
My apologies for sounding too newbie. But if there's a solution, it can reduce a lot of headaches for the BNPR (Blender NPR) community lol. Object normals don't break as bad as tangent normals which do work regardless with a rig or not.

Basically, you'd need an Object for every major deform bone in the mesh, and to mix between them with their vertex weights. This is technically possible in GN, but hard to setup and who knows about performance. And not too hard to setup in python, but performance would be crap. This sort of thing should become convenient if we get Bone access and For loops in Geometry Nodes.


text:
Map to influence light speed
Question:
Does anyone know if there's a way to have a texture map use multiple colors or a color's values to control the speed of reading the light of a toon shader? For example: When the light reaches the cheek under the eye, and interacts with a certain texture color/value, the light slows down at a certain speed.
I've tried using animation nodes, map range > stepped interpolation, Nodify's shader animation node, and nothing. (No screenshots available since I didn't stick to the many approaches that just didn't work. Like at all). I just can't put my finger on what I am missing, maybe scripts or a particular animation node to texture? I might be totally wrong, but somehow I think it's possible. I just can't put my finger on what it could be.
My approaches that comes close to goal:

Using addons involving editing vertex normals. However, there's issues experiencing distortions when you bend the anatomy or make facial expressions, and splits. Especially if the normals are averaged in one direction.

This node setup for ILM maps is the second closest thing I can think about that can relate to the topic that can be visualized (which I hope to combine it with this question's idea) (VIDEO about ILM Maps). However, unlike ILMs, this questions revolves around the speed of the light. It's the second level to what seen in the video, but in the video when you apply ILM maps it's based on the degree of what is lit and unlit rather than simply paint the numerical timing of when something is lit.

Example appearances

This is my original approach for years. Average normals+smooth edges of the body/face. However, when a character uses a shapekey/deformation, it'll fracture the normal's goals. But notice how the average normals pop on their own time then smoothed until another averaged normals create another poping moment? This is ideal. Sadly averaged+smooth vertex normals don't do well with deformations.

This second example is about how to perceive the question. If you take the ILM perspective (noted above) you'll think about masking (grey parts from image above). But if you visualize the red lines, you'll think about time (and can even include the ILM map sections). But if you paint the ILM map where the red lines are, you get portions lit where they shouldn't be because it's focus isn't as dynamic as the question is seeking for.

Third example is the visual concept to simplify everything. These color masks could represent a different speed responding to the light. Orange and red represent speed 0.1 and 0.15, base blue represents 0.2, ocean blue under the brow represents 0.001 speed, etc, etc. If anything, one can paint thick lines between each color to make a smooth gradation as seen in the gif example above. Then all a person has to do is paint, look at references, adjust, and find their sweet spot for their ideal anime shading design!

I think you're asking about changing the threshold of cell shading.  In which case, yes, you can modulate that with a texture.  The precise things you'd do would depend on how you're cell shading.
Let's consider the following cell shader, which uses shader-to-rgb to mix between colors on the basis of a diffuse response:

Where could we plug a texture in here?  One place we could plug it would be into the diffuse shader that's measuring the light:

By painting part of that texture gray, I've told the shader that I want it to be less responsive to the light-- to adopt a position closer to my color ramp's left margin.
That's not the only place we could plug the texture.  Let's try something else:

Here, rather than using the texture to modulate the first pass diffuse, I'm multiplying it into the output, using a MixRGB node set to multiply.  (For a grayscale map like this, though, this is exactly the same thing.)  And so that I could paint both white and black, to modulate the lighting, I'm using a gray image, then multiplying its value by 2-- so now, my white areas will be biased toward light blue, and my black areas will biased to dark blue, and my gray areas won't do anything different.
Blender does not actually model the speed of light (except via IOR, which is pretty much unheard of in cell shading), but again, I think you're asking about the threshold.  If I misunderstood your goal, I apologize.

I appreciate the reply. Sadly that's a simpler version of the ILM map linked above... Do you know of any node that involves intensity or a Strength value (like seen in normal map node)? Maybe raycast that responds to each different color in the texture map? I'm learning that raycast is a reliable source when lights are involved.

@Marquis You gotta be more specific in what you want.  Nearly every node involves intensity or strength (or color, which can be decomposed into value.)

My apologies. When I say strength/intensity I mean in the context of this topic, responding to light, hence why I mention the normal map node and it's strength value. But maybe it's nothing more than a transparency effect to fade in and out the normal map. I'm pretty new at the detail of some values, sorry. No real source to learn from in my area outside of asking in this forum...

I understand; most people asking questions are new.  What I'd recommend is being more concrete versus abstract.  I'd recommend a picture (or animation, if necessary) of what you want, versus what you have.  (Pictures you've provided so far are doable witht the technique I demonstrated above.)  Providing a file of what you have is usually a good idea as well, because there are going to be variables that you don't yet realize are important.  Basically all shader nodes interact with light.  That's why we call them "shaders"-- they control how the light gets modulated across the surface.


text:
Duplicate Locked using Geometry Node
Question: I have two models. One duplicate, non-rigged. The other Rigged. Same geometry. In Geometry nodes, how do I make the duplicate mesh wrap over and "lock" onto, literally, vertex to vertex, it's original mesh? When it poses, the other follows. I wouldn't know where to start (nothing works when I use geometry nodes).
Why (maybe there's an alternative?): Testing to see if I can use object space normal map's limitations to not respond to light on a rigged model due to having deformations. Curious to know what it would look like on my toon shader with custom-painted normal maps.
Tangent normals don't "snap" like object normals when I average the normals. I had a similar method in Maya back in the day. Was wondering if it's possible to do that here too. Each deformation made on the rigged model is simply moving the vertex in the duplicate model, thus bypassing the rule and allowing object space normals respond to light like it does when you move the model around without a rig. But once you have it rigged, the normals lock.

what do you mean by wrap over? just duplicate? here you are: [1]: https://i.sstatic.net/v5mqZ.png, but i think you want something else so maybe improve your question to make it clear?

I edited in that I provide the two geometries.... I did state that one is rigged and the other isn't though. I appreciate the help, my friend.

I'm not sure how snapping another duplicate model with the exact same geo, is any different than using the rigged mode itself. but here is how to do it.

you want to create a Geometry node modifier on the duplicate (non-rigged).

you then bring the rigged object into the node tree via an object info node. you also want to set it to relative.

to get the position from the rigged model to the duplicate you want so use a sample index node (blender 3.4 +). set the type to vector and domain to point
use the position node as the value. use the index node as the index.

now you have the position and need to set the position of the duplicate with the set position node.
just plug the output from the sample index node as the position input on the set position node.

I might've gotten the node wrong (doesn't seem to work at the moment)? Here's my screenshot. https://i.imgur.com/In12HWQ.png Hopefully when the model poses, the mesh with matching vertex follows, that way although it's deforming, it's at least able to respond to the light. Any time a rigged mesh has object space normal maps in the shader, the light doesn't respond unless you move the light only (The light is as stiff as a brick when the rigged/deformed model is moving).

you did one mistake. you should use the position node not a value node. (what you are currently doing is setting the position of every to 0. you want to set it to the position of the other mesh)

I have a feeling it really a shader problem.

Didn't seem to follow the nearest vertex, sadly. Here's a video: https://i.imgur.com/BzOoAtp.mp4 Mind if I see a screenshot on how you got it to connect and lock, pretty please? I don't mind if it follows nearest shape if vertex is the limitation.

@Marquis lol. you need to connect the incoming geometry into the set position, and the set position has to go into the original geometry output. (on GN modifiers you can only have one output geometry. it's only with node groups that you can have multiple geometry outputs)

@Marquis . please learn something about GN before coming here. watch some tutorials or something, so you avoid silly mistakes like that. with the most basic rudimentary understanding of GN  you would of avoided this mistake.
I'm not trying to be mean, but you have to make some effort to understand to tool your using.

Hi, @shumel .. I know you don't mean  to be mean.. but IMO we've got to bend over backwards, on BSE, (where our limited channels can easily be misinterpreted,) to avoid that impression at all costs. Perhaps this tension has arisen because it's actually very difficult to communicate some technical concepts, even simple ones, in words alone. A minimal example, (say 2 IK bones deforming a cylinder?), shared in your answer, might help clear everything up? Worth a try.


text:
Single Texture Multiple Mask Inefficiencies

(enlarge the image to see it in full detail)
Can't seem to find the answer to this online, but is there a way to get the exact color I need from a texture that has multiple color IDs, which also includes HSV? Especially the Value/Lightness part?
The best setup I can find so far can isolate a solid color, but not the exact HSV of a color. The image above describes the issue in detail node for node.
Notice each finger, tricep, shoulder, bicep, and forearm in the original image have different values of green. The lightest is the shoulder, the darkest is the ring finger. How would I pinpoint, say, the dark ring finger separate from the shoulder? It appears that this node setup only allows me to select from the most lit downwards. I don't want to use a slider. I need the exact given color.
When I first tapped into this, I thought it was as easy as using the color picker RGB and putting it into the factor between a mixture node of black and white and using it as color 1 to again do the same for color two and layer the masks until I reach the final one and put them all into a factor for additional purposes.
There are also these aliases/splits showing up.
Sadly, I've been stuck at this stage for a week. If possible can someone show screenshots of the solution, please?
Please help lol. I'm in sort of a deadline. :x

I've fixed your image link. But you should upload images directly here with the button in the toolbar. Please edit your question and fix it.

It looks as if you want to check whether 2 colors are the same. So you have a node group that takes 2 colors as input and it outputs 1.0 for a match and 0.0 for no match. But you also use color 2 as the Epsilon value (=tolerance) for the Compare nodes that compare the H, S, and V components of the colors. That makes no sense to me. The color is converted to a grayscale value (RGBtoBW), e.g. (0, 1, 0) -> 0.7152. This value is then used as tolerance to check if green 1 is similar to green 2...? Try a small constant value for Epsilon

I followed this tutorial to create the color mask: https://www.youtube.com/watch?v=mqaa8eUqJts&t=0s The thing is it's not able to pinpoint a color relative to my texture to use it to create multiple masks, even when I slide the HSV, or even when I use the RGB node to noodle in the exact HSV,  it still isn't accurate. Outside of that, I'm unfamiliar to what you're saying, sorry. If possible, can you show screenshots please?

Thanks for the update. You need to find small values for the 3 tolerance values (the "H/S/V Tolerance" slots). They pinpoint the given color with some tolerance. Try values that expand the mask but reduce the number of artifacts. You cannot use the color values as tolerance. I've started with the V, then adjusted S and H. -- If your ID mask is a channel-packed image, then only the green values might be relevant. If so, you can do Separate Color by RGB and check if the G value is within a certain range (=tolerance). This might be easier but depends on what your ID image really looks like.

First glance: Why are you feeding the color into the H S and V tolerance floats?

The node group shown in the tutorial video is fine for color masking or color matching. You just need to guess the values for the tolerance. There are 3 of them "H Tolerance" for the hue, "S Tolerance" for the saturation, and "V" for the value (which corresponds to the brightness of the colors).
For example, the "H tolerance" defines how similar the hue values of colors 1 and 2 must be in order to be recognized as "equal". The same applies to the saturation value and the "value" value.
Using the Color Masking Node Group
Here is a test with your image. I've picked the green shade of the hand, got 4BD322 (Hex), and then adjusted the 3 tolerance values (0.002, 0.045, 0.007) to expand the mask and reduce the number of artifacts at the same time.

As the binary RGB values (0 to 255) of an image are converted into floating point numbers (0.0 to 1.0) and then again into HSV values (where V can be greater than 1.0), a certain tolerance is required. There are floating point precision errors and small accuracy errors may occur at each step. In addition, a solid color may be dithered or have a certain amount of noise.
In general, you want to keep the tolerance as small as possible to get as close as possible to the corresponding color. I think the only way to get consistent values is to try them out. Start with a small value and increase it gradually. Or try doubling/halving to get a decent mask.
Alternative Way to Compare Colors And Creating a Color Mask
According to an answer to the question "How to compare colour values in Blender using Python?" you can treat the colors as vectors, subtract the vectors, and check whether the length of the resulting vector is less than a tolerance value. If so, then the colors "match".
Here is the equivalent with nodes:

I did my best to find a good tolerance value, but in this example, the mask has more artifacts than with the HSV method.


text:
Overlapping ramp textures for toon texture control
I'm looking for screenshots of node setup that's similar to this tutorial [8:20 into the video]: https://youtu.be/E3zHGD8V2IY?list=PLwv43wkNGxP230lPFcW5t9Yu9AtShPU_Z&t=501
What's an ILM Map:
Basically you're using the RGBA as separate maps to read either as light limiters [Colors] or inline drawings [Alpha]. In my case, I'm looking to use ILM Map in this way: Red limits ramp image #1's visibility while lit only; green limits ramp image #2's visibility both lit and unlit [when I paint it near black it permanently unlit though]; blue limits ramp image #3's location while unlit only [like color three is right after 2 in a color ramp]/But in the video blue is treated differently, and thus have nodes I'm not looking for using it. Would help to control #3 like a color ramp slider to know how soon after #2 but wouldn't know if it's really possible.
What do I mean by ramp image?
Basically the textures are treated like color ramps, using the same but different colored UVs to represent 3 levels of shadows like seen in Anime with characters having 3 shadows. The thing is that I need to paint the ILM map to limit what I want per color, especially for the third occlusion shadow.
NodeCeption:
I can't seem to figure out the right mix node and math and whatnot for them, especially the third image, which needs to appear only when unlit, aka, the third color in the color ramp. I'm at the brink of discovery, but just need a little fix to get to the next level in this anime shading experience.
Hope to hear from someone who has an idea soon!
Thank you
PS: I saw this tutorial here but it's heavily dated on how to make texture ramp, but maybe an updated version of it linking each to their respective ILM maps could be possible? Would help a lot to see them in screenshots. Still new to Blender. Is a Toon Ramp material with image textures possible?

This might not be the solution you are looking for, but since you have only 3  levels, I would suggest going about it something like this. You will probably have to adjust the greater than/less than values, and possibly the "shade of grey" in the center of the ColorRamp to match your scene lighting.

This is just to get the textures representing shadows - if you want the accompanying darkness levels, just multiply the final result by the ColorRamp values:

At this point you no longer need the color ramp, because you're putting the threshold on Math nodes.

In similar vein to Christopher's solution, you can organize your setup like this:

With very simple custom group:

On second thoughts driving the fields by the swatch colors isn't really useful, because Once you setup the colors, they won't change, unlike their positions.
If you replace the Compare node with Greater Than, then you don't even need the color ramp, and can either regulate the the values on the custom nodes for each step, or use a disconnected color ramp just to drive them (this time not by color but by swatches positions) - add a driver, just right-click the swatch Pos field, Copy as New Driver, then right-click the Driven field, Paste Driver.

OMG this is genius! Can't believe how intricate the idea can really turn out to be! Thank you Markus!


text:
Transfer Attribute doesn't work for nearest instance? [Confirmed 3.3 bug, asking for workarounds]
I minimized the problem to this form:

I'd expect the only instance to be found, and the attribute to be transferred… Switching the mode to Index passes the integer. No error icon is displayed on the node…
If I'm not doing anything wrong here and it's just the current limitation, what workarounds do you propose?

This is a known bug (missing feature) in Blender versions lower than 3.4, which is now considered solved.
The current solution for 3.4 looks like this:

Update
Either I am completely wrong now, or it should actually also work without problems with version 3.3.
At least the following example correctly transfers the index of the instances to the other geometry:

...please don't hit me right away, if I still haven't completely understood the question ;-)

Since 3.3 is LTS, I'd think they should fix it there too…

@MarkusvonBroady Hm, you're right, but I'm afraid that might be difficult, since with 3.4 some changes have been added that are not backward compatible as far as I know.

Now I'm foxed.(Please shoot this down.)  Sample Nearest 's target is an unrealized instance, which has no points. So it always returns 0. (You get lucky sampling index at index 0, because that's the only one.) If I try this with a grid of instances, it's essentially non-functional?

@RobinBetts ...you may be right: something is wrong here. Thinking error? I'll have to take a closer look.

@RobinBetts There was one node missing, I think ;-)

@RobinBetts Please try this file: https://blend-exchange.com/b/G3zGLjYA/

@q  Ahh! That's better. Thanks for having a look! It's a shame IMO that an instance is not considered to be a point, (with  a  transform matrix). Then you wouldn't have to convert it explicitly. I don't think that would break the grammar..

I didn't want to be pedantic and say that while the question reproduces the problem in the simplest form, perhaps an answer should work on more than one point, like in my answer. And I didn't test the solution, because well, it's quellenform, the only guy with gold geonodes badge :D. That and I don't use alpha versions for sanity.

@MarkusvonBroady I'm right there with you, I also build now and then quite a bit of crap or I make mistakes. But please do not hold back, I appreciate your criticism and comments very much! ;-)

My current workaround is to scale the instances to 0, capture their positions, space them to make sure they don't overlap, realize them and merge by distance, restore positions and then sample the resulting vertices...

Edit: Just realized, the Distance in Merge by Distance should definitely be larger than $0.001/1000$ due to how the positions lose precision fast as you go away from 0. Since I set the offsets to $1$ on each axis, the distances turn out to be:
$$\sqrt{\sqrt{1^2 + 1^2}^2 + 1^2} = \sqrt{2 + 1} ≈ 1.73$$
So I changed the distance to $1$ m, which should be safe for a small number ($<16777218$) of instances, otherwise probably should use modulo to position on X, Y, Z separately to fully take advantage of float precision…