Художественные модели 3D для обучения рисованию
Модели по которым учатся рисовать человеческое тело, широко используются на практике. Хорошие рекомендации по рисованию имеются в иллюстрированной книге «Изображение человека. Основы рисунка с натуры» -
автор Баммес Готтфрид. Скачать эту книгу в формате pdf можно тут - http://disk.yandex.ru/i/25wI1X5Di5njGw
У меня уже была собственная программа «Стереометрические модели», делающая и показывающая стереометрические построения, и помогающая школьникам в их подготовке к ЕГЭ. Она демонстрирует геометрическую модель, состоящую из точек и прямых линий, в разных её положениях и с использованием эффекта воздушной перспективы – https://youtu.be/je9SSSN0Wks Результат нагляден и очень эффектен.
Поэтому у меня и появилась мысль – а можно ли эту программу приспособить для рисования и демонстрации объёмных художественных моделей? С одной стороны, почему бы и нет, но на практике оказалось, что в программу нужно внести некоторые добавления, правда, небольшие. О них я хочу вам рассказать.
ИЗМЕНЕНИЯ В ПРОГРАММЕ
Прежде чем что-то менять, я решил попробовать сделать художественную модель уже имеющимися средствами. Я взял рисунок, изображающий череп в профиль, и обвёл контуры черепа отрезками прямых линий.
В моей программе это делается так же просто, как это делается в программе «CorelDraw» - https://youtu.be/GU2zITgWy-A
Но вот незадача – я получил изображение только в одной единственной секущей череп плоскости. А как мне получить точки, находящиеся справа и слева то неё? Получать новые точки, достраивая чертёж так, как я делал это в программе «Стереометрические модели», это процедура непростая, а новых точек нужно сделать много.
И тогда я решил – создаём новый отрезок или новую точку наобум, располагая их в произвольном месте. А потом, используя клавиши со стрелочками на клавиатуре компьютера, передвигаем созданный элемент на нужное место.
Клавиши со стрелочками предназначались у меня для другого – ими я передвигал буквенное обозначение элемента, но для художественной модели буквенные обозначения не очень нужны, поэтому я ввёл «режим сдвига», в котором сдвигаются не буквенные обозначения элементов, а сдвигаются сами элементы. Они передвигаются по осям X и Z, а если кнопки для сдвига по вертикали нажимать одновременно с клавишей «Shift», то элемент сдвигается по Y.
Попробовал, получилось удобно. К пунктам меню добавил ещё одну опцию – отражение элемента в плоскости. И действительно, создавая левую часть черепа, зачем мне делать то же самое с правой его стороной?
Выбираю элемент «плоскость» (на иллюстрации этот элемент показан красной точкой P с торчащей влево нормалью), извлекаю тот элемент, который я буду отражать (при извлечении делается копия элемента), выбираю копию и отражаю её, кликнув по кнопке «ok».
Попробовал, получилось удобно. Таким способом я и нарисовал тот череп, который вы видите на иллюстрации. Его можно вращать и рассматривать в разных ракурсах. Но и это ещё не всё.
СВЯЗАННАЯ С ТОЧКОЙ СФЕРА. ГЛАЗ ЧЕЛОВЕКА
Чтобы облегчить себе дальнейшую работу (а планировалось создать модель глаза), я придал одной кнопке, которая никак в художественной модели не использовалась, дополнительную опцию под названием «сферы».
В этой опции к точке присоединяется не окружность, находящаяся во фронтальной плоскости, как это делалось при использовании присоединённой графики, а сфера заданного диаметра, перемещающаяся вместе с точкой.
Более того, в меню я ввёл дополнительную опцию, позволяющую наложить выбранной элемент на поверхность этой сферы. Рисование прилегающего к глазному яблоку века теперь оказывается очень простым – обрисовываем веко линиями во фронтальной плоскости, помещаем позади этого рисунка сферу, и накладываем контур века на сферу.
Теперь, при поворотах модели, контур от поверхности сферы не уходит, он как бы прилип к этой сфере.
Дублируем элементы, изображающие веко. Разворачиваем модель в профиль и закрепляем её в этом ракурсе, сдвигаем копию века по оси Y в сторону носа. И вот мы уже почти получили изображение века в объёме. Разворачиваем модель анфас, и вновь корректируем положение века, теперь используя передвижения по X и Z.
Сделав верхняя часть верхнего века и нижнюю часть нижнего, мы получим вполне реалистичную модель нашего глаза.
Провозившись с этим, и добавив линию носа с одной сторона, и лоб со щекой - с другой, я всё же был не полностью удовлетворён. Дело в том, что движение с помощью кнопок по координате Y приводило к видимому смещению точек, как по горизонтали, так и по вертикали, и это портило их первоначальную установку. Модель приходилось постоянно поворачивать то так, то этак, чтобы убедиться в том, что точка находится на своём правильном месте.
Гораздо проще было бы двигать точки, наблюдая за ними в двух взаимно перпендикулярных проекциях – ZX и ZY.
РЕЖИМ ДВУХ ПРОЕКЦИЙ
Я поинтересовался, а имеются ли такие проблемы в существующих программах, работающих с 3D моделями?
Да, в них тоже, чтобы следить за результатом, нужно постоянно поворачивать модель. Вот тут создание модели ведётся сначала выделением и передвижением выделенных участков, а затем передвижением отдельных узлов возникшей сетки -
https://youtu.be/3P9fzn31cIg - программа «Blender 2.81»
Или путём массового передвижения точек с помощью кисти, и затем передвижением узлов сетки с постоянным подглядыванием на повёрнутую модель – а что же там получилось на самом деле?
https://youtu.be/XRpJ-4ypMl8 - программа «3Ds Max»
Получается, хоть и наглядно, но не совсем удобно. Для передвижения графических элементов гораздо проще использовать классическое отображение модели в двух проекциях.
Оказалось, что и делать-то мне для этого почти ничего не надо. В текст программы, который создаёт изображение в изометрии, нужно было только ввести два условных оператора, и пожалуйста, вместо изометрического чертежа, показанного на иллюстрации слева возникает проекция в координатах ZX, и правее, с некоторым отступом от неё, проекция в координатах ZY.
На иллюстрации показано, как я, подцепив указателем точку, взятую на одной из проекций, переношу её на другое место.
В общем, сделанное очень порадовало меня. Небольшая кнопочка, примыкающая к кнопке «сферы», включает и отключает режим двух проекций, и мы можем спокойно работать с моделью в том виде, в каком захотим.
Спасибо за внимание!
____________________
Ниже приводится фрагмент текста программы, который выводит на рисунок изображение точки. Fa – это флаг режима двух проекций (0 или 1), на этот флаг реагируют условные операторы, отмеченные в тексте звёздочками.
dFa это отступ – расстояние между проекциями, это расстояние может регулироваться. Буквенное обозначение (если оно есть) делается обращением Call BSim(Pvv(N, 9)) и оно появляется на двух проекциях сразу.
Case 1: 'точка
X1 = Pvv(N, 1) / 10: Y1 = Pvv(N, 2) / 10: Z1 = Pvv(N, 3) / 10
If L6F = 1 Then 'воздушная перспектива
Co = Cbel(C128, Y1 + Y1): C = Cbel(C, Y1 + Y1)
C = Ckomb(C, NN): Co = Ckomb(Co, NN):
End If
X1 = X1 + Y1 * KYo * CCo: Y1 = -Z1 - Y1 * KYo * SSo:
X1 = XXo + X1: Y1 = YYo + Y1:
If Fa = 0 Then X1 = XXo + X1a: Y1 = YYo - Z1: ‘******
If Fxy > 0 Then XF1 = X1: YF1 = Y1: GoTo 5: 'точка в плане -наружу
6 Form1.Picture1.DrawWidth = DWo + 8:
Form1.Picture1.PSet (X1, Y1), 0: Form1.Picture1.DrawWidth = DWo + 5:
Form1.Picture1.PSet (X1, Y1), E(C): Call BSim(Pvv(N, 9)) 'буквенное обозначение
NL = Pvv(N, 8):
If NL > 0 Then
Form1.Picture1.DrawWidth = DW:
If FC40 = 1 Then
Form1.Picture1.Circle (X1, Y1), Pvv(N, 4) / 2, E(C)
Else: Call MLpic(N, X1, Y1, C And C240)
End If: End If:
If Fa = 0 Then Fa = 1: X1 = XXo + Y1a + dFa: GoTo 6: ‘******
Свидетельство о публикации №222071501354
Сергей Рубанкин 30.01.2023 14:39 Заявить о нарушении
Изображение трёхмерное. Активировав инструмент "передвижение" на панели инструментов можно кликнуть по любому из отрезков и перецепить один из его концов к другому отрезку с помощью мышки.
Можно активировать инструмент "создать отрезок" и соединить отрезком любой графический элемент с другим.
Вот тут находится два изображения лица плоской графикой - http://disk.yandex.ru/d/flpzhGLvJHw2XQ
чтобы эта графика была видна, нужно кликнуть на панели вверху по кнопке "_" правой кнопкой мыши. Там появится буква "Л" - работа с ломаными линиями. На панели инструментов кликаем "1" - там появится цифра "2". Активируем инструмент "передвижение" и передвигаем абрисы лица. Для закрепления на новом месте кликаем кнопку "ok".
Но практически передвигать элементы графики удобнее клавишами со стрелочками. Эти перемещения дозированы - их шаг задаётся цифрой на кнопке "Плотность".
Перемещения плоской графики мышью у меня были в предыдущей программе. Если постараться, то можно и в новой программе сделать подобное. Но особого смысла нет - перемещения мышью слишком грубы, приходится одновременно следить и за положением, и за наклоном векторной фигуры, и за её размером. И это не очень удобно.
Дмитрий Маштаков 30.01.2023 16:07 Заявить о нарушении
Дмитрий Маштаков 30.01.2023 16:17 Заявить о нарушении
Добавлю ещё, что программа нацелена на создание анимации - на небольшие и одинаковые перемещения, следующие друг за другом. То есть, на плавное движение. Такие перемещения мышкой не сделаешь.
Дмитрий Маштаков 30.01.2023 23:59 Заявить о нарушении