$begingroup$
I move around in shader editor panel and become too far away from the nodes. I tried to go back to the nodes but can not find them. Any method or hot key to locate nodes in the shader editor “Black Sea”?
asked Mar 18, 2020 at 3:26
$endgroup$
$begingroup$
Press the Home key to show all nodes.
answered Mar 18, 2020 at 4:21
$endgroup$
1
$begingroup$
Method 1: Press F3 then type in: «Find Nodes»
Method 2: In Shading editor panel Select > Find Nodes
quellenform♦
28.9k5 gold badges32 silver badges112 bronze badges
answered Jul 21, 2022 at 3:11
$endgroup$
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
$begingroup$
Everytime I hold scroll on my mouse to move, it like somehow teleports down and I have to scroll up again. THis time, it was WAY WORSE, as it went too far down and now I can’t find my nodes
asked Feb 7, 2021 at 6:19
$endgroup$
2
$begingroup$
You can use the Home button or press A to select all of your nodes and then use Numpad . to frame selected.
answered Feb 7, 2021 at 6:26
Allen SimpsonAllen Simpson
12.9k2 gold badges13 silver badges54 bronze badges
$endgroup$
2
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
Народ, а как найти ноды в шейдер эдиторе?? потеряла в
бесконечном поле))
russian
software
blender
17:46 12.01.2022
2
ответов
Похожие вопросы
Получить все доступные шейдерные ноды в виде списка можно по их типу.
Для начала, добавим в сцену любой объект, например – куб, создадим для него материал и удалим из него все ноды. Сюда, в этот материал, мы выведем все имеющиеся в Blender ноды шейдеров.
Получить все доступные типы шейдерных нодов можно с помощью структуры “bpy.types”. В ней хранится список всех доступных в API Blender типов объектов, в том числе и нодов.
Выполнив команду
dir(bpy.types) # ‘ANIM_OT_clear_useless_actions’, ‘ANIM_OT_keying_set_export’, ‘ANIM_OT_update_animated_transform_constraints’, ‘Action’, … |
мы получим список имен всех доступных в API типов объектов.
Все типы нодов шейдеров наследуются от типа “ShaderNode”. Следовательно, для того, чтобы получить из общего списка только типы нодов, нужно проверить не наследуется ли конкретный тип от “ShaderNode”.
Проверку наследования одного типа от другого можно выполнить при помощи команды
issubclass(_CHECK_TYPE_, _PARENT_TYPE_) |
она вернет True, если тип _CHECK_TYPE_ наследуется от типа _PARENT_TYPE_.
Функция “issubclass” сравнивает типы а не их текстовые представления, которые мы получили с помощью функции “dir”. Чтобы получить сам тип по его текстовому имени воспользуемся тем, что в Python любой тип является одновременно и атрибутом модуля, в котором он описан. Следовательно, получить тип, описанный в “bpy.types” можно с помощью команды:
getattr(bpy.types, _TEXT_TYPE_) |
Имея список типов нодов, можно добавить в текущий материал сами ноды по их типу.
Указатель на текущее нодовое дерево, сюда мы будем добавлять ноды, можно получить следующим образом:
import bpy node_tree = bpy.context.object.active_material.node_tree |
Зададим начальные значения для расположения нодов.
location_x = 0 location_y = 0 |
Пройдем по всем возможным типам объектов API:
for type in dir(bpy.types): real_type = getattr(bpy.types, type) |
и если тип наследуется от “ShaderNode”
if issubclass(real_type, bpy.types.ShaderNode): |
добавим нод этого типа в нодовое дерево, задав для него ширину и смещение.
node = node_tree.nodes.new(type) node.width = 250 node.location = (location_x, location_y) location_x += 300 if location_x > 3000: location_x = 0 location_y -= 600 |
Финальный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import bpy node_tree = bpy.context.object.active_material.node_tree location_x = 0 location_y = 0 for type in dir(bpy.types): real_type = getattr(bpy.types, type) if issubclass(real_type, bpy.types.ShaderNode): try: node = node_tree.nodes.new(type) node.width = 250 node.location = (location_x, location_y) location_x += 300 if location_x > 3000: location_x = 0 location_y -= 600 except: pass |
Часть кода, добавляющего нод в нодовое дерево, заключим в блок try – except, чтобы предотвратить ошибки при попытках создать абстрактный нод, не имеющий представления, например тот же “ShaderNode”.
После выполнения данного кода в материал будут последовательно добавлены все доступные ноды.
Loading