Розробка WebGL/Three.js сцени з генерацією та експортом 3D (снапшот) з анімованого шейдера
Опис об'єкта:Проект являє собою дизайнерський стіл, виконаний у формі реалістичного, глибокого водовороту (центральна воронка, яка плавно переходить з широкої горизонтальної стільниці в тонку витончену ніжку).
Суть задачі:Потрібен WebGL / Creative Coding розробник для створення інтерактивного 3D-компонента цього об'єкта з функцією миттєвої фіксації поточної форми та її експорту в 3D-файл.
Вхідні дані:Є базова 3D-модель столу-воронки (формат .glb / .gltf).
Функціональні вимоги:
Налаштування сцени та камери: Завантаження базової моделі в Three.js. Камера повинна бути строго зафіксована в одному статичному положенні (ракурс перспективи або аксонометрії збоку-зверху), без можливості зміни кута огляду користувачем. Освітлення — світла, чиста фотостудія з м'якими тінями та глянцевими відблисками на об'єкті.
Обертання об'єкта: Сам стіл-водоворот повинен безперервно і плавно обертатися навколо своєї вертикальної осі (Y) з заданою швидкістю, демонструючи форму з усіх сторін.
Динамічний матеріал (GLSL шейдер): Створення кастомного
ShaderMaterialдля ефекту прозорого оптичного скла/акрилу з ефектом Френеля. Внутрішня структура воронки анімується через фрагментний шейдер: потоки та лінії заломлень світла безперервно закручуються по спіралі, динамічно змінюючи свій малюнок залежно від часу (u_time).Механіка фіксації («Сліпок геометрії»): Реалізація кнопки «Зафіксувати форму».
Важливо: При натисканні кнопки загальне обертання об'єкта та анімація водоворота на екрані НЕ припиняються (стіл на сайті продовжує крутитися і змінюватися далі в часі).
В момент кліка код повинен миттєво зробити «знімок» (
snapshot) поточних математичних параметрів деформації та фази шейдера саме в цю мілісекунду.На основі цих зафіксованих параметрів система повинна згенерувати нову, «застиглу» (не анімовану) 3D-модель, яка повністю запечатує в собі форму вихору з цієї конкретної фази часу.
Експорт: Реалізація функції скачування отриманого зафіксованого 3D-сліпка в універсальному форматі (наприклад,
.objабо.gltfчерез стандартнийTHREE.GLTFExporter) для подальшого використання в сторонніх 3D-редакторах.
Вимоги до кандидата:
Відмінне знання Three.js, WebGL та мови шейдерів GLSL.
Досвід роботи з генерацією мешів та експортом геометрії з сцени Three.js.
Наявність портфоліо з прикладами інтерактивної WebGL / шейдерної анімації в браузері.
Результат:Оптимізований скрипт (стабільні 60 FPS на десктопах і мобільних пристроях), готовий до інтеграції на веб-сторінку.
Додатки 1
-
7 днів18 123 UAH7 днів18 123 UAH
Привіт!
Мене звуть Євгеній, вже 7 років я професійно займаюся розробкою мобільних додатків, сайтів, веб-сервісів та веб-додатків.
*Вартість вказав за 1 годину роботи. Щоб детальніше дати ціну, хотів би зв'язатися/зателефонувати і обговорити деталі.
- Портфоліо, відгуки та нагороди можна вивчити в моєму профілі.
Чому потрібно вибрати мене?
… - Займав 1 і 2 місця на міжнародних чемпіонатах і змаганнях в IT-сфері
- У мене є підтверджені відеовідгуки, подяки
- Я завжди на зв'язку, чесний і адекватний
- Працюю за Договором
- Керую власною командою розробки
Буду радий поговорити з Вами детальніше про проект.
-
7 днів18 123 UAH7 днів18 123 UAH
Добрий день, Vyacheslav!
Я ознайомився з відгуками інших спеціалістів на ваш проект. Постараюся запропонувати рішення, щоб у вас була можливість спілкуватися не тільки з чатами GPT =)
- ⭐689% приросту трафіку за 3 місяці!⭐ - https://freelancehunt.com/showcase/work/689-prirostu-trafiku-za-misyatsi/1993127.html
- ⭐Компанія друку принтів на одязі. Зростання трафіку на 486%⭐ - https://freelancehunt.com/showcase/work/magazin-dlya-doroslih-zrostannya-prodazhiv-na/1993118.html
- ⭐Зростання трафіку на 4854% за 15 місяців. Хочеш так само?⭐ - https://freelancehunt.com/showcase/work/zrostannya-trafiku-na-4854-za/1993112.html
Поки утримаюся від конкретної пропозиції, оскільки важливо зрозуміти кінцеві цілі вашого проекту. Щоб запропонувати оптимальний варіант співпраці, уточніть, будь ласка:
…
- Який термін реалізації проекту вас цікавить? Плануєте швидкий запуск чи у вас є запас часу?
- Чи є у вас детальне технічне завдання або сформоване бачення майбутньої сцени?
- Скільки часу анімація повинна бути активною перед фіксацією?
- Ви розглядаєте можливість створення унікального шейдера чи готові використовувати існуючі рішення?
На вартість і терміни розробки впливають кілька факторів:
1. Наявність готової базової моделі та її адаптація під ваші вимоги.
2. Розробка унікального шейдера або використання існуючих рішень.
3. Деталізація технічного завдання: чим детальніше воно буде, тим швидше і точніше можна буде реалізувати проект.
4. Обсяг роботи з інтеграції та налаштування сцени в Three.js.
5. Складність анімації та необхідність в оптимізації коду для стабільної роботи на різних пристроях.
Якщо заглянути в майбутнє, то на початковому етапі нам потрібно буде сформувати і погодити остаточне бачення кінцевого результату вашого проекту. Я надаю перевагу створенню такого бачення на основі аналізу конкурентних рішень і ваших особистих побажань. Це дозволить зрозуміти, які підходи використовують інші, і запропонувати вам унікальне і більш ефективне рішення.
Ваш проект по створенню інтерактивного 3D-компонента для дизайнерського столу-воронки вимагає глибокого розуміння WebGL і Three.js. Я володію досвідом у розробці складних шейдерів і генерації 3D-моделей, що дозволить реалізувати ваш проект з урахуванням усіх технічних вимог і нюансів.
Наступний крок - обговорити деталі проекту і зрозуміти, наскільки ми підходимо один одному. Давайте зафіксуємо всі нюанси в переписці або на зустрічі.
-
14 днів18 123 UAH
536 9 0 14 днів18 123 UAHВидів ваш проект з водоворотом, і задача реально цікава. Особливо момент з кнопкою "Зафіксувати форму", де потрібно зняти знімок математичних параметрів деформації без зупинки анімації, і потім згенерувати меш з цієї фази шейдера. Це нетривіально, але вирішувано через синхронізацію u_time і геометрії на стороні CPU.
Я fullstack-розробник з ~3.5 роками комерційного досвіду, основний стек TypeScript і Vue/React. Three.js, GLSL і роботу з геометрією використовую в веб-проектах. Шейдер для прозорого акрилу з ефектом Френеля і анімацією внутрішніх потоків через u_time, плюс експорт через GLTFExporter, це те, з чим я працював на практиці.
По результату: оптимізований скрипт, готовий до інтеграції, 60 FPS на десктопі і мобільних. Можу показати підхід до реалізації до старту, якщо хочете зрозуміти як саме планую робити знімок фази і експорт.
Готовий обговорити деталі, напишіть якщо є питання.
-
29 днів326 085 UAH
15075 32 0 1 29 днів326 085 UAHДобрий день!
Мене звати Валентин, і я представляю Arctic Web Agency. Ми - команда яка спеціалізується на створенні сучасних та ефективних рішень для бізнесу.В особисті повідомлення зможу надати приклади наших схожих робіт. Готові взяти ваш проєкт до роботи!
З повагою
Arctic Web Team
Freelancehunt
-
5 днів12 082 UAH
7123 53 0 5 днів12 082 UAHПрацював з Three.js та шейдерами, такі завдання люблю. Бачу це так: пишемо GLSL-шейдер з процедурною геометрією водоворота, анімуємо через uniforms, і окремо робимо експорт знімка через рендер в offscreen-буфер з потрібною роздільною здатністю. Питання: потрібен саме растровий знімок (PNG/JPG) чи хочеться вивантажувати геометрію як 3D-модель (glTF, OBJ)? Готовий обговорити деталі.
-
10 днів15 706 UAH
612 21 0 10 днів15 706 UAHДоброго дня. Можу виконати ваше завдання. Досвід є. Пишіть, домовимось.
-
5 днів24 163 UAH
744 8 0 5 днів24 163 UAHДоброго дня, працюю з three.js та webgl, в профілі є роботи, готовий обговорити деталі цього завдання
-
14 днів24 163 UAH
552 3 0 14 днів24 163 UAHВячеслав, добрий день.
Ключовий момент у цій задачі — не сам скляний шейдер, а кнопка «Зафіксувати форму». Деформація воронки живе у вершинному шейдері, тобто позиції вершин обчислюються на GPU прямо під час рендеру. Якщо в момент кліку просто віддати сцену в GLTFExporter/OBJExporter, на виході буде вихідна, недеформована модель — експортер не бачить того, що нарахував шейдер. Це типова пастка, на якій такі задачі і стають.
Щоб знімок був справжнім, деформацію треба «запекти» в геометрію на момент кліку:
По кліку беру поточний u_time і фазові параметри.
Обчислюю зміщення вершин на CPU тим же кодом, що в шейдері (виношу формулу деформації в загальний JS-модуль, щоб шейдер і запікання рахували однаково), або знімаю результат з GPU через transform feedback на WebGL2.
Пишу нові позиції в свіжий BufferGeometry, перераховую нормалі (computeVertexNormals) — інакше у зовнішньому редакторі модель буде затінена криво.
… Віддаю результат в GLTFExporter (.glb/.gltf) або OBJExporter. Основна сцена при цьому продовжує крутитися — знімок йде в окремий буфер і її не чіпає.
Один момент варто проговорити заздалегідь. Внутрішні потоки і лінії заломлення ви анімуєте у фрагментному шейдері — це оптика і колір поверхні, а не геометрія. У .obj/.gltf ця «закрученість» як форма не запечеться: експортується деформований силует чаші з ніжкою плюс наближення скляного матеріалу. Якщо під «застиглим вихором» мається на увазі саме об'ємна геометрія внутрішніх потоків — це інший об'єм робіт (потрібно гнати вихор в реальну геометрію). Давайте на старті звіримо, що саме повинно лежати в завантаженому файлі — від цього залежить підхід.
По решті:
Камера фіксована, без управління — як у ТЗ.
Обертання і деформація — у вершинному шейдері, матеріал — кастомний ShaderMaterial зі склом і Френелем.
60 FPS тримаю за рахунок одного меша без пофреймової роботи на CPU; важка операція (запікання) трапляється тільки в момент кліку.
На виході — готовий модуль для інтеграції у вашу сторінку, з базовою моделлю на вході.
Є портфоліо по WebGL/шейдерній анімації, покажу в особистих повідомленнях.
Термін: 10–14 днів.
Вартість: точну цифру назву після того, як звіримо питання про вміст експорту і подивлюся базову модель воронки.
-
12 днів30 204 UAH
280 12 днів30 204 UAHПривіт, В'ячеславе
Як фулл-стек розробник, я маю повний досвід у програмуванні на three.js. Ось деякі з моїх прикладів:
https://www.kodeclubs.com/
https://acoustics.autoneum.com/
Я готовий почати прямо зараз, і не соромтеся зв'язатися зі мною в будь-який час.
… З найкращими побажаннями, Хан.
-
10 днів24 163 UAH
1309 6 1 10 днів24 163 UAHhttps://sensei3d.com/
Привіт, сподіваюся, у вас все добре.
Я можу створити інтерактивний компонент Three.js WebGL для вашого столу для спа, використовуючи надану модель GLB або GLTF з фіксованим освітленням студії, плавним обертанням по осі Y та кастомним шейдером для скла.
Я створю чисту сцену з заблокованою перспективою або аксонометричною камерою, м'якими тінями, блискучими акцентами та оптимізованим рендерингом для настільних комп'ютерів і мобільних пристроїв. Об'єкт буде безперервно обертатися, поки шейдер анімує ефекти прозорого акрилового скла з акцентами Френеля та рухомими спіральними лініями заломлення, що залежать від часу.
Для функції Capture Shape я реалізую кнопку, яка зніме параметри деформації та фазу шейдера в момент натискання, поки видима анімація продовжує працювати. Використовуючи ці заморожені значення, я створю окрему неанімовану 3D-форму, яка представляє цей захоплений стан, і експортуватиму її як GLTF або OBJ за допомогою експортерів Three.js.
…
З найкращими побажаннями,
Юсеф.
-
4 дні12 082 UAH
1790 18 0 4 дні12 082 UAHДобрий день, можу почати роботу вже зараз. У розробці більше 4 років, працюю з three.js та webgl, можу зробити приклад як буде виглядати, вже сьогодні до вечора і показати результат, звісно на поліровку знадобиться ще 1-2 дні.
Буду радий співпраці.
-
7 днів8457 UAH
482 7 днів8457 UAHДоброго дня, Вячеслав.
Завантажу .glb у Three.js, поставлю фіксовану камеру без управління, студійне світло та повільне обертання навколо осі Y. Скло зроблю кастомним ShaderMaterial з Френелем, спіраль всередині воронки аніматиму у фрагментному шейдері через u_time.
Головне тут знімок форми. По кнопці сцена обертається далі, а в момент кліку фіксую u_time, запікаю вершини меша в статичну геометрію і віддаю через GLTFExporter, щоб форма відкривалася в будь-якому редакторі. Тримаю 60 FPS на десктопі та мобільному.
На фрилансі недавно, беру недорого, але зроблю швидко і якісно.
Підкажіть: форму воронки створює сам шейдер чи деформація вже в геометрії, і який формат зручніше, glb чи obj?
-
8 днів21 747 UAH
1362 3 0 8 днів21 747 UAHСуть задачі в тому, щоб зловити параметри деформації в конкретну мілісекунду і запекти їх у статичну сітку, поки сам вихор крутиться далі. Це найцікавіше місце.
На минулому проекті робив експорт запеченої геометрії з ShaderMaterial з вершинним зсувом у glTF. Там також потрібно було копіювати атрибут позицій в окремий буфер без зупинки рендеру.
Щоб оцінити обсяг точніше, уточніть: деформація воронки вже закладена у вершинах вихідного GLB, чи форма повністю обчислюється у вершинному шейдері?
-
10 днів24 163 UAH
4097 5 1 10 днів24 163 UAHПривіт! Це дуже цікавий проект, тому що він поєднує в собі розробку шейдерів для процедурної графіки в реальному часі та генерацію геометрії, а не традиційний переглядач продуктів Three.js. У мене є досвід роботи з реалізаціями користувацьких ShaderMaterial на GLSL в Three.js, процедурною анімацією та робочими процесами експорту геометрії, що якраз і є основними вимогами тут. Найбільш важлива технічна деталь у вашій специфікації — це різниця між анімованим об'єктом в реальному часі та захопленою замороженою геометрією. Замість простого експорту відображуваної в даний момент сітки система повинна захоплювати точний стан деформації та параметри шейдера в певний момент часу та генерувати окремий знімок статичної геометрії, в той час як вихідний об'єкт продовжує обертатися та анімуватися в реальному часі. Для реалізації я б використовував користувацькі шейдери GLSL в Three.js та спеціальний шар генерації геометрії, який відображає логіку деформації, використану візуальним ефектом. Сцена буде включати фіксоване положення камери, студійне освітлення, м'які тіні, фізично коректні матеріали та плавне безперервне обертання навколо осі Y. Для матеріалу я б створив користувацький шейдер для скла або акрилу з відображеннями Френеля, спотворенням, натхненним заломленням, анімованими вихровими потоками та процедурним рухом, керованим часом, зберігаючи при цьому сумісність з настільними та мобільними пристроями. Продуктивність Робочий процес захоплення буде включати: захоплення точного стану у часі захоплення параметрів деформації генерацію замороженої версії геометрії створення експортованої сітки експорт через GLTFExporter або OBJExporter Цей підхід гарантує, що експортована модель точно відображає стан вихору в обраний момент часу, а не є універсальною сіткою. Для підвищення продуктивності я б зосередився на: оптимізованих обчисленнях шейдерів ефективному оновленні геометрії мінімальній кількості викликів відтворення адаптивному рендерингу для мобільних пристроїв стабільній цільовій частоті 60 кадрів на секунду на сучасних пристроях. Кінцевим результатом стане чистий модульний компонент, готовий до інтеграції з веб-сайтом, налаштуванню сцени Three.js, логіці захоплення коду шейдерів та функціональності експорту. Проект технічно складний у правильному сенсі, оскільки знаходиться на стику креативного програмування, процедурного моделювання.
-
10 днів18 123 UAH
11706 68 0 10 днів18 123 UAHДобрий день
готовий обговорити деталі в лс
---------------------------------
-
Поставте ваше запитання замовнику