Сингулярный коллапс
Описание проекта: "Эффект коллапса"
Цель проекта
Создание визуального эффекта, имитирующего коллапс объекта, используя 3D-моделирование в OpenSCAD. Проект демонстрирует, как можно комбинировать различные геометрические формы и трансформации для достижения интересного визуального результата.
Исходные данные
В проекте используется базовая геометрия: сфера и цилиндр. Сфера представляет собой основной объект, а цилиндр создает эффект "разрушения" или "коллапса" в нижней части сферы.
Структура проекта
-
Модуль
singularity()
:- Этот модуль создает основную геометрическую форму, состоящую из сферы и цилиндра.
- Сфера имеет радиус 30 единиц.
- Цилиндр, расположенный ниже сферы, имеет высоту 60 единиц и радиус 10 единиц. Он смещен вниз на 30 единиц, чтобы создать эффект пересечения с сферой.
-
Модуль
collapse_effect()
:- Этот модуль отвечает за создание эффекта коллапса.
- В цикле
for
происходит итерация от 0 до 10, что позволяет создать 11 экземпляров объектаsingularity()
. - Каждый экземпляр объекта вращается на 36 градусов вокруг оси Z и поднимается на 3 единицы по оси Z, создавая эффект движения вверх.
- Также применяется масштабирование, которое уменьшает размеры объектов по осям X и Y на 5% с каждой итерацией, что создает иллюзию сжатия и коллапса.
Визуальный результат
В результате выполнения кода создается эффект, напоминающий сжатие или коллапс объекта, где сфера постепенно уменьшается в размерах и поднимается вверх, создавая динамичную и интересную визуализацию. Этот проект может быть использован в различных областях, таких как анимация, визуализация данных или художественное 3D-моделирование.
Заключение
Проект "Эффект коллапса" демонстрирует возможности OpenSCAD для создания сложных визуальных эффектов с использованием простых геометрических форм и трансформаций. Это отличный пример того, как можно комбинировать программирование и искусство для создания уникальных 3D-объектов.
$fn=10;
module singularity(){
difference(){
sphere(r=30);
translate([0, 0, -30])
cylinder(h=60, r=10);
}
}
module collapse_effect(){
for(i = [0 : 10]){
rotate([0, 0, i * 36])
translate([0, 0, i * 3])
scale([1 - i * 0.05, 1 - i * 0.05, 1])
singularity();
}
}
collapse_effect();