Інтернет, як ми це знаємо, постійно змінюються та розвиваються. Те, що ми ще можемо пам'ятати, як простий і прямий носій, отриманий ще кілька років тому, і він не схожий на те, що він буде зупинятися там. Для Веб-будівельник , що колись було частиною науково-фантастичних фільмів, тепер можливе на таблетці, що лежить на вашому дивані, і є будівлі, що охоплюються великомасштабними інтерактивними установками, які насправді просто повноекранні вікна Google Chrome.
Виконайте наведені нижче дії, щоб дізнатись, як створити реалістичний ефект плавлення з трьома.JS.
Ідіть вперед і захопити бібліотеку Three.js і включіть його на свій сайт. Вам потрібно буде встановити веб-годинник, сцену та перспективу. Після того, як це миттєво, вам доведеться зробити сцену Requestanimationframe .
Далі вогні потрібно додати до 3D-сцени. У цьому прикладі будуть використані два вогні: навколишнє світло і точковий світло. Ам навколишнього світла служить загальним глобальним кольором для сцени, тоді як точка світла випускає світло, що зменшується з відстані. Це дасть сцену певний контраст.
Var Ambientlight = Новий три. Амбієнтний (0xcccccc);
scene.add (Ambientlight);
var pointlight = нові три.Pointlight (0xffffff, 1);
pointlight.position.set (10, 5, 0);
Тепер, коли сцена була створена, 3D-модель повинна бути завантажена. Модель може бути завантажена за допомогою будь-якого підтримуваного формату (JSON, OBJ, DAE та ін.). Нижче наведено приклад завантаження моделі DAE. У цьому прикладі дуже важливо, щоб модель має достатньо полігонів для виконання модифікацій вершин.
Череп оленя, який використовується у цьому прикладі, має 3500 полісів. Якщо політ є занадто низьким, анімація вершин буде надто явним і спотвореним.
Навантажувач = Новий три.ColladaLoader ();
loader.load ('dae / deer_skull / deer_skull.dae', onloadcompletehandler);
Bump Maps ідеально підходять для додавання глибини до текстур за низькою вартістю. Після того, як ви створите зображення Bump карта, ви можете реалізувати його, просто застосувавши його до матеріалу, як нижче. Також вам потрібно буде налаштувати масштаб вашої карти bump, щоб відповідати шкалі вашої моделі.
матеріал.bumpmap = 'img / deer_skull / deer-bump.jpg';
material.bumpscale = .008;
На своєму сайті Johnny використовує розширення гри Jerome Etienne за три.JS, що полегшує виконання вершин. Це розширення дозволяє легко доступу до кожної вершини моделі на частоті кадрів, що робить його простим для маніпулювання вершинами за допомогою сигналів.
Точний Подовження анімації вершини доступний за допомогою Github Etienne. Ми будемо йти далі, як це використовується на наступних кроках.
Танення частина геометрії включає в себе кілька загальних кроків. По-перше, кожен момент постійно підштовхує вниз. Коли точка досягає землі, вона виштовхується назовні, використовуючи те, що ми називатимемо "push vector".
Далі ми дамо точки, які збираються вздовж нижньої товщини, тому розплавлена геометрія не повністю плоска. Для того, щоб досягти цього, Джонні перенесений код від Skeel Lee's VFX Shader в Houdini і модифікував його.
Нижче наведено приклад використання використання вершини аніматора, щоб постійно натиснути геометрію моделі до землі.
ВАР ВЕРТЕКСАНІМАЦІЯ = Нова трикси. Ектексанімація (геометрія, функція (походження, положення, дельта, зараз) {position.y - = meltamount * modelheight;}
Це буде проштовхувати точки за курсом, визначеною розлюд . Не забудьте також зателефонувати "Оновити" у вашій вершинній анімації у циклі рендерингу.
Коли точка досягла землі, вона повинна бути висунута назовні, щоб досягти ефекту розплаву. Код нижче визначає, який напрямок у осей X та Z, щоб натиснути вершину, щоб ви отримали рівномірне переміщення. Умовні гарантують, що лише точки, які досягли найнижчих меж моделі (земля), висунуті назовні.
if (position.y & lt; bboppom.min.y) {
var centroid = bboppom.max.clone (). Додати (bbox.min.clone ()). dividescalar (2.0);
pushvector = postion.clone (). Sub (Centroid);
pushvector.y = 0; }
Код нижче використовує шум, щоб створити випадковість у русі, тому розплав відчуває органічно. Змінні шуму можна налаштувати, щоб отримати бажаний ефект. Потім шум застосовується до натискання розлюд і розпусний контролювати швидкість і розмір розплавленого басейну. Цей зовнішній вектор нарешті обчислюється, а потім застосовується до вершини.
var n = noiseamplitude * generator.getval ((position.x) * шум для шуму + шум);
var OutwardVector = pushvector.multiplyscalar (((meltamount * Розповсюдження) + n) *
Позиція.
Цей код пояснюється до цих пір, щоб досягти ефекту розплаву, але з ним не так. По-перше, басейн відчуватиметься досить рівною, тому що всі точки розплавлялися до однієї позиції Y. По-друге, оскільки всі вони поділяють той самий Y, занадто багато точок буде складатися на тій же висоті, що може викликати мерехтіння. Щоб уникнути цього, при застосуванні товщини застосовується при розплаві:
position.y + = meltamount * poolthickness;
З кодом вище, будь-яка модель з достатньою кількістю полігонів може бути розплавлена. Завантажте поштовий файл з коду тут і поміняти модель з усіма ви хочете. Весело!
Ця стаття спочатку з'явилася Веб-дизайнер випуск 265. Купити його тут .
Пов'язані статті:
(Зображення кредиту: Ян з PEXELS) Намагаючись вибрати назву веб-сай�..
Для цього семінару я збираюся створити інтер'єр фон, що містить лінійн�..
Навчавшись зоологію, тварини та дикої природи завжди були великою пристрастю до мене, і я ніколи не втом�..
Там є необґрунтована містика навколо нафтового живопису, яка поставил..
У цьому семінарі ми покажемо вам, як намалювати використання лицаря ..
Після того, як ви придумаєте ідею для фантастичної істоти, наступний к�..
Я не можу почати сказати вам, скільки Adobe Illustrator файли були пере..
При проектуванні для бренду, будь то встановлений один або запуск, який ви берете творче світло, послідо�..