«Catwalk» - это однодневный проект, который я начал как программную замену сенсора Kinect в среде Grasshopper3D.

После самообучения JavaScript и p5.js я наткнулся на Учебник по оценке поз Дэна Шиффмана. Эта идея напомнила мне типичные эксперименты с кинектом, светлячком и кузнечиком, когда оценка позы приводила к какой-то визуализации фасада в реальном времени. В то время у меня не было сенсора Kinect или другого оборудования, которое позволяло бы проводить такие эксперименты, поэтому я решил определить, может ли p5.js / ml5.js запускаться ВНУТРИ среды Grasshopper3D - просто для удовольствия!

Покопавшись, я нашел способ запустить экземпляр браузера Google Chrome (точнее Chromium) в Grasshopper, просто сославшись на библиотеку с открытым исходным кодом - CefSharp. После того, как я запустил Chrome в Grasshopper, мне просто нужно было создать веб-страницу, которая будет обмениваться информацией с Grasshopper. На этой веб-странице был запущен сценарий JS, похожий на эскиз p5 оценки позы Дэна Шиффмана, но вместо отображения позы на холсте p5.js он просто отображал необработанные данные позы с помощью функции JS (CefSharp позволяет вызывать функции через свой C # API) .

Затем я мог бы вызвать функцию из компонента Grasshopper, и он вернул бы все данные в формате JSON, которые затем можно было бы десериализовать в объект. Экспорт свойств этого объекта в выходной параметр компонента дал мне простой способ запускать функции JavaScript внутри Grasshopper в реальном времени.

С помощью простого скрипта, создающего геометрию с использованием выходных данных, я получил следующий результат:

Это моя сестра танцует. Она настояла на том, чтобы я сделал поток веб-камеры неузнаваемым, поэтому он выглядит именно так, но для этого не требовалось никаких фильтров камеры. Оранжевые цифры - это снимки экрана окна просмотра Rhino, и синхронизация обоих каналов совпадает, поэтому вы можете заметить задержку (которая кажется удивительно сопоставимой с задержкой при обычном запуске аналогичной веб-страницы в Chrome).

Я упаковал плагин и разместил его на Food4Rhino, но, похоже, он вызывает массу проблем при работе в различных конфигурациях системы. Не стесняйтесь попробовать. Если у вас есть конкретная идея, которую вы хотели бы попробовать с помощью этой установки, мы всегда ищем интересные проекты для сотрудничества в ARPM Design and Research.

Я мог бы расширить идею запуска JavaScript внутри Grasshopper или даже Unity3D. Я нигде не встречал других примеров подобного, так что это могло бы привести к некоторым интересным результатам.