Коротко
- Raycast вычисляет пересечения лучей, отправленных от исходной геометрии к целевой.
- Выходы Raycast содержат сведения о попадании, положение, вектор нормали, расстояние и необязательный атрибут.
- Sample Index получает значения исходной геометрии по выбранным индексам.
- В Sample Index можно задать тип данных, домен и способ обработки недопустимых индексов.
Чему вы научитесь в этом руководстве?
Узлы Raycast и Sample Index в Blender Geometry Nodes позволяют считывать данные между геометриями, но выполняют разные задачи. Raycast определяет, где лучи, испущенные одной геометрией, пересекаются с целевой геометрией. Sample Index возвращает значения, соответствующие определённым индексам исходной геометрии. В этом руководстве шаг за шагом рассмотрим назначение обоих узлов, важные входные параметры и способы работы с выходными данными.
Raycast полезен в системах, где нужны такие сведения о пересечении, как положение на поверхности, нормаль или расстояние. Sample Index позволяет сопоставить индексы и использовать значения одной геометрии в другом контексте вычислений. Выбор подходящего узла зависит от того, нужны ли вам данные о пересечении с поверхностью или сопоставление по индексам.
Требования
Для этой работы понадобится установленный Blender с поддержкой Geometry Nodes и геометрия, на которой можно создавать и проверять схемы узлов. В источниках не указаны конкретный номер версии Blender, тип аккаунта или требования к оплате. Поэтому назвать точную версию нельзя — проверьте, доступны ли узлы Raycast и Sample Index в вашей установке.
Для Raycast геометрия, в контексте которой вычисляется узел, и геометрия, на которой проверяются лучи, выполняют разные роли. Подключите геометрию, по которой должны проходить лучи, ко входу Target Geometry узла Raycast. Для Sample Index нужны вход Geometry, из которой будут получены значения, поле Value для выборки и вход Index. Если индексы могут выходить за пределы размера исходного поля, заранее учитывайте назначение параметра Clamp.
Пошагово: анализ пересечений с поверхностью с помощью Raycast
Определите исходную и целевую геометрию. Геометрия в контексте узлов, к которому подключён Raycast, используется как источник лучей. Геометрию, по которой будут проверяться лучи, подключите ко входу Target Geometry узла Raycast. Если не путать эти роли, проще понять, какая геометрия генерирует лучи.
Задайте начальное положение лучей. Source Position определяет начальную точку каждого луча. По умолчанию этот вход работает так, как если бы к нему был подключён узел Position. Если начальное положение нужно определить другим полем, используйте его на этом входе.
Настройте направление и максимальную длину. Ray Direction задаёт направление движения каждого луча от начальной точки. Это поле вычисляется на геометрии в контексте вычисления поля узлом, а не на целевой геометрии. Ray Length задаёт максимальное расстояние, которое луч может пройти, чтобы попадание считалось состоявшимся. Если целевая поверхность находится за этим пределом, попадания не будет. Поэтому направление и длина должны соответствовать искомому пересечению с поверхностью.
Проверьте попадание и основные выходные данные. Is Hit — это выход Boolean, показывающий, достиг ли каждый луч целевой геометрии. Hit Position возвращает положение пересечения, а Hit Normal — нормаль поверхности в этой точке. Hit Distance показывает расстояние между начальной точкой и точкой пересечения. Если луч не попадает в цель, на выходе Hit Distance возвращается значение Ray Length.
При необходимости получите атрибут целевой поверхности. Ко входу Attribute узла Raycast можно подключить необязательное поле, которое будет вычисляться на целевой геометрии. Узел считывает значение этого поля в точках пересечения и передаёт его на выход Attribute. Параметр Interpolation определяет способ сопоставления значений на целевой сетке: Interpolated плавно интерполирует атрибуты вершин и точек вершин, а Nearest выбирает значение ближайшей вершины. Выбор зависит от того, нужно ли представить данные в точке пересечения плавным переходом или значением ближайшего образца.
Используйте выходы в следующих узлах. Разделяйте лучи, попавшие и не попавшие в цель, с помощью Is Hit; передавайте Hit Position, Hit Normal, Hit Distance или Attribute в последующие операции. У узла Raycast также есть параметр Data Type, который определяет тип вычисляемых данных. Если заранее определить, какие выходы вам нужны, схему будет проще поддерживать и не придётся хранить в ней лишние данные.
Пошагово: выборка значений с помощью Sample Index
Подключите исходную геометрию и значение для выборки. Подайте на вход Geometry геометрию, из которой нужно получить данные, а на вход Value — поле, которое будет вычисляться на этой геометрии. Sample Index получает значения поля Value для заданных индексов и выводит результат через Value.
Задайте индексы. Вход Index определяет, какие значения исходной геометрии будут считаны. Подключение поля индексов позволяет получать значения по разным индексам и таким образом менять их порядок. Учитывайте, что именно обозначают индексы с учётом геометрии и контекста вычисления поля в вашей схеме.
Проверьте настройки Data Type и Domain. Data Type задаёт тип получаемых данных, а Domain — область, в которой передаются и вычисляются данные атрибута. Например, можно получить данные по граням исходной геометрии и вычислить их для точек другой геометрии. Согласуйте эти параметры с нужным значением и исходным полем.
Выберите поведение Clamp. Если Clamp включён, индексы ограничиваются размером области атрибута. Если он выключен, для недопустимых индексов возвращается значение по умолчанию. Поэтому проверяйте, попадают ли индексы в допустимый диапазон; не считайте ограничение индексов универсальным решением в схемах, где оно не подходит.
Учитывайте компоненты геометрии. Домен Point является общим для компонентов Mesh, Point Cloud и Curve. Если на входе Geometry несколько компонентов, Sample Index выбирает значение из первого непустого компонента в порядке Mesh, Point Cloud, Curve. Если нужно получить данные из конкретного компонента, разделите компоненты с помощью узла Separate Components и выполните выборку непосредственно из нужного компонента.
Оцените, подходят ли индексы для сопоставления. Перенос положений одной геометрии на другую работает лучше, когда у исходной и целевой геометрий одинаковое число точек и одинаковая топология. В документации отмечается, что такой подход позволяет воспроизвести поведение узла Transfer Attribute, существовавшего в Blender до версии 3.4. Это не гарантирует точного соответствия для любой пары геометрий с разной топологией: проверьте, имеют ли индексы одинаковый смысл в обеих геометриях.
Распространённые ошибки
Если считать, что исходная геометрия и Target Geometry выполняют одну и ту же роль в Raycast, становится непонятно, откуда именно рассчитываются лучи. Ещё одна ошибка — ожидать пересечения, не учитывая значение Ray Length: лучи могут не достигнуть целевой поверхности. Проверяйте выход Is Hit и учитывайте, что при отсутствии попадания Hit Distance возвращает значение Ray Length.
При работе с Sample Index чаще всего упускают из виду сопоставление индексов. Две похожие геометрии не обязательно имеют одинаковое число точек или одну и ту же топологию. Возврат значения по умолчанию для недопустимых индексов и ограничение индексов параметром Clamp — разные варианты поведения. Не интерпретируйте результат, не выяснив, какой компонент выбран в геометрии с несколькими компонентами; при необходимости разделите их.
Использование в архитектурных и визуализационных рабочих процессах
В архитектурном моделировании и визуализации Raycast можно использовать в схемах, где нужно определить точки пересечения лучей с целевой поверхностью и получить нормали или расстояния в этих точках. Также можно считывать атрибуты целевой поверхности. Sample Index выбирает значения геометрии по индексам и может быть полезен, в частности, для переноса данных, где важно совпадение числа точек и топологии.
Эти узлы не гарантируют одинаковый результат для любой модели. На Raycast влияют направление, начальное положение и максимальная длина луча, а на Sample Index — индекс, домен и выбор компонента. В источниках не указаны требования к оборудованию, модель лицензирования или сведения о совместимости с другими программами. Перед использованием в реальном проекте проверьте попадания, недопустимые индексы и условия сопоставления на небольшой геометрии — так проще заранее обнаружить неожиданные результаты.
Что делать дальше
Сначала опробуйте Raycast в простой схеме, где можно проверить только попадание и выход Hit Position. Затем отдельно проверьте работу Hit Normal, Hit Distance и Attribute; сравните варианты Interpolated и Nearest. Для Sample Index начните с поля индексов, значения которого известны, и по очереди меняйте настройки Data Type, Domain и Clamp.
Нет необходимости обязательно объединять оба узла в одной схеме. Raycast создаёт данные на основе пересечения с поверхностью, а Sample Index выбирает значения по индексам. Если заранее не определить, каким способом нужно получить данные, одновременное использование узлов может лишь усложнить поток данных.
Источник и лицензия
Это руководство адаптировано на турецкий язык по материалам Blender Manual: Raycast Node и Sample Index Node. Оба источника опубликованы по лицензии CC BY-SA 4.0.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Эти два узла могут помочь архитектурным бюро и командам визуализации точнее выбирать данные геометрии. Поскольку Raycast опирается на пересечение с поверхностью, а Sample Index — на соответствие индексов, важно правильно выбрать узел. Особенно при работе с моделями разной топологии не стоит считать перенос по индексам надёжным по умолчанию.
В источниках не указаны требования к оборудованию, цена или условия лицензирования, поэтому делать предположения по этим пунктам не следует. Студентам и производственным командам стоит сначала проверить выходные данные узлов на небольшой тестовой геометрии, а перед работой над реальным проектом убедиться, что узлы доступны в используемой версии и что поведение компонентов и индексов соответствует ожиданиям.
Частые вопросы
Для чего нужен узел Raycast в Blender Geometry Nodes?
Он вычисляет пересечения лучей, отправленных от исходной геометрии к целевой. Узел может выводить сведения о попадании, положение, нормаль, расстояние и необязательный атрибут.
Что делает Clamp в узле Sample Index?
Если Clamp включён, индексы ограничиваются размером области атрибута. Если параметр выключен, для недопустимых индексов возвращается значение по умолчанию.
Выполняют ли Raycast и Sample Index одну и ту же задачу?
Нет. Raycast находит пересечения с поверхностью, а Sample Index получает значения исходной геометрии по заданным индексам.



