3D-проєкція

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Шаблон:Вичитати Шаблон:Проєкції 3D проєкція — це будь-який спосіб відображення тривимірних точок на двовимірній площині. Оскільки більшість сучасних методів для відображення графічних даних базуються на планарних (піксельна інформація з декількох бітових площин) двомірних середовищах, використання цього типу проєкції широко поширене, особливо в галузі комп'ютерної графіки, інженерії та креслення.

Ортогональна проєкція

Шаблон:Main Коли людське око дивиться на сцену, віддалені об'єкти виглядають меншими, ніж об'єкти поруч. Ортогональна проєкція нехтує цим ефектом, що дозволяє створювати креслення в масштабі для будівництва і машинобудування.

Ортогональна проєкція — це невеликий набір перетворень, який часто використовується, щоб показати профіль, деталі або точні розміри тривимірного об'єкта.

Якщо нормаль площини перегляду (напрямок камери) паралельна одній з координатних осей (тобто, X, Y або осі Z), то математичне перетворення виглядає наступним чином; Для проєктування 3D-точки ax, ay, az на 2D точку bx, by ортогональною проєкцією, яка паралельна осі Y (вид профілю), то можна використати наступні рівняння:

bx=sxax+cx
by=szaz+cz

де вектор s — довільний масштабний коефіцієнт, а c являє собою довільне зміщення. Ці константи не є обов'язковими, і можуть бути використані, щоб правильно вирівняти вікно перегляду. При використанні матричного множення, рівняння мають такий вигляд:

[bxby]=[sx0000sz][axayaz]+[cxcz].

У той час як орфографічно проєктовані зображення являють собою тривимірну природу проєктованого об'єкта, вони не уявляють об'єкт, як це було б записано фотографічно або, як це сприймається глядачем, який безпосередньо спостерігає за ним. Зокрема, паралельні довжини у всіх точках на ортогонально проєктованому зображенні одного і того ж масштабу, незалежно від того, чи є вони далеко або близько до віртуального перегляду. В результаті, довжини біля до глядача не малюються в ракурсі, як вони б виглядали в перспективному проєктуванні.

Слабка перспективна проєкція

«Слабка» перспективна проєкція використовує ті ж принципи ортогональної проєкції, але вимагає коефіцієнт масштабування, який необхідно вказати, таким чином гарантуючи, що ближчі об'єкти здаються більшими в проєкції, і навпаки. Це можна розглядати як гібрид між ортогональною і перспективною проєкціями, і описується або як перспективна проєкція з окремими глибинами точки Zi заміненими середнім постійним глибини Zave,[1] або просто як ортогональна проєкція з масштабуванням.[2]

Таким чином, слабко-перспективна модель апроксимує перспективну проєкцію, використовуючи простішу модель, схожу на чисту (немасштабовану) ортогональну проєкцію. Це розумне зближення, коли глибина об'єкта уздовж лінії візування мала в порівнянні з відстанню від камери, а поле зору маленьке. При цих умовах можна припустити, що всі точки на 3D-об'єкті знаходяться на однаковій відстані Zave від камери, без суттєвих помилок у проєкції (в порівнянні з повною перспективною моделлю).

Перспективна проєкція

Шаблон:See also Коли людське око бачить сцену, об'єкти на відстані здаються менше, ніж об'єкти поруч — це відомо як перспектива. У той час як ортогональна проєкція ігнорує цей ефект, щоб дозволити точні вимірювання, перспективна проєкція показує, що віддалені об'єкти менше, щоб забезпечити додатковий реалізм.

Перспективна проєкція вимагає більш активну участь визначення в порівнянні з ортогональною проєкцією. Концептуальною допомогою у розумінні механіки цієї проєкції є уявлення 2D проєкції, ніби об'єкт або об'єкти в цей час розглядається через видошукач камери. Положення камери, орієнтація і поле зору управління поведінкою перетворення проєкції. Наступні змінні визначені для опису цієї трансформації:

  • 𝐚x,y,z — 3D-положення точки A, яка повинна бути спроєктована.
  • 𝐜x,y,z — 3D-положення точки C, що представляє камеру.
  • θx,y,z — орієнтація камери (представлена кутами Ейлера).
  • 𝐞x,y,z — глядацьке положення щодо поверхні дисплея[3] яка проходить через точку C, яка представляє камеру.

Що призводить до:

  • 𝐛x,y — 2D-проєкція 𝐚.

Коли 𝐜x,y,z=0,0,0, та θx,y,z=0,0,0, 3D-вектор 1,2,0 проєктується на 2D вектор 1,2.

В іншому випадку, для обчислення 𝐛x,y ми спочатку визначимо вектор 𝐝x,y,z як положення точки A стосовно системи координат, визначеній камерою, з початком в C, і повернутої на θ відносно початкової системи координат. Це досягається шляхом віднімання матриці C з A і потім застосування обертання по θ. Це перетворення часто називають перетворенням камери, і воно може бути виражене, висловлюючи обертання в термінах обертань навколо осей X, Y, і Z (ці розрахунки мають на увазі те, що осі впорядковані як лівостороння система осей): [4] [5]

[𝐝x𝐝y𝐝z]=[1000cos(θx)sin(θx)0sin(θx)cos(θx)][cos(θy)0sin(θy)010sin(θy)0cos(θy)][cos(θz)sin(θz)0sin(θz)cos(θz)0001]([𝐚x𝐚y𝐚z][𝐜x𝐜y𝐜z])

Це уявлення відповідає обертанню на три кута Ейлера, використовуючи конвенцію XYZ, яку можна інтерпретувати як «обертання навколо зовнішніх осей (осі сцени) в порядку Z, Y, X (читання справа наліво)» або «поворот навколо власних осей (осі камери) в порядку X, Y, Z (читання зліва-направо)». Зверніть увагу, що якщо камера не повертається (θx,y,z=0,0,0), то матриці випадають (як тотожності), і це зводиться до простого зрушення: 𝐝=𝐚𝐜.

Як альтернатива, без використання матриць:

𝐝x=cy(sz𝐲+cz𝐱)sy𝐳𝐝y=sx(cy𝐳+sy(sz𝐲+cz𝐱))+cx(cz𝐲sz𝐱)𝐝z=cx(cy𝐳+sy(sz𝐲+cz𝐱))sx(cz𝐲sz𝐱)
(де 𝐱 = axcx і т. д., cα = cos(θα), sα = sin(θα)).

Це перетворення точки потім може проєктуватися на 2D площині, використовуючи формулу (тут x/у, використовується як площина проєкції; у літературі також може використовуватися x/z):[6]

𝐛x=𝐞z𝐝z𝐝x𝐞x𝐛y=𝐞z𝐝z𝐝y𝐞y.

Або в матричній формі з використанням однорідних координат, система

[𝐟x𝐟y𝐟z𝐟w]=[10𝐞x𝐞z001𝐞y𝐞z00010001/𝐞z0][𝐝x𝐝y𝐝z1]

в поєднанні з аргументами, використання подібних трикутників призводить до поділу однорідними координатами, даючи

𝐛x=𝐟x/𝐟w𝐛y=𝐟y/𝐟w.

Відстань від поверхні дисплея до глядача, 𝐞z, безпосередньо пов'язана з полем зору, де α=2tan1(1/𝐞z) це розглянутий кут.

Наведені вище рівняння можна переписати таким чином:

𝐛x=(𝐝x𝐬x)/(𝐝z𝐫x)𝐫z𝐛y=(𝐝y𝐬y)/(𝐝z𝐫y)𝐫z.

В якому 𝐬x,y — розмір дисплея, 𝐫x,y — розмір робочої поверхні диска (наприклад CCD), 𝐫z відстань від поверхні запису центру камери, та 𝐝z це відстань, від 3D точки проєктування, до ока користувача.

Подальші операції відсікання і масштабування можуть бути необхідними для відображення 2D площини на будь-якому дисплеї.

Схема

Для того, щоб визначити, який x-координатний екран відповідає точці, в Ax,Az помножимо координати точки на:

Bx=AxBzAz

де

Bx x координата екрана.
Ax x координата моделі.
Bz фокусна відстань — осьова відстань від Шаблон:Нп до площини зображення.
Az це відстань до об'єкта.

Примітки

Шаблон:Reflist

Посилання

Шаблон:Commons category