В работе 3D моделера очень часто бывает, что информация по объекту, который подлежит трехмерному моделированию, очень скудна. Например, совсем нет размеров элементов, а есть только его габаритные размеры. Так почти всегда бывает с мебелью, потому что при выборе мебели всех интересуют именно габаритные размеры, а детальные чертежи не выходят за пределы фабрик-изготовителей.

Или при моделировании архитектурных объектов частенько в наличии есть какой-никакой план этажей, но полностью отсутствует информация о фасадах. А ведь именно фасады и предстоит моделировать и планировочные решения в данном случае не представляют практически никакой пользы.
Что же делать?
Сегодня в этом уроке я решил рассказать о методе, который использую в своей повседневной работе. Этот метод не является ни моим изобретением, ни ноу-хау, известен тысячу лет, однако многие специалисты при создании 3D моделей сталкиваются с трудностями при определении правильных размеров. Метод основывается на вычислении правильных пропорций, а не точных размеров. Правда, в идеальном случае, размеры будут очень точными. Как бы то ни было, метод позволяет смоделировать почти идеально выглядящую модель.
Алгоритм
Алгоритм определения размеров состоит из нескольких шагов:
- Взять 1 размер предмета, который мы точно или приблизительно знаем.
- Измерить отношение числового значения размера к его размеру в пикселях
- Составить пропорцию.
- Измерить любой интересный для нас параметр объекта
- Пользуясь составленной пропорцией вычислить реальное значение параметра
Как делать?
Первая задача, которую необходимо решить — получить хотя бы один размер, примерно соответствующий истине. В случае изображений мебели выше, такие размеры у меня уже есть — это габаритные размеры. Больше мне не нужно, дополнительные размеры просто сэкономят мне время, так как мне не придется их вычислять.
Возьмем вот такую схему дивана:

Я открываю это изображение в Photoshop’е, но это может быть любой другой редактор, в котором есть инструмент Ruler tool(«Линейка»), который позволяет измерять расстояние.
В Photoshop’е я работаю с пикселями, для этого нужно включить отображение линеек (Ctrl+R) и в меню, открывшемся по правому клику выбрать Pixels.

Следующим шагом я измеряю, скольким пикселям соответствует указанный на изображении размер. Для этого использую уже упомянутый Ruler tool в Photoshop’е.

И следующим шагом просто измеряю горизонтальный размер, удерживая при этом клавишу Shift, чтобы измерять строго по горизонтали. При этом результаты измерений отображаются в окне «Info«.

Итак, мы получили, что расстояние в 86″ равно 303 пикселям.
Теперь чтобы узнать любой размер, указанный на этом изображении мне достаточно составить простейшую пропорцию. Измеряю в Photoshop’е вертикальный размер дивана, для удобства использую гайды (guides):

Составляю простейшую пропорцию:
303px = 86
110px = X
Отсюда X = 110px * 86″ / 303px = 31.2″ Немного округляю и получаю 31″ = 78.74 см.
Из-за небольшого размера исходного изображения ошибка измерения на 1 пиксель дает погрешность в 0,284 дюйма, что равно 7 мм. Но в целом, метод сильно упрощает жизнь, избавляя меня от вставки изображения в 3D редактор и моделированию исходя из изображения со всеми вытекающими отсюда неудобствами.
Проверка боем
Как-то шел мимо «сталинского» дома недалеко от места проживания и подумал, что фасад такого дома хорошее упражнения для начинающих 3D моделеров и визуализаторов. Недолго думая, я сделал несколько фотографий с разных сторон. Бонусом послужило хорошее разрешение моего телефона (40Mpix), спасибо Nokia.
По щелчку на картинке — полноразмерные фото.



Я, как, предполагаю, и вы, почти никогда не ношу с собой рулетку, поэтому измерить какой-либо элемент этого дома я не смог. Казалось бы это тупик, однако я знал адрес этого дома, поэтому просто, найдя дом на Яндекс.Картах, я узнал примерную длину фасада и взял для удобства ее равной 22 метрам.

Есть один размер. Все что нужно чтобы узнать остальные — измерить их. Для этого я загрузил фронтальную фотографию в Photoshop и с помощью инструмента Edit->Transform->Perspective убрал перспективные искажения, сделав вертикали параллельными и вертикальными.

Теперь, зная ширину здания и имея возможность измерять по фотографии без искажений, можно действовать по такому же алгоритму, как я использовал с диваном выше по тексту.
Может быть, ширина здания и не 22 метра, а 20 или 23 метра. Это в данном случае не главное. Главное, что мы можем узнать любой размер и он будет пропорционально соответствовать оригинальному зданию. А сделать всю немного меньше или немного больше всегда можно.
А что если бы я не знал, где находится это здание, спросите вы? Я бы мог отталкиваться от высоты этажа, в зданиях подобного типа высота потолков около 3-3,5 метров. Или от размера автомобиля, стоящего наиболее близко к зданию. Или от размера любого другого предмета, размер которого стандартен или я могу его узнать с определенной степенью точности. Главное не супер-точный размер, а пропорциональность модели и относительное соответствие ее размеров оригиналу. Даже +/- 1 метр при пропорциональной модели никто не заметит, я проверял. 🙂
Спасибо за внимание, надеюсь, этот метод вам пригодится.
Свои комментарии вы можете оставить внизу, в специальной форме.