Как нарисовать квадрат
Этот пост является ответом к этому комментарию.
Однако оформлен отдельным постом так как материал может оказаться полезным.
Заранее предупреждаю, я не художник, в художке никогда не был. Весь материал ниже отражает мою проф деформацию.
Повторяйте на свой страх и риск, автор не несёт никакой ответственности за ваши действия.
Итак, преступим:
Как нарисовать квадрат
Таким же образом можно рисовать любой прямоугольник с желаемым соотношением сторон, но здесь и далее будем говорить о квадрате.
Что может быть сложного в том чтобы нарисовать квадрат? Рисовать мы его будем в перспективе. Как известно, для построения перспективы используются точка схода (vanishing point). Однако точки схода помогают построить параллельные и перпендикулярные линии, но не помогают в соблюдении пропорций.
Давайте рассмотрим случай с двумя точками схода, так будет проще объяснить, а потом если нужно, я покажу, что будет в случае с одной точкой схода.
Для начала, выберем линию горизонта и две точки схода. Для примера, чтобы сделать сложным угадывание пропорций квадрата на глаз, одна точка схода будет ближе к центру, а другая - за пределами рисунка.
Как далеко располагать точки схода друг от друга? Нужно понимать, что мы рисуем точки схода, которые соответствуют двум перпендикулярным направлениям. Соответственно угол между ними - 90 градусов. Есть такая штука как field of view (FOV), это угловой размер поля зрения. Выбор этом величины очень крайне важен, так как существенно меняет восприятие рисунка.
Вот например анимация с википедии, где одновременно меняется FOV и расстояние до объекта, так чтобы размеры объекта на проекции оставались постоянными.
FOV определяет, насколько сильными будут перспективные искажения. Обычно, если нужно изобразить объект который находиться далеко, то нужны минимальные перспективные искажения, если нужен большой объект близко, то наоборот - большие.
Соответственно, чем меньше расстояние между точками схода на нашем рисунке, тем больше перспективные искажения. Я буду рисовать две точки схода, так как нам понадобятся дополнительные построения, однако я также изображу рамку, которая будет обозначать границы нашего рисунка.
Давайте попробуем нарисовать квадрат:
Где же расположить дальнюю грань? Какая линия даст нам квадрат: красная, зеленая или синяя?
Конечно, можно попробовать угадать, нарисовать на глаз и при наличии должного опыта, возможно даже получить правильный квадрат.
Но мы гадать не будем.
Для начала, нужно провести вертикальную ось рисунка, она должна быть по центру:
Затем, отметим средину, между точкой схода V1 и V2:
Начертим окружность, соединяющую V1 и V2. Отметим пересечение этой окружности с вертикальной осью.
Это пересечение - особая точка, я ее называю точка "вниз". Она имеет такую особенность, что из нее обе точки схода видны под прямым углом. И эта точка точно соответствует направлению вниз.
Затем, нам нужно провести прямую из точки "вниз" так, чтобы она образовала угол под 45. Отметим пересечение этой прямой с линией горизонта как V3. Это третья точка схода, для линий под 45 к двум другим точкам схода.
Воспользуемся точкой схода V3, чтобы нарисовать диагональ нашего квадрата. Теперь положение дальней грани очевидно.
Как видим, мы совсем не угадали с дальней гранью в самом начале. Да, на рисунке может показаться, что что-то не то, но это самый настоящий квадрат, я гарантирую это. Для убедительности, давайте дорисуем его в куб.
И конечно же, все эти построения можно не делать, а на глаз определить положение точки "вниз" и затем на глаз поставить V3. А дальше рисовать с помощью V3 диагонали для примитивов.
С пропорциями в перспективе достаточно просто налажать, надеюсь описанный способ поможет исправить ситуацию.
Вот например, замечательный рисунок Xand'a, который мне очень нравится, но там беда с перспективой. Технически, все точки схода, все линии, все стоит правильно, но ошибка в пропорциях.
Способ выше, я придумал сам для себя, однако вполне возможно, что подобное давно используется или есть что-то лучше.
Если нужно, могу чуть позже в камменты скину случай для одной точки схода.