Как создать механику лепки на гончарном круге — описание процесса реализации
Руки проецируются на текстуру цилиндра, а карта смещения применяется для генерации нормалей поверхности.
Глава AR/VR-отдела в Shopify Дэниель Бошам опубликовал в Твиттере тред, в котором рассказал о реализации механики лепки на гончарном круге в VR.
В основе эффекта лежит шейдер, который может ортогонально проецировать объект на цилиндрическую поверхность. Реализация проста: нужно взять xyz-координаты объекта, сопоставить их с координатами цилиндра и отрендерить их на текстуру.
Затем тон проекции рассчитывается на основе того, как далеко от поверхности цилиндра располагаются вертексы. Если не «очищать» текстуру, то на цилиндре будут оставаться следы.
Текстуру можно использовать как карту смещения на цилиндре. Это позволяет реализовать эффект деформации объекта. Затем нужно использовать карту смещения для генерации нормалей поверхности в шейдере. Бошам отметил, что для этого можно применить тесселяцию, но это усложнит весь процесс.
А теперь самое интересное. Если просто крутить текстуру по горизонтали, то получится иллюзия вращения цилиндра. Это выглядит как деформация движущегося объекта.
Если текстура будет двигаться достаточно быстро, то получится убедительный эффект лепки на гончарном круге. Чтобы материал был похож на мокрую глину, нужно установить roughness близко к 0. Пока этот эффект не позволяет менять высоту цилиндра, но Бошам планирует добавить эту возможность в будущем.