Моделювання по фотографіях
Дуже часто виникає потреба змоделювати реально існуючий об'єкт. Але, навіть якщо цей об'єкт знаходиться на робочому столі, можуть виникнути великі складнощі з перенесенням його в 3D-сцену.
Якщо це щось просте, доступне для інструментального вимірювання, проблем не виникає. Але якщо об'єкт має складну форму, наприклад органічну, то залишається модель або «на око», або по фотографіях.
Фотографії можна використовувати в якості бекграунду для моделювання, але при цьому неминуче виникають проблеми через перспективних спотворень. Боротися з перспективою можна по-всякому. Найпростіший і очевидний спосіб - застосувати модифікатор Taper до готової моделі. Але це не врятує від спотворення пропорцій на етапі моделювання.
Мені набагато більше подобається інший метод, який я тут і викладу.
Суть методу полягає в створенні на сцені камер, що відповідають положенням фотоапарата при зйомці. Цей метод також дозволяє легко накласти фототекстури. Отже, приступимо.
Крок 1. Заготівля фотографій
Як приклад я візьму моделювання гумової жаби.
Спершу треба зробити знімки з різних ракурсів.
Фотографії, природно, повинні бути без дисторсии, з відомим еквівалентною фокусною відстанню (перше можна поправити в фотошопі, друге вирахувати експериментальним шляхом). Для цього уроку я використовував цифрову камеру з фікс-об'єктивом 50мм (для моєї камери експериментальним шляхом обчислено ЕФР 88.473мм). Треба зробити знімки з таких ракурсів, щоб кожна деталь була видна як мінімум на двох знімках. Для полегшення юстирування віртуальних камер я помістив об'єкт на надруковану на принтері сітку.
У мене вийшли ось такі фотографії:
Для моделювання їх треба перевести в зручний для роботи вигляд - знизити контраст, вирівняти і привести до двійкового розміром. З контрастом все зрозуміло (це для зручності редагування, щоб сітка була видна), а ресайз вимагає уважності. Справа в тому, що, коли ми вирізаємо частина фотографії, ми змінюємо кут зору. Тому треба спершу вирізати потрібну квадратну частину зображення, вирахувати отриманий кут зору і записати. Не варто визначати кут зору по пропорціям! Лінійний і кутові розміри пов'язані тригонометричної функцією.
Кут обчислюється так:
HFOV = 2 * arctan ((36 * B) / (2 * A * F))
де:
HFOV - кут зору для вирізаного кадру;
A - розмір вихідного кадру по горизонталі;
B - розмір кадру після обрізки в пікселях (сторона квадрата);
F - еквівалентна фокусна відстань фотоапарата.
Для цих фотографій кути зору рівні 16.78 і 13.41 градусів. Висока точність визначення кутів має велике значення.
Крок 2. Підготовка сцени
Перше, що треба зробити для своєї зручності - задати аспект камери 1: 1. Я для цього в вікні Render ввожу однакові значення ширини і висоти кадру.
Потім треба створити мульти-матеріал з кількістю слотів за кількістю фотографій. Кожному подматеріалу треба вказати відповідну диффузную текстуру і 100% самосветімость.
Далі я створив на сцені копію своєї юстувальні сітки, на якій я фотографував об'єкт:
Крок 3. Установка камер
Виберемо самий «зручний» кадр з референсів. В даному випадку це вид справа.
Поставимо на сцену Target Camera. вкажемо соотвутствующий FOV, дамо камері назву, перекликається з обраної фотографією.
Додамо також Spot Light. розташований в тій же точці, що і камера, і дивиться в тому ж напрямку. Навіщо? Стане в нагоді при текстуруванні, про це пізніше. «Прив'яжемо» лампочку до камери і деактивувавши.
Перед камерою, на достатній відстані від неї, щоб не зачіпати об'єкт, треба створити Plane. привласнити йому мульти-матеріал і відповідний подматеріал.
Розмір Plane обчислюється за формулою:
Size = 2 * D * tan (HFOV / 2)
де:
Size - розмір Plane (довжина сторони);
D - відстань від камери до Plane;
HFOV - кут зору камери.
Тепер в одному з вьюпорте включимо зображення з камери і, при необхідності, активуємо режим Show Safe Frame. щоб не втрачати поле зору камери.
Plane зі своєю текстурою повинен точно збігатися з крайкою зображення в камері. «Прив'яжемо» Plane до камери. Тепер, як би ми не рухали камеру, зображення завжди залишиться прив'язаним до неї.
Тепер приблизно виберемо точку, в яку поставимо мету камери, і перемістимо камеру так, щоб юстіровочная сітка збіглася із зображенням в камері.
Для точного доведення можна використовувати кнопки управління камерою.
(Зверніть увагу, що у багатьох кнопок є кілька режимів, можна використовувати тільки ті, що тут показані).
Можна також акуратно змінювати координати і Roll камери за допомогою полів у нижній частині робочого вікна.
Процедуру треба повторити для інших кількох камер (в моєму випадку види зверху і зліва):
Тепер можна перевірити юстування камер, для чого провести лінії через деякі точки моделі (я провів через ніс і найвидатніші пальці):
Переконавшись, що точки збігаються для всіх камер, можна починати моделювання.
Крок 4. Нарешті, моделинг
При моделюванні дуже зручно ставити режим руху в площині екрану Screen.
Також зручно використовувати Axis Constraints.
Я вважаю за краще працювати з сплайнами і модифікатором Surface. У міру роботи додаю залишаються камери. При роботі з полігонами привласнюю їм матеріал з режимом Wire. щоб не затуляти фон.
(На цьому зображенні монтаж - в перспективному вигляді присвоєно звичайний матеріал, в інших - Wire)
Якщо потрібно збільшити зображення. можна скопіювати відповідну камеру і переключитися на неї. Тепер можна змінювати кут зору і повертати скопійоване камеру щодо себе, але не можна її рухати. Не можна змінювати параметри вихідної камери! Можна також змінювати кут зору вихідної камери. Зручно використовувати кнопки:
(Зверніть увагу, що у багатьох кнопок є кілька режимів, можна використовувати тільки ті, що тут показані).
Діючи за подібною методикою можна також повністю затекстуріть об'єкт з усіх боків. Але спершу треба зробити розгортку. Як робити розгортку - я тут уточнювати не буду, у кожного свій метод.
Після того, як розгортка готова, починається найцікавіше:
Беремо лампочку, прив'язану до цікавить нас камері, і починаємо налаштовувати. В налаштуваннях Advanced Effects включаємо Ambient Only. В налаштуваннях Spotlight Parameters вказуємо тип Rectangle і аспект 1. Ставимо галочку Overshot. задаємо кут Falloff / Field дорівнює куту зору камери. Як Projector Map вибираємо Bitmap фотографію з оригінальним дозволом і контрастом. Фарбуємо об'єкт в 100% білий колір і включаємо лампочку.
Відтепер ця лампочка працює як прожектор, який накладає колір на об'єкт з урахуванням перспективи (на відміну від Planar Mapping).
Тепер за допомогою рендеру переконуємося, що «текстура» лягла куди треба:
Залишилося перетворити освітлення в текстуру: виділяємо наш об'єкт і викликаємо вікно Render To Texture. Там додаємо елемент CompleteMap. ставимо бажаний нам розмір (рекомендую 2048, потім можна стиснути), переконуємося, що обраний режим Use Existing Channel. перевіряємо, щоб було вказано саме той канал UVW. в якому зберігається наша розгортка, і ставимо галочку Render To Files Only. Тепер Render. Зберігаємо отриману картинку і вимикаємо лампочку. Повторюємо для всіх інших камер. Тепер у нас є купа текстур.
Відкриваємо їх все в фотошопі, скидаємо в один документ як різні шари і мікшуємо:
Отриманий файл - наша текстура. Залишається підкоригувати текстурні координати, і готово!
- При управлінні камерами за допомогою кнопок ні в якому разі не можна помилятися.
Для настройки вихідної камери можна використовувати кнопки: Dolly Camera. Roll Camera. Orbit Camera. Truck Camera.
Для настройки камери, скопійований з основною для збільшення можна використовувати кнопки: Field-of-View. Pan Camera. Roll Camera.
- На виготовленої таким чином текстурі збережуться мерехтіння в різних місцях.
- При русі точки в одній з камер вона рухається по декількох осях в інших. Тому кожну точку доводиться рухати кілька разів, поки вона не виявиться саме там, де треба.
- Камери ніяк не прив'язані до вьюпорте, їх може бути як завгодно багато, можливо для кожної дрібної деталі. У кожному вьюпорте можна включати будь-яку камеру, перспективний або ізометричний вигляд без небезпеки збити бекграунд.
Якщо будуть які-небудь питання я із задоволенням відповім на них.
Уф. Серйозний підхід.
Але у мене теж великі сумніви, що він оптимальний навіть для такого завдання.
Я нейтралізує перспективні спотворення фотографуванням для креслень з максимальної відстані і максимальним зумом. Благо 12х на фотоапараті при 5 МП - можна спокійно фота з 30% розміром об'єкта від ширини кадру. Головне камеру тримати чітко по центру. Якщо спотворення все одно занадто великі виходять - можна фотографувати шматками, а потім склеїти воєдино
Нещодавно сам використовував подібну техніку моделлинг. Але справа була в тому, що крім габаритних розмірів, ширини бази і колії креслень зовсім не було. Було кілька хороших фото без даних про фокусі і без чітких фронтальних видів. Зробив приблизні креслення, болванку. Виставив колеса, ширину-висоту-довжину. Потім вибирав кадр, зводив на око персектіву камери (щоб колеса збігалися) і коригував Poly-сітку з видом прямо з камери (до речі зі сплайновой в даному випадку складніше). І все одно доводилося одну і ту ж точку кілька разів посувати, щоб на всіх видах вона стояла правильно. При цьому більш-менш ручатися можна тільки точки, що проходять по осі симетрії об'єкта або лежать в площині перпендикулярній однієї з осей.
Вообщем на мій погляд даний спосіб (основа способу вірніше) гарний тільки в випадках, коли об'єкт важко поміряти і сфотографувати як потрібно самому.
І як спосіб отримання текстур досить цікавий.
Ven - полдцать приблизно років тому робили презентаційний ролик про-ні-скажу-що, головна вимога було - вразити кого-треба. Перша версія ролика була забракована творці не-скажу-чого - і тут не так, і це так не будують, і тут пропорції не такі, і блищить занадто, а тут навпаки. Загалом, все довелося переробляти.
Д.Б. - я запитав бо думав, що вони Вас чимось не влаштували. Я хочу присвятити трошки матеріалу в новій книжці якраз IM, але поки виходить не так гладко, як в Тутор до нього. А в PM я взагалі не в'їхав, хоча за можливостями (наприклад, автоматична генерація по хмарі точок, як в прогах до сканерів) він, схоже, покруче буде. Але фейс. ужос :)