Привет, моделист! Сейчас мы займёмся сооружением 3D-модели логотипа программы OpenSCAD. Образец, к которому мы будем стремиться, изображён слева, на рис.1.
Как нетрудно заметить, это просто шар, в котором сделано несколько отверстий цилиндрической формы с трёх взаимно-перпендикулярных направлений. Поэтому весь алгоритм построения данной модели состоит из того, чтобы сперва построить шар, а потом из него вычесть 3 цилиндра повёрнутых в разные стороны. Но обсудим это чуть подробнее.
Запускаем программу OpenSCAD (загрузить её можно с официального сайта программы). В области написания кода пишем код создания сферы:
sphere(r=8, $fn=100); //вначале в скобках указан радиус сферы, затем визуальное качество фигуры
Говоря о параметре $fn=100
нужно отметить, что чем выше цифра - тем "идеальнее" выглядит фигура, но при этом серьёзно повышается нагрузка на центральный процессор. Примеры шаров представлены на рис.2 и рис.3.
$fn=100
$fn=20
Следующий геометрический примитив, который нам понадобится - это цилиндр. Код для создания цилиндра легко найти на сайте, который я рекомендую для знакомства с программой OpenSCAD. и Он выглядит так:
cylinder(h=20, r1=5, r2=5, center=true, $fn=100); // полное описание цилиндра
h
- высота, r1
- радиус нижнего основания, r2
- радиус верхнего основания center=true или false
- центрировать/не центрировать фигуру в начале координат (это лучше один раз попробовать, чем писать объяснение).
Должно получиться примерно как на рис.4.
И тут, возможно вы спросите: почему на моих картинках цвета фона и фигур отличаются от цветов в вашей программе. И тут нужно сказать, что цвета фона и фигур по умолчанию задаются в настройках программы: Правка > Параметры > Цветовая схема, у меня выбрана Tomorrow Night. Кроме того, цвет фигур так же можно задавать, используя оператор сolor
о котором можно узнать тут.
Теперь нужно вычесть из шара цилиндр, что приведёт к созданию в шаре цилиндрического отверстия. Для этого нужна команда вычитания и она выглядит так:
difference(){
из чего вычитаем; //в нашем случае это шар
что вычитаем 1; //в нашем случае это цилиндр
что вычитаем 2; //в нашем случае это будущий цилиндр
что вычитаем 3; //в нашем случае это ещё один будущий цилиндр
... //а тут может быть ещё что-нибудь
};
В результате получаем фигуру как на рис.5. (обратите внимание, что я поменял цветовую схему на Nature).
Думаю, что дальнейшие действия уже понятны: строим ещё 2 таких же цилиндра, поворачиваем их как надо и вычитаем из сферы.
Информацию о том как поворачивать фигуры возьмём всё с того же славного сайта. Делается это командой:
rotate([90,0,0]) //поворот вокруг оси X на угол 90 градусов
cylinder(h=20, r1=5, r2=5, center=true, $fn=100); //цилиндр, который поворачиваем
в квадратных скобках указываются углы поворота объекта относительно начала координат вокруг соответствующих осей координат [X, Y,Z].
Обратите, что после команды поворота не ставится точка с запятой. Если её поставить, то действие команды поворота прекратится и объект, который стоит после команды поворота повёрнут не будет.
Итак, добавим ещё 2 цилиндра, повернём один на 90 градусов вокруг оси X, другой на такой же угол вокруг оси Y, а затем вычтем их их сферы. Должна получиться штука как на рис.7.
Сравнимая её с рис.1, можно заметить некоторые различия:
color("цвет", 0.5) // второй параметр означает прозрачность, 1 - непрозрачный, 0 - прозрачный
. Цвет у нас жёлтый и его можно выбрать из представленной на странице таблицы цветов и их названий. Yellow будет в самый раз! Обратите внимание на цвет отверстий. Он задаётся цветом цилиндров.Кстати, в программе OpenSCAD можно даже делать анимацию. Как это сделать описано в этой инструкции. Программа OpenSCAD сгенерировала последовательность кадров в виде картинок, которые затем были объединены в GIF-файл с помощью сервиса ezgif.com .