Получаем положение объекта в Blender при помощи Geometry Nodes

Получить положение объекта, его точки Origin, в Blender Geometry Nodes можно при помощи всего лишь двух нод: Object Info и Self Object.

Добавим в сцену Сюзанну (shift + a – Mesh – Monkey) и сдвинем ее чуть в сторону от начальной точки.

Добавим модификатор Geometry Nodes и инициируем новое дерево нод нажатием на кнопку New.

Чтобы работать не с положением каждой точки объекта, а с начальной точкой – ориджином, самого объекта, используется нод Object Info.

Добавим этот нод в дерево нодов (shift + a – Input – Scene – Object Info).

Положение ориджина объекта мы будем получать с выхода “Location” этого нода.

Нод Object Info универсальный и может выдавать информацию по любому объекту сцены. А нам нужно получать данные именно по текущему объекту. С этим нам поможет нод Self Object.

Добавим нод Self Object в нодовое дерево (shift + a – Input – Scene – Self Object). Соединим его выход “Self Object” со входом “Object” нода Object Info.

Теперь нод Object Info выдает нам информацию, в нашем случае – положение с выхода Location, именно по самому объекту с геонодами.

Давайте для наглядности будем показывать его текстом рядом с объектом в сцене.

Для вывода текста в сцену используется нод String to Curves. Добавим его в нодовое дерево (shift + a – Utilities – Text – String to Curves). Выход “Curve Instances” подадим на выходной нод геометрии.

И теперь нам нужно конвертировать вектор с координатами объекта, который мы получаем с выхода “Location” в строку, чтобы подать его на вход “String” нода String to Curves.

Для преобразования числовых значений в текст используется нод Value to String. Добавим его в нодовое дерево (shift + a – Utilities – Text – Value to String). Подадим на него координаты объекта, а выходную строку – на вход “String”. Установим значение в поле “Decimals” равное 2. Это значит что мы будем округлять числовое значение до второго знака после запятой.

Нод Value to String рассчитан преобразовывать в строку переменные типа Float т.е. на простые числа с плавающей точкой. Поэтому в сцене отображается только первая координата X положения объекта – нод берет для преобразования только первое число из трех.

Чтобы отобразить координаты по всем трем осям, сначала разобьем координату на составляющие при помощи нода Separate XYZ а потом склеим получившиеся отдельные строки по каждой отдельной координате в одну строку.

Добавим нод Separate XYZ (shift + a – Utilities – Vector – Separate XYZ) после нода Object Info.

Сделаем 2 дополнительные копии нода Value to String (shift + d) и соединим с каждой отдельной полученной координатой.

Для склейки отдельных строк в одну используется нод Join Strings. Добавим его (shift + a – Utilities – Text – Join Strings) перед нодом String to Curves. В поле “Delimiter” введем запятую и пробел.

Теперь мы видим отображение в сцене всех трех координат ориджина.

Добавим нод Rotate Instances (shift + a – Instances – Rotate Instances) после нода String to Curves, чтобы развернуть текст вертикально. В поле “Rotation – X” введем значение 90 градусов.

Теперь текст расположен вертикально. Объединим его с самим объектом.

Добавим нод Join Geometry в конец нодового дерева и подсоединим к нему выходы Geometry объекта и полученного нами текста.

Чтобы управлять положением текста относительно самого объекта, чтобы они не перекрывались, добавим после нода Rotate Instances нод Set Position (shift + a – Geometry – Write – Set Position). Заполняя поля X, Y и Z, сдвинем текст так, чтобы он отображался рядом с объектом.

На этом все, теперь при перемещении объекта мы всегда будем видеть координаты его положения в сцене.

5 1 голос
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии