Перспектив проекц дахь z координатыг хэрхэн тооцоолох вэ. Олон зургийн геометрийн шинж чанарууд

Цэгний онцлогийг хянах, камерын шалгалт тохируулга, 3D объектыг сэргээн засварлах аргуудыг нарийвчлан тайлбарлахын тулд хэтийн төлөвийн дизайны загварыг нэвтрүүлэх, энэхүү хувиргалтын геометрийн шинж чанарыг тайлбарлах шаардлагатай. ашиглан олж авсан хэд хэдэн зургийн цэгүүд хэтийн төлөвийн төсөөлөл, дотор байна онцгой харилцааЭпиполяр геометрээр дүрслэгдсэн бие биетэйгээ. Эдгээр харилцааны загваруудыг нарийвчлан судлах ёстой, учир нь Бараг бүх гурван хэмжээст сэргээн босгох аргууд нь холбогдох загваруудын үнэлгээг шаарддаг бөгөөд тэдгээрийн шинж чанарт тулгуурладаг.

Ер нь гэсэн таамаглалыг тусад нь тэмдэглэх нь зүйтэй эх зургуудижил дүр зургийг авсан, өөрөөр хэлбэл. зураг бүр нь тодорхой камерын дүр зураг юм. Тиймээс тайлбарлахад хялбар болгох үүднээс харах үзэл баримтлалыг олж авсан холбогдох камерын загвартай дүрс болгон танилцуулав.

Хэтийн төлөвийн төсөөлөл

Хэтийн хэтийн төлөвийн загвар нь хамгийн тохиромжтой нүхний камертай тохирч байна. Энэхүү загвар нь орчин үеийн ихэнх гэрэл зураг, видео камерын зураг бүтээх үйл явцтай маш нягт нийцдэг. Гэсэн хэдий ч орчин үеийн оптикийн хязгаарлалтын улмаас бодит үйл явц нь нүхний камерын загвараас арай өөр юм. Бодит үйл явц ба загвар хоорондын ялгааг гажуудал гэж нэрлээд тусад нь загварчилдаг.

Хамгийн энгийн нүхний камерын загвар нь проекцын төв болон зургийн хавтгайн байрлалаар бүрэн дүрслэгдсэн байдаг тул тохиромжтой. Иймээс зураг дээрх дурын үзэгдлийн цэгийн проекцийг проекцын төв ба үзэгдлийн цэгийг зургийн хавтгайтай холбосон цацрагийн огтлолцол хэлбэрээр олж болно.

Хэтийн төлөвийн төсөөллийн хамгийн энгийн загвар

Камерын проекцын төв (фокус) нь координатын системийн эхэнд байрлах ба зургийн хавтгай нь Z=1 хавтгайтай давхцах хамгийн энгийн тохиолдлыг авч үзье. 3 дахь цэгийн координат (X,Y,Z) байг хэмжээст орон зай, ба (x,y) нь энэ цэгийн I зураг дээрх проекц юм. Энэ тохиолдолд хэтийн төлөвийн төсөөллийг дараах тэгшитгэлээр тодорхойлно.

IN матриц хэлбэрНэг төрлийн координатыг ашиглан эдгээр тэгшитгэлийг дараах байдлаар дахин бичнэ.

(2.2)

Проекцийн төвөөс 1-ийн зайд байрлах ба оптик тэнхлэгт перпендикуляр байрлах хавтгайг хамгийн тохиромжтой дүрсний хавтгай гэж нэрлэдэг. Оптик тэнхлэг нь дүрсний хамгийн тохиромжтой хавтгайг үндсэн цэг гэж нэрлэдэг c цэгээр огтолдог. Хэтийн төлөвийн төсөөллийн хамгийн энгийн жишээг Зураг дээр үзүүлэв. 1.

Дотоод камерын тохируулга

Хэтийн төлөвийн проекцын хамгийн энгийн тохиолдол бараг үргэлж бодит камертай таардаггүй. Проекцийн төвөөс зургийн хавтгай хүртэлх зай, i.e. f-ээр тэмдэглэсэн фокусын урт нь ихэвчлэн 1-тэй тэнцүү биш байдаг. Мөн зургийн хавтгай дахь цэгийн координатууд үнэмлэхүй координатуудтай давхцахгүй байж болно. Дижитал камер ашиглах үед зураг дээрх цэгийн координат ба хамгийн тохиромжтой хавтгай дээрх цэгийн үнэмлэхүй координат хоорондын хамаарлыг матрицын пикселийн хэлбэр, хэмжээгээр тодорхойлно.

Дижитал камерын матрицын пикселийн хэмжээг p x, p y, пикселийн налуу өнцгийг α, гол цэгийг 2-р зураг гэж тэмдэглэе. Дараа нь хамгийн тохиромжтой хавтгай дээрх (x R , y R) цэгт харгалзах зургийн (x,y) цэгийн координатыг дараах илэрхийллээр тодорхойлно.

(2.3)

Хэрэв бид f x ,f y гэж тэмдэглэвэл фокусын урт f, пикселийн өргөн ба өндрөөр хэмжиж, tan(α)*f/p y-г s гэж тэмдэглэвэл 2.3 томъёог дараах хэлбэрт хөрвүүлнэ.

(2.4)

K матрицыг матриц гэж нэрлэдэг дотоод тохируулгакамерууд. Ихэнх тохиолдолд бодит дижитал камерт пикселийн өнцөг нь шулуунтай ойрхон байдаг, өөрөөр хэлбэл. параметр s=0 байх ба пикселийн өргөн ба өндөр тэнцүү байна. Үндсэн цэг нь ихэвчлэн зургийн төвд байрладаг. Тиймээс K матрицыг дараах байдлаар бичиж болно.

(2.5)

K матрицын хэлбэрийн талаархи энэхүү таамаглал нь камерын дотоод тохируулгыг тодорхойлох алгоритмыг хялбарчлах, мөн 3D сэргээн босгох аргын чанар, үр ашгийг үнэлэхэд шаардлагатай синтетик зургийн загварчлалд өргөн хэрэглэгддэг.

Гадаад камерын шалгалт тохируулга

M нь 3 хэмжээст орон зай дахь үзэгдлийн цэг байг. Аливаа хөдөлгөөн нь орон зайн Евклидийн хувирал тул нэгэн төрлийн координатаар дараах байдлаар илэрхийлэгдэнэ.

(2.6)

Энд R нь эргэлтийн матриц, T= T нь орчуулгын вектор юм.

Үзэгдэлтэй харьцуулахад камерын хөдөлгөөн нь ижил байна урвуу хөдөлгөөнкамертай харьцуулахад үзэгдлийн цэгүүд тэнцүү байна:

(2.7)

Энд R, T нь эргэлтийн матриц ба үзэгдэлтэй харьцуулахад камерын хөдөлгөөний вектор юм. С матрицыг матриц гэж нэрлэдэг гадаад шалгалт тохируулгакамерууд. С -1 матрицыг матриц гэж нэрлэдэг камерын хөдөлгөөн. Тиймээс гадаад камерын шалгалт тохируулгын матриц нь үзэгдлийн цэгүүдийн координатыг үзэгдлийн координатын системээс камертай холбоотой координатын систем рүү хөрвүүлдэг.

Хэтийн төлөвийн төсөөллийн бүрэн загвар

2.1, 2.4, 2.7 илэрхийллээс бид дурын чиг баримжаа, орон зайд байрлалтай дурын камерын дурын хэтийн төлөвийн илэрхийлэлийг гаргаж болно.

Өмнөх тэмдэглэгээг харгалзан илүү товч хэлбэрээр энэ томъёог дараах байдлаар бичиж болно.

P матрицыг камерын проекцийн матриц гэж нэрлэдэг.

Ерөнхий хэтийн төлөвийн хувиргалттай зүйрлэвэл эхлээд хавтгайн перспектив хувиргалтын хамгийн энгийн тохиолдлыг авч үзье. p хавтгай нь Z=0 хавтгайтай давхцаж, дараа нь нэгэн төрлийн байна 3D координаттүүний аль нэг цэг M=. Проекцийн P матрицтай дурын камерын хувьд онгоцны хэтийн өөрчлөлтийг 3*3 матрицаар дүрсэлдэг.


3 хэмжээст орон зайн аль ч хавтгай нь эргэлт ба хөрвүүлгийн евклидийн хувиргалтаар Z = 0 хавтгайд шилжиж болох бөгөөд энэ нь P камерын матрицыг хувиргалт L матрицаар үржүүлсэнтэй тэнцэх бөгөөд орон зайд дурын хавтгайг хэтийн төлөвт харуулах болно. -аар тайлбарлав шугаман хувиргалт 3*3 матрицтай.

Перспективийн хавтгай хувиргалтыг бас нэрлэдэг гомограф. Матриц хэлбэрээр хавтгайн хэтийн хувирлыг дараах байдлаар бичнэ m=HM.

Хоёр зургийн геометр

Бүх эх сурвалжийн зураг дээр авсан дүр зураг нь хөдөлгөөнгүй гэж тооцогддог тул өөр өөр хүрээн дээрх үзэгдлийн проекцуудын харьцангуй байрлал нь дур зоргоороо өөрчлөгдөх боломжгүй юм. Цэгийн төсөөллийн байршилд тавигдах хязгаарлалт нь камерын параметрүүд болон бие биентэйгээ харьцуулахад байрлалаас шууд хамаардаг. Тиймээс ийм хязгаарлалтын загварыг тодорхойлох нь зураг авсан камеруудын харьцангуй байрлалын талаар зарим мэдээллийг өгдөг.

Хэтийн төлөвийн хавтгай хувиргалт

Хэрэв хоёр камерын төвүүд давхцаж байвал хоёр камерын зургийн хавтгай дээрх цэгүүд нь онгоцны хэтийн төлөвийн өөрчлөлтөөр бие биедээ хөрвүүлэгддэг. Энэ тохиолдолд зураг хоорондын цэгүүдийн хувирал нь 3 хэмжээст үзэгдлийн хэлбэрээс хамаарахгүй, зөвхөн харилцан байр суурьзургийн онгоцууд.

Хэрэв үзэгдэл бүхэлдээ эсвэл түүний хэсэг нь онгоц бол түүний зургууд асаалттай янз бүрийн төрөлдавхцаагүй камертай төвүүдийг гомографийн хувиргалтаар бие биедээ хувиргаж болно. p нь ажиглагдсан хавтгай, H 1 нь p хавтгай ба зургийн хоорондох гомографийн хувирал гэж үзье би 1, H 2 - p хавтгай ба дүрс хоорондын гомографийн хувиргалт би 2. Дараа нь зураг хоорондын гомографийн хувиргалт H 12 би 1Тэгээд би 2дараах байдлаар гаргаж болно:

H 12 нь p хавтгайн параметрээс хамаардаггүй тул орон зай дахь координатын системээс хамаардаггүй.

3D цэгийн координатыг проекцоос нь тодорхойлох ихэнх аргууд болон 3D дүр зургийг дахин бүтээх аргууд нь камерын төв нь харагдац хооронд хөдөлдөг гэсэн таамаглал дээр суурилдаг. Тиймээс, хэд хэдэн төрлийн камерын төвүүд давхцаж байвал эдгээр аргууд нь буруу үр дүнг өгөх болно. Ийм камерын тохиргоог тусгай аргаар илрүүлж, зохицуулах ёстой.

Гомографийн хувиргалт нь нэгэн төрлийн координатаар бичигдсэн тул H матрицыг масштаб хүртэл тодорхойлно. Энэ нь эрх чөлөөний 8 градустай бөгөөд 8 хувьсагчаар параметрлэгддэг. Мэдэгдэж буй хос бүр харгалзах цэгүүд м 1Тэгээд м 2эхний болон хоёр дахь зурагт тус тус 2-ыг өгдөг шугаман тэгшитгэлматрицын элементүүдээс H. Иймд 8 үл мэдэгдэх 8 тэгшитгэлийн шугаман тэгшитгэлийн системийг бүрдүүлэхэд мэдэгдэж буй 4 хос харгалзах цэг хангалттай. Энэ системийн дагуу гурван цэг нь нэг шулуун дээр байхгүй бол гомографи Н-ийг өвөрмөц байдлаар тодорхойлж болно.

Үндсэн матриц

Хоёр төрлийн камерын төвүүд давхцахгүй байгаа тохиолдлыг авч үзье. Болъё C 1Тэгээд C 2- хоёр камерын төвүүд, M - үзэгдлийн 3 хэмжээст цэг, м 1Тэгээд м 2- эхний болон хоёр дахь зураг дээрх М цэгийн проекцууд. М цэг ба камеруудын төвүүдийг дайран өнгөрөх онгоцыг P гэж үзье C 1Тэгээд C 2. P хавтгай нь шулуун шугамын дагуу эхний болон хоёр дахь үзэгдэх дүрсний хавтгайг огтолж байна л 1Тэгээд л 2. Цацрагаас хойш C 1 MТэгээд C 2 M P хавтгайд хэвтэж байвал цэгүүд нь тодорхой байна м 1Тэгээд м 2шулуун шугам дээр хэвтэх л 1Тэгээд л 2тус тус. Π хавтгайд байрлах дурын M цэгийн хоёр зураг дээрх проекцууд нь шулуун шугам дээр байх ёстой гэсэн ерөнхий мэдэгдлийг бид өгч болно. л 1Тэгээд л 2. Эдгээр шугамыг эпиполяр шугам гэж нэрлэдэг. P хавтгайг эпиполяр хавтгай гэж нэрлэдэг.

Нэг үзэгдлийн хоёр үзэмжийг стерео хос, сегмент гэж нэрлэдэг C 1 C 2, камеруудын төвүүдийг холбохыг стерео хосын суурь (суурь) эсвэл стерео суурь гэж нэрлэдэг. Аливаа эпиполяр онгоц сегментээр дамждаг C 1 C 2. Болъё C 1 C 2эхний болон хоёр дахь зургийг цэгээр огтолж байна e 1Тэгээд д 2тус тус. Оноо e 1Тэгээд д 2эпиполяр цэг буюу эпипол гэж нэрлэдэг. Бүх эпиполяр шугамууд цэгүүд дээр огтлолцдог e 1Тэгээд д 2эхний болон хоёр дахь зураг дээр тус тус. Эпиполяр хавтгайн багц нь стерео суурийн дагуу огтлолцсон цацраг юм C 1 C 2. Хоёр зураг дээрх олон эпиполяр шугамууд нь мөн огтлолцсон шулуун шугамуудын багцыг төлөөлдөг e 1Тэгээд д 2 .

Оноо м 1Тэгээд м 2ижил үзэгдлийн цэгийн проекцууд бол харгалзах гэж нэрлэдэг M. Эпиполяр шугам л 1Тэгээд л 2Хэрэв тэдгээр нь ижил эпиполяр P хавтгайд орвол харгалзах гэж нэрлэдэг. Хэрэв эпиполяр P хавтгай нь цэгээр дамжин өнгөрвөл. м 1, дараа нь эпиполяр шугамууд л 1Тэгээд л 2, дотор нь хэвтэж байгааг цэгт харгалзах гэж нэрлэдэг м 1.

Харгалзах цэгүүдийн байрлалыг хязгаарлах м 1Тэгээд м 2Эпиполяр геометрээс үүссэн , дараах байдлаар томъёолж болно: цэг м 2, харгалзах м 1, эпиполяр шугам дээр хэвтэх ёстой л 2, харгалзах м 1. Энэ нөхцлийг эпиполяр хязгаарлалт гэж нэрлэдэг. Нэг төрлийн координатуудад цэг байх нөхцөл мшугаман дээр хэвтэж байна лгэж бичсэн l T m=0. Эпиполяр шугам нь мөн эпиполяр цэгээр дамждаг. Цэгүүдийг дайран өнгөрөх шулууны тэгшитгэл м 1Тэгээд e 1дараах байдлаар бичиж болно.

l 1 ~ x m 1,

Хаана x- 3*3 хэмжээтэй тэгш хэмийн эсрэг матриц. x м 1 - вектор бүтээгдэхүүн м 1Тэгээд e 1.

Харгалзах эпиполяр шугамын хувьд л 1Тэгээд л 2баруун:

Хаана P+- P матрицын псевдоинверси.

F матрицыг үндсэн матриц гэж нэрлэдэг. Тэр төлөөлж байна шугаман оператор, цэг бүрт харгалзах м 1түүний харгалзах эпиполяр шугам л 2. Харгалзах цэг бүрийн хувьд м 1Тэгээд м 2зөв

m T 2 Fm 1 =0

Энэ нь үндсэн матрицаар дамжуулан эпиполяр хязгаарлалтын томъёолол юм.

Үндсэн матриц нь 7 градусын эрх чөлөөтэй. Холбогдох цэг бүр м 1Тэгээд м 2матрицын элементүүдийн нэг шугаман тэгшитгэлийг тодорхойлдог тул үүнийг мэдэгдэж буй 7 хос харгалзах цэгээс тооцоолж болно.

Эпиполярын хязгаарлалт нь хоёр төрлийн хамгийн тохиромжтой хавтгайд байрлах дурын хос цэгүүдэд хүчинтэй. Хэрэв дотоод тохируулгын матрицууд мэдэгдэж байгаа бол K 1Тэгээд К2Энэ хоёр төрлийн камерын хувьд хамгийн тохиромжтой хавтгай дээрх харгалзах цэгүүдийн эпиполяр хязгаарлалтыг дараах байдлаар бичнэ.

E матрицыг нэрлэнэ ач холбогдолтойматриц. Камеруудын харьцангуй байрлалаас чухал матрицыг олж авах боломжтой гэдгийг харуулж байна.

Болъё P 1 =(I|0)Тэгээд P 2 =(R|-RT)- K = I тохируулгатай хоёр дизайны матриц. Дараа нь хоёр камерын хамгийн тохиромжтой хавтгайн дизайны тэгшитгэлийг дараах хэлбэрээр бичнэ.

Цэгтэй харгалзах хоёр дахь үзэгдэх эпиполяр шугамыг олъё м" 1эхний дээр. Үүнийг хийхийн тулд туяа дээр байрлах хоёр цэгийг хоёр дахь үзэл бодол дээр гаргахад хангалттай (C 1 ,m" 1)хоёр дахь харагдац руу, жишээлбэл, эхний камерын төв хэсэгт (0,0,0,1) Тмөн хязгааргүй хавтгай дээрх цэг (x" 1 ,y" 1 ,z" 1 ,0) Т. Эдгээр цэгүүдийн төсөөлөл нь -RT, ба болно R(x" 1 ,y" 1 ,z" 1 ,0) Т. Эпиполяр шугамын тэгшитгэл л 2, эдгээр хоёр цэгийг дайран өнгөрөх нь вектор үржвэрээр өгөгдсөн:

l 2 =RT×R(x" 1 ,y" 1 ,z" 1) T =R(T×(x" 1 ,y" 1 ,z" 1) T)

Матриц хэлбэрээр вектор нь бүтээгдэхүүн биш юм T×(x" 1 ,y" 1 ,z" 1) Т S матрицыг ашиглан бичиж болно:

Дараа нь хамгийн тохиромжтой хавтгай дээрх цэгүүдийн эпиполяр хязгаарлалтыг дараах байдлаар бичнэ.

Хоёр камерын гадаад шалгалт тохируулгын параметрээр чухал матрицыг илэрхийлэх нь камеруудын харьцангуй байрлалыг тооцоолоход хэрэглэгддэг.

Гурав ба түүнээс дээш зургийн геометрийн шинж чанарууд

Болъё C 1,C 2Тэгээд C 3- ижил гурван хэмжээст үзэгдлийн гурван үзэгдлийн төвүүд. Энэ тохиолдолд аль ч хос зүйлийн харгалзах цэгүүдэд эпиполярын хязгаарлалт тавьдаг. Хэрэв хоёр цэгийн төсөөлөл мэдэгдэж байвал м 1Тэгээд м 2Эхний болон хоёр дахь харагдац руу, дараа нь гурав дахь зураг руу проекцын байрлалыг цэгүүдэд тохирох хоёр эпиполяр үзлийн огтлолцол хэлбэрээр олж болно. м 1Тэгээд м 2.

Мэдэгдэж байгаа хоёр төсөөллийн дагуу м 1Тэгээд м 2Мэдэгдэж буй шалгалт тохируулгатай хоёр зургийг ашиглан орон зай дахь М цэгийн байрлалыг тодорхойлж болно. Тиймээс, хэрэв гуравдахь зургийн тохируулга нь мэдэгдэж байгаа бол М цэгийн гурав дахь зураг руу проекцийг энгийн проекцоор тодорхойлж болно.

Хоёроос дээш зураг дээрх харгалзах цэгүүдийн байрлалд тавигдах хязгаарлалтыг мөн бичиж болно шугаман хэлбэр. Гурван төрлийн хувьд эдгээр хязгаарлалтыг трифокал тензор хэлбэрээр, дөрвөн төрлийн хувьд квадрифокал тензор хэлбэрээр бичдэг. Гэсэн хэдий ч эдгээр хязгаарлалтыг тооцоолох нь проекцын орон зайд бүх гурваас дөрвөн харагдацын хэмжигдэхүүнийг тооцоолохтой тэнцүү юм. Эдгээр төрлийн хязгаарлалтыг энэ ажилд ашиглаагүй тул илүү дэлгэрэнгүй авч үзэхгүй.

Олон жилийн бүтээлүүд. Волошин Максимилиан. Яруу найрагчийн эр зориг. 1. Шүлгийг гадаадад илгээсэн текст шиг засварлах: Хуурайшилт, тод байдал, дарамт - үг бүр сэрэмжтэй байна.

Хатуу, давчуу чулуун дээр үсгээр үсгээр таслах: Тэрнээс хэмнэлттэй үгс, тэдний хүч илүү хүчтэй болно. Бодлын сайн дурын цэнэг нь чимээгүй бадагтай тэнцүү юм.

"Гоо сайхан", "Урам зориг" гэсэн үгсийг толь бичгээс арилгана - яруу найрагч: Үнэн, загвар, төлөвлөгөө, дүйцэхүйц, товч бөгөөд үнэн зөвийг ойлгодог. Ухаантай, хүнд хэцүү урлал бол яруу найрагчийн урам зориг, хүндэтгэл юм: Дүлий-дүлий зүйлд, трансцендент сонор сэрэмжийг хурцална. Волошин М.А. Номын сан: Орёлын бүс нутгийн шинжлэх ухааны бүх нийтийн номын сан нийтийн номын сантэд. I.A. Бунина. - М., ; Сонгосон бүтээлүүд: 2 боть.

М., ; Улаан утаа: түүхүүд. - М., ; Тагнуулын компаниас Гладышев: Түүхүүд. - М., ; Эшелон; Зайлшгүй байдал: Зохиолууд. Тэрээр Мари, Удмурт яруу найрагчдын орчуулгыг их хийсэн. Би ч үе үе зохиолд хүчээ сорьсон. Оп. Максимилиан Александрович Волошин () - нэг хамгийн агуу яруу найрагчид 20-р зууны эхний гуравны нэг. Энэ бол авъяаслаг уран бүтээлч, олон талт уянгын зохиолч, замыг өнгөрсөнбэлгэдэл, эзотерик шүлгээс эхлээд иргэний сэтгүүл зүй, шинжлэх ухаан-гүн ухааны яруу найраг хүртэл, антропософик үзлээр дамжуулан "Бурханы хотын идеал" хүртэл.

Санал болгож буй нийтлэл нь уншигчдад зөвхөн хамгийн сайн зүйлтэй танилцах боломжийг олгодог яруу найргийн бүтээлүүдВолошин, гэхдээ бас - түүний хамгийн их сонирхолтой бүтээлүүдулс орнуудын амьдрал дахь гайхалтай үйл явдлуудтай холбоотой гоо зүй, дурсамжийн зохиол, сэтгүүл зүй, захидалд. Зохиогч. Волошин Максимилиан. Зохиогчийн бүх шүлэг. Ажил. Яруу найрагчийн эр зориг. 2. Одод. Зохиолч, шүлгийн дуртай цуглуулга үүсгээрэй!

Ижил бодолтой хүмүүстэй чатлаарай! Шүүмж бичиж, яруу найргийн тулаан, тэмцээнд оролцоорой! Шилдэг нэгдээрэй! Poembook-д нэгдсэнд баярлалаа! Дансны хандалтын мэдээлэл бүхий захидал таны имэйл рүү илгээгдсэн болно!

Та 24 цагийн дотор нэвтрэх ёстой. Үгүй бол бүртгэл устах болно! Бүртгэгдсэн хэрэглэгчид маш их ашиг тусыг хүртдэг: Шүлэг нийтлэх - авьяас чадвараа ухамсарлаарай! Зохиолч, шүлгийн дуртай цуглуулга үүсгээрэй! Ижил бодолтой хүмүүстэй чатлаарай! Шүүмж бичиж, яруу найргийн тулаан, уралдаанд оролцоорой! Максимилиан Волошин. Тодорхойлолт. Максимилиан Александрович Волошин бол 20-р зууны эхний гуравны нэг дэх хамгийн агуу яруу найрагчдын нэг юм.

Тэрээр бэлгэдэл, эзотерик шүлгээс иргэний-сэтгүүл зүй, шинжлэх ухаан-гүн ухааны яруу найраг хүртэл, антропософийн үзлээр дамжуулан "Бурханы хотын идеал" хүртэлх замыг туулсан авъяаслаг уран бүтээлч, олон талт уянгын зохиолч юм. Санал болгож буй хэвлэл нь уншигчдад Волошиний шилдэг яруу найргийн бүтээлүүд төдийгүй түүний гоо зүй, дурсамжийн зохиол, сэтгүүл зүй, жүжигтэй холбоотой хамгийн сонирхолтой бүтээлүүдтэй танилцах боломжийг олгодог.

Сонгосон бүтээл, захидал. М.А.Волошин. Үнэ. үрэх. Максимилиан Александрович Волошин бол 20-р зууны эхний гуравны нэг дэх хамгийн агуу яруу найрагчдын нэг юм. Тэрээр бэлгэдэл, эзотерик шүлгээс иргэний-сэтгүүл зүй, шинжлэх ухаан-гүн ухааны яруу найраг хүртэл, антропософийн үзлээр дамжуулан "Бурханы хотын идеал" хүртэлх замыг туулсан авъяаслаг уран бүтээлч, олон талт уянгын зохиолч юм.

Волошин М.А., Яруу найрагчийн эр зориг: Сонгосон бүтээлүүд, захидал. цуврал: Шинэ номын санОросын сонгодог зохиолууд: заавал хуулбарлах Парад, хот, хуудас, Номын тайлбар. Максимилиан Александрович Волошин () бол 20-р зууны эхний гуравны нэг дэх хамгийн агуу яруу найрагчдын нэг юм. Тэрээр бэлгэдэл, эзотерик шүлгээс иргэний-сэтгүүл зүй, шинжлэх ухаан-гүн ухааны яруу найраг хүртэл, антропософийн үзлээр дамжуулан "Бурханы хотын идеал" хүртэлх замыг туулсан авъяаслаг уран бүтээлч, олон талт уянгын зохиолч юм.

АнгилалНийтлэлийн навигаци

Одоогийн байдлаар хамгийн түгээмэл дэлгэцийн төхөөрөмжүүд нь хавтгай дээр дүрсийг нэгтгэдэг төхөөрөмжүүд юм - дэлгэцийн дэлгэц эсвэл цаас. Жинхэнэ гурван хэмжээст дүрсийг бүтээдэг төхөөрөмжүүд нэлээд ховор хэвээр байна. Гэхдээ ийм бүтээн байгуулалтын талаархи мэдээлэл, жишээлбэл, эзэлхүүнтэй дэлгэц эсвэл бүр гурван хэмжээст принтерийн тухай мэдээлэл улам бүр гарч байна.

Аливаа график төхөөрөмжийг ашиглахдаа проекцийг ихэвчлэн ашигладаг. Төсөл нь график төхөөрөмж дээр объектуудыг хэрхэн харуулахыг тодорхойлдог. Бид зөвхөн онгоцон дээрх төсөөллийг авч үзэх болно.

Дэлхийн болон дэлгэцийн координатууд

Орон зайн объектуудыг дэлгэц дээр эсвэл хэвлэгч ашиглан цаасан дээр харуулахдаа объектуудын координатыг мэдэх хэрэгтэй. Бид хоёр координатын системийг авч үзэх болно. Эхлээд - дэлхийн координат, Энэ нь орон зай дахь объектуудын жинхэнэ байрлалыг өгөгдсөн нарийвчлалтайгаар тодорхойлдог. Нөгөө нь өгөгдсөн проекцоор объектын зургийг харуулдаг зургийн төхөөрөмжийн координатын систем юм.

Дэлхийн координатыг 3D декарт координат болго. Координатын төвийг хаана байрлуулах, тэнхлэг бүрийн дагуу хэмжих нэгжүүд ямар байх нь бидний хувьд тийм ч чухал биш юм. Хамгийн гол нь үүний төлөө зураг, бид харуулсан объектуудын координатын зарим тоон утгыг мэдэх болно.

Тодорхой төсөөлөлд зураг авахын тулд проекцийн координатыг тооцоолох шаардлагатай. Эдгээрээс та график төхөөрөмжийн координатуудыг авч болно - тэдгээрийг дуудъя дэлгэцийн координатууд.Хавтгай дээрх дүрсийг нэгтгэхийн тулд хоёр хэмжээст координатын систем хангалттай. Гэсэн хэдий ч зарим дүрслэх алгоритмууд нь Z-буферийн алгоритм гэх мэт 3D дэлгэцийн координатуудыг ашигладаг.

Төлөвлөлтийн үндсэн төрлүүд

IN компьютер графикхамгийн түгээмэл зэрэгцээТэгээд төвтөсөөлөл (Зураг 2.15).

Төвийн төсөөллийн хувьд (мөн гэж нэрлэдэг ирээдүйтэй)проекцын туяа нь объект болон проекцын хавтгайгаас хязгаарлагдмал зайд байрлах нэг цэгээс үүсдэг. Учир нь зэрэгцээ проекцпроекцын цацрагууд параллель байна.

Аксонометрийн проекц

Аксонометрийн проекц нь зэрэгцээ төсөөллийн нэг төрөл юм. Үүний тулд бүх проекцын туяа нь проекцын хавтгайд тэгш өнцөгт байрладаг (Зураг 2.16).

[Алдаа ба β гэсэн хоёр өнцгийг ашиглан проекцын хавтгайн байрлалыг тогтооцгооё , Камерыг тэнхлэгийн проекцийг байрлуулахаар байрлуулцгаая z X0Y проекцын хавтгай дээр босоо шугам (op-amp-ийн тэнхлэгтэй параллель) байх болно.

Цагаан будаа. 2.16. Аксонометрийн проекц

Координатуудын хоорондын хамаарлыг олохын тулд (х, у,z) Тэгээд (X, Ю, З) Гурван хэмжээст орон зайн аль ч цэгийн хувьд координатын системийн хувиргалтыг авч үзье ( X, у,z) систем рүү (X, Ю, Z). Ийм өөрчлөлтийг хоёр үе шаттайгаар тодорхойлъё.

1-р алхам.Координатын системийг тэнхлэгийн эргэн тойронд эргүүлэх z α өнцгөөр. Энэ тэнхлэгүүдийн эргэлтийг матрицаар дүрсэлсэн

2 дахь алхам.Координатын системийг эргүүлэх (x, y",z") тэнхлэгтэй харьцуулахад X"β өнцгөөр - координатыг авах (X, Ю, З). Эргэлтийн матриц

Бид координатын хувиргалтыг матрицын үржвэрээр илэрхийлдэг B*A:

Үүнийг бичээд үзье
Проекцийн координатыг томъёо хэлбэрээр хувиргах:

Хэрэв координатын хувиргалтыг ижил хоёр үе шаттайгаар, гэхдээ өөр дарааллаар тайлбарлавал ижил проекц гарч ирнэ гэж та бодож байна уу - эхлээд координатын системийг x тэнхлэгтэй харьцуулан эргүүлнэ. буланβ , дараа нь тэнхлэгтэй харьцуулахад координатын системийг эргүүлнэ z" α өнцгөөр? Мөн координатын системд босоо шугамууд байх уу (x, y, z) координатын систем дэх босоо тэнхлэгээр мөн зурсан (X, U, Z)? Өөрөөр хэлбэл, хийдэг A*B - B*A?Урвуу координатын хувиргалтаксонометрийн проекц. Проекцийн координатуудын хувьд (X, Ю, З) дэлхийн координат руу хөрвүүлэх (х, у,z), та эргэлтүүдийн урвуу дарааллыг хийх хэрэгтэй. Эхлээд -β өнцгөөр эргүүлээд дараа нь өнцгөөр эргүүлнэ - α . Урвуу хувирлыг матриц хэлбэрээр бичье

Эргэлтийн матрицууд:

A -1 ба B -1 матрицуудыг үржүүлснээр бид урвуу хувиргах матрицыг олж авна.

Мөн урвуу хувиргалтыг томъёо хэлбэрээр бичье

Хэтийн төлөвийн төсөөлөл

Бид эхлээд хэтийн төлөвийг (Зураг 2.17) хэзээ авч үзэх болно босоо зохион байгуулалткамер хэзээ a=β= 0. Ийм проекцийг дээрх цэг дээр байрлах ажиглагч харж байгаа шилэн дээрх дүрс гэж төсөөлж болно. (х, у,z) = (0, 0, z k). Энд проекцын хавтгай нь хавтгайтай параллель байна (хOy).

Гурвалжны ижил төстэй байдалд үндэслэн бид дараах пропорцийг бичнэ.

Мөн Z координатыг авч үзвэл:

Матриц хэлбэрээр координатын хувиргалтыг дараах байдлаар бичиж болно.

Цагаан будаа. 2.17. Хэтийн төлөвийн төсөөлөл

Энд матрицын коэффициентүүд нь координатаас хамаарна гэдгийг анхаарна уу z (бутархайн хуваагчаар). Энэ нь координатын хувиргалт нь шугаман бус (эсвэл бутархай шугаман) ангилалд хамаарна гэсэн үг юм. проекктивөөрчлөлтүүд.

Одоо авч үзье ерөнхий тохиолдол- дурын камерын өнцгийн хувьд Тэгээд p)зэрэгцээ аксонометрийн проекцтой адил. Болъё (x", y",z 1 ) - анхны системтэй харьцуулахад эргүүлсэн координатын системийн координатууд (х, у,z) α өнцөгт ба β .

Бид хэтийн төлөвийн координатын хувиргалтыг дараах хэлбэрээр бичье.

Координатын хувиргалтын дарааллыг дараах байдлаар тодорхойлж болно.

Өөрчлөлт нь ерөнхийдөө шугаман бус байдаг. Үүнийг үзэгдэл дэх бүх объектын тогтмол коэффициентүүдийн нэг матрицаар тайлбарлах боломжгүй (хэдийгээр матрицын хэлбэрийг координатыг хувиргахад ашиглаж болно).

Ийм хэтийн төлөвийн проекцын хувьд проекцын хавтгай нь төвөөс гарч буй туяатай перпендикуляр байна. (х, у,z)= (0, 0, 0) ба α өнцгөөр налуу , β . Хэрэв камерыг координатын төвөөс холдуулбал төвийн проекц өөрчлөгдөнө. Камер хязгааргүй байх үед төвийн проекц нь параллель проекц болж мууддаг.

Хэтийн төлөв хувиргалтын үндсэн шинж чанаруудыг зааж өгье. Төвд

төсөөлөл:

□ урт ба талбайн харьцаа хадгалагдаагүй;

□ шулуун шугамыг шулуун шугамаар дүрсэлсэн;

□ Зэрэгцээ шугамуудыг нэг цэгт нийлж байгаа байдлаар дүрсэлсэн.

Сүүлийн үл хөдлөх хөрөнгө нь өргөн хэрэглэгддэг дүрслэх геометрцаасан дээр гараар зурах зориулалттай. Үүнийг байшингийн хүрээний жишээн дээр үзүүлье (Зураг 2.18).

Проекцын хавтгайн байрлал болон проекцын цацрагийн нийлэх цэгийн байршлаас хамааран өөр өөр хэтийн төлөвийн төсөөлөл байдаг. Нэмж дурдахад, төсөөллийг хавтгай дээр биш, жишээлбэл, бөмбөрцөг эсвэл цилиндр гадаргуу дээр хийж болно.

Проекцын туяа нь проекцын хавтгайд перпендикуляр биш ташуу проекцийг авч үзье. Ийм проекцын гол санаа нь камерыг өндөрт өргөх явдал юм h дизайны онгоцны босоо байрлалыг хадгалахын зэрэгцээ (Зураг 2.19).

Цагаан будаа. 2.18. Зэрэгцээ шугамууднэг цэгт ойртож буй төв проекцоор дүрслэгдсэн байна

Цагаан будаа. 2.19. Ташуу проекц

Та ийм төсөөллийг дараах байдлаар авч болно.

1. Тэнхлэгийг тойрон эргүүл z өнцгөөр А.

2. Бид солино z" дээр -y", a.u"-ээс z" хүртэл.

3. Координатын системийг камерын өндөр хүртэл шилжүүлнэ h

4. Онгоцонд (x", y", 0) бид дээр дурдсан аргыг ашиглан хэтийн төлөвийг бүтээдэг (тэнхлэг дээрх цацрагийн алга болох цэг). z).

Координатын хувиргалтыг ингэж тодорхойлж болно. Эхлээд (x), тодорхойлно у",z).

Дараа нь хэтийн төлөвийн өөрчлөлтийг хийдэг

Ийм төсөөллийн давуу тал нь параллелизмыг хадгалах явдал юм босоо шугамууд, энэ нь заримдаа архитектурын компьютерийн систем дэх байшингуудыг дүрслэхэд хэрэгтэй байдаг.

Зураг дээрх жишээ янз бүрийн төсөөлөл. Янз бүрийн төсөөлөлтэй ижил объектуудын зургуудын жишээг өгье. Объектууд нь ижил хэмжээтэй шоо байх болно. Камерын байрлалыг α налалтын өнцгөөр тодорхойлно = 27°, β = 70°.

Аксонометрийн төсөөллийн жишээг Зураг дээр үзүүлэв. 2.20.

Цагаан будаа. 2.20.Аксонометрийн проекц

Одоо хэтийн төлөвийг төсөөлөх жишээнүүдийг харцгаая. Зэрэгцээ проекцоос ялгаатай нь хэтийн төлөвийн проекц дахь дүрс нь проекцын хавтгайн байрлал болон камераас хол зайд ихээхэн хамаардаг.

Оптик системд энэ ойлголтыг мэддэг фокусын урт.Линзний фокусын урт урт байх тусам хэтийн төлөвийн ойлголт бага байх болно (Зураг 2.21" ба эсрэгээр, богино фокусын линзний хувьд хэтийн төлөв хамгийн их байдаг (Зураг 2.22). Энэ нөлөөТа видео камер эсвэл камераар зураг авалт хийж байснаа аль хэдийн анзаарсан байх. Бидний жишээн дээр бид камераас проекцын хавтгай хүртэлх зай хоорондын зарим захидал харилцааг ажиглаж болно { z к z pl ) болон линзний фокусын урт. Гэсэн хэдий ч энэ захидал харилцаа нь оптик системтэй аналоги нь бүрэн бус юм.

Доорх жишээнүүдийн хувьд (Зураг 2.21, 2.22) z pl = 700. Камерын хазайлтын өнцөг α = 27°, β = 70°.

Цагаан будаа. 2.21.Урт фокусын камерт зориулсан хэтийн төлөв( z К = 2000)

Цагаан будаа. 2.22.Богино шидэлтийн камерын хэтийн төлөв( z К = 1200)

Богино шидэлтийн камерын хувьд (z К = 1200) хэтийн төлөвийг мэдрэх нь камерт хамгийн ойр байрлах шоо дөрвөлжингийн хувьд хамгийн мэдэгдэхүйц юм. Объектуудын босоо шугамууд нь проекц дээр босоо биш юм (объектууд хуваагдана").

Жишээнүүдийг харцгаая ташуу проекц(Зураг 2.23, 2.24). Түүний хувьд объектын босоо шугамууд нь проекц дээр босоо байрлалыг хадгалдаг. Камерын байрлалыг (проекцын цацрагийн нэгдэх цэг) дүрсэлсэн болно эргэлтийн өнцөг α = 27° ба өргөх өндөр h = 500. Проекцын хавтгай нь хавтгайтай параллель байна (х"Өө")бөгөөд хол зайд байрладаг z pl = 700.

Цагаан будаа.2.23. Урт фокусын камерт зориулсан ташуу хэтийн төлөв( z К = 2000)

Цагаан будаа. 2.24.Богино шидэлтийн камерт зориулсан ташуу хэтийн төлөв( z К = 1200)

Төв проекцын зургийн өөр нэг жишээг харцгаая - Оддын дайн киноны хэв маягийн шошго:

Цонхонд харуулах

Дээр дурдсанчлан проекцын хавтгайд зураглал хийх нь координатын зарим өөрчлөлттэй тохирч байна. Энэхүү координатын хувиргалт нь янз бүрийн төрлийн проекцын хувьд өөр өөр байдаг боловч ямар нэгэн байдлаар шинэ координатын систем болох проекцын координат руу шилждэг. Проекцийн координатуудыг график гаралтын төхөөрөмж ашиглан зураг үүсгэхэд ашиглаж болно. Гэсэн хэдий ч проекцын хавтгай дахь координатын систем нь дэлгэцийн төхөөрөмжийн координатын системтэй давхцахгүй байж болох тул энэ нь нэмэлт өөрчлөлтийг шаардаж болно. Жишээлбэл, километрээр хэмжсэн объектуудыг харуулах ёстой, харин растер дэлгэц дээр хэмжих нэгж нь пиксел юм. Километрийг пикселээр хэрхэн илэрхийлэх вэ?

Нэмж дурдахад та компьютерийн дэлгэц дээр объектын томруулсан, багасгасан дүрсийг харуулахаас гадна тэдгээрийг хөдөлгөж болохыг харсан байх. Үүнийг хэрхэн хийдэг вэ?

Зарим тэмдэглэгээг танилцуулъя. Болъё (Тэр, Уэ,Зд)График харуулах төхөөрөмж дэх объектуудын дэлгэцийн координатууд юм. "Дэлгэц" гэдэг үгийг бид зөвхөн дэлгэцийн тухай ярьж байгаа мэт авч болохгүй гэдгийг анхаарна уу - дараах бүх зүйлийг декартын координатын системийг ашигладаг бусад төхөөрөмжид ашиглаж болно. Бид проекцын координатуудыг энд гэж тэмдэглэв (X, Y, Z).

За дуудъя цонхдэлгэцийн координат бүхий тэгш өнцөгт гаралтын талбай

XөөминUetp) - (Hetah Uetah) -Ихэвчлэн та цонхонд эсвэл бүхэлд нь харуулах ёстой

үзэгдэл, эсвэл түүний салангид хэсэг (Зураг 2.25).

Цагаан будаа. 2.25. Үзэсгэлэнгийн проекц дэлгэц

a - проекцийн координат дахь үзэгдлийн хил хязгаар;б - үзэгдлийн нэг хэсэг цонхонд байна, в - пропорцийг хадгалахын зэрэгцээ бүх дүр зургийг цонхонд бичнэ.

Проекцийн координатыг дэлгэцийн координат болгон хөрвүүлэхийг сунгах/агших, зүсэх гэж тодорхойлж болно:

X Э = KX +dx, ; Ю Э = KY+ dy; Зe =КЗ.

Энэ хувиргалт нь ижил сунгах/агшилтын харьцаанаас болж объектуудын харьцааг хадгалдаг (TO)бүх координатын хувьд. Хавтгай зураглалын хувьд та Z координатыг хаяж болно гэдгийг анхаарна уу TO,dxТэгээдdy. Жишээлбэл, өгөгдсөн хэмжээсийн цонхонд дүр зургийг бүхэлд нь оруулах шаардлагатай. Тохиромжтой нөхцлийг дараах байдлаар тодорхойлж болно.

Хэрэв бид (1)-ийг (3) дээр нэмбэл бид дараахь зүйлийг авна.

Тэгш бус байдлаас (2) ба (4) дараах байдалтай байна.

K-ийн (1)-(4) системийн шийдэл нь: TO мин (Kx, Ku) = K мин .

Хэрэв үнэ цэнэ TO X эсвэл утга К Ю хязгааргүйтэй тэнцүү бол үүнийг хаях ёстой. Хэрэв хоёулаа бол - дараа нь үнэ цэнэ TO минтохируулж болно нэгтэй тэнцүү. Дга| Цонхны зураг хамгийн том хэмжээтэй байхын тулд бид сонгоно TO= TO мин Одоо та олж болно dx. Тэгш бус байдлаас (1):

Тэгш бус байдлаас (3): I

Түүнээс хойш dx1 < dx2, дараа нь үнэ цэнэ dx I интервалаас сонгож болно dx1 dx dx2. Цонхны төв байрлалыг сонгоцгооё: I

Бид мөн адил олж чадна Ди:

Ийм үнэт зүйлстэй dxТэгээдdy үзэгдлийн төв нь цонхны төвд байх болно.

Бусад тохиолдолд, цонхонд тухайн үзэгдлийн зөвхөн хэсгийг тохирох масштабаар харуулах шаардлагатай бол та тоон масштабын утгыг шууд тохируулах боломжтой. (TO)ба координатыг шилжүүлэх (dx, dy). Atинтерфейсийн дизайн график системсонголтыг хязгаарлахыг зөвлөж байна TO,dx, dy хүлээн зөвшөөрөгдсөн утгын хүрээ.

График системүүд нь дэлгэцийн зохион байгуулалтыг тодорхойлох, үзэх цонхонд үзүүлэх үзэгдлийн хил хязгаарыг тодорхойлох янз бүрийн аргыг ашигладаг. Жишээлбэл, гүйлгэх гулсагчийг ихэвчлэн шилжүүлэхэд ашигладаг. Мөн курсорыг дүр зураг дээр байгаа цэг рүү чиглүүл, дараа нь энэ цэг нь цонхны төв цэг болж, эсвэл үзэгдлийн фрагментийн хил хязгаарыг тодруулж тэгш өнцөгтийг дүрсэлж болно. цонх гэх мэт эдгээр бүх дэлгэцийн аргууд нь суналт, шахалт (масштаб) дээр суурилдаг бөгөөд аффин координатын хувиргалтаар тодорхойлогддог.

Тодорхой үед компьютер графикийн чиглэлээр ажилладаг аливаа хөгжүүлэгч асуулт гарч ирдэг: эдгээр ирээдүйтэй матрицууд хэрхэн ажилладаг вэ? Заримдаа хариултыг олоход маш хэцүү байдаг бөгөөд ихэвчлэн тохиолддог шиг ихэнх хөгжүүлэгчид даалгаврын хагасыг орхидог.

Энэ бол асуудлын шийдэл биш! Үүнийг хамтдаа шийдэцгээе!

Практик талаасаа бодитой байж, туршилтын субьект болгон авцгаая OpenGL хувилбарууд 3.3. Энэ хувилбараас эхлэн хөгжүүлэгч бүр модулийг бие даан хэрэгжүүлэх шаардлагатай болно матрицын үйлдлүүд. Гайхалтай, энэ бол бидэнд хэрэгтэй зүйл юм. Хэцүү даалгавраа задалж, гол зүйлийг тодруулцгаая. OpenGL техникийн үзүүлэлтээс зарим баримтууд:

  • Матрицуудыг баганад (гол багана) хадгалдаг;
  • Нэг төрлийн координат;
  • Зүүн гарын координатын систем дэх каноник хайчлах хэмжээ (CVV).
Матрицуудыг хадгалах хоёр арга байдаг: гол багана, мөр-мажор. лекц дээр шугаман алгебрэгнээний үндсэн схемийг ашигладаг. By томоор ньСанах ойд матрицыг дүрслэх нь чухал биш, учир нь матрицыг энгийн шилжүүлгийн тусламжтайгаар нэг дүрслэлээс нөгөөд үргэлж хувиргаж болно. Ямар ч ялгаа байхгүй тул дараагийн бүх тооцоололд бид сонгодог эгнээний матрицуудыг ашиглана. OpenGL-ийг програмчлахдаа сонгодог эгнээний тооцооллыг хадгалахын зэрэгцээ матрицуудыг шилжүүлэхээс зайлсхийх боломжийг олгодог бяцхан заль мэх байдаг. Матрицыг шэйдер программ руу байгаагаар нь шилжүүлэх ёстой бөгөөд шэйдерт үржүүлэх үйлдлийг вектор ба матрицын хооронд биш харин матриц ба векторын хооронд хийх ёстой.

Нэг төрлийн координат нь хэд хэдэн тоотой тийм ч төвөгтэй систем биш юм энгийн дүрэмердийн декарт координатыг хөрвүүлэх талаар нэгэн төрлийн координатуудба буцаж. Нэг төрлийн координат нь хэмжээсийн эгнээний матриц юм. Декарт координатыг нэгэн төрлийн координат болгон хувиргахын тулд зайлшгүй шаардлагатай x, yТэгээд zаль нэгээр үржүүлнэ бодит тоо w(0-ээс бусад). Дараа нь та үр дүнг эхний гурван бүрэлдэхүүн хэсэгт бичих хэрэгтэй бөгөөд сүүлчийн бүрэлдэхүүн хэсэг нь үржүүлэгчтэй тэнцүү байх болно. w. Өөрөөр хэлбэл:
- Декарт координат
w– 0-тэй тэнцүү биш бодит тоо

- нэгэн төрлийн координат

Бяцхан заль мэх: Хэрэв w 1-тэй тэнцүү бол орчуулахад шаардлагатай бүх зүйл бол бүрэлдэхүүн хэсгүүдийг шилжүүлэх явдал юм x, yТэгээд zба сүүлчийн бүрэлдэхүүн хэсэг рүү нэгийг онооно. Өөрөөр хэлбэл, эгнээний матриц авах:

Тэг чанарын тухай хэдэн үг хэлье w. Нэг төрлийн координатын үүднээс авч үзвэл энэ нь нэлээд зөвшөөрөгдөхүйц юм. Нэг төрлийн координатууд нь цэг ба векторуудыг ялгах боломжийг олгодог. Декартын координатын системд ийм хуваагдал боломжгүй юм.

- хаана зааж өгөх ( x, y, z) – Декарт координат

- вектор, хаана ( x, y, z) – радиус вектор

Нэг төрлийн координатаас декарт координат руу оройг урвуу хөрвүүлэх ажлыг дараах байдлаар гүйцэтгэнэ. Мөр матрицын бүх бүрэлдэхүүн хэсгүүдийг сүүлчийн бүрэлдэхүүн хэсэгт хуваах ёстой. Өөрөөр хэлбэл:

- нэгэн төрлийн координат
- Декарт координат

Таны мэдэх ёстой гол зүйл бол бүх OpenGL хайчлах, растержуулах алгоритмууд декарт координат дээр ажилладаг боловч үүнээс өмнө бүх хувиргалтуудыг нэгэн төрлийн координатаар гүйцэтгэдэг. Нэг төрлийн координатаас декарт координат руу шилжих ажлыг техник хангамжид гүйцэтгэдэг.

Каноник хайчлах хэмжээ (CVV) нь OpenGL-ийн хамгийн бага баримтжуулсан хэсгүүдийн нэг юм. Зураг дээрээс харж болно. 1 CVV нь гарал үүслийн хэсэгт төвлөрсөн, ирмэгийн урт нь хоёртой тэнцэх тэнхлэгт зэрэгцүүлсэн шоо юм. CVV хэсэгт хамаарах бүх зүйл растержуулалтад хамрагдаж, CVV-ээс гадуур байгаа бүх зүйлийг үл тоомсорлодог. CVV-ээс хэсэгчлэн гарсан бүх зүйл нь тайрах алгоритмд хамаарна. Таны мэдэх ёстой хамгийн чухал зүйл бол CVV координатын систем нь солгой юм!


Цагаан будаа. 1. Каноник OpenGL хайчлах хэмжээ (CVV)

Зүүн гарын координатын систем үү? OpenGL 1.0-ийн тодорхойлолтод ашигласан координатын системийг баруун гар гэж тодорхой заасан байдаг тул энэ нь яаж байж болох вэ? Үүнийг олж мэдье.


Цагаан будаа. 2. Координатын системүүд

Зураг дээрээс харж болно. 2 координатын систем нь зөвхөн тэнхлэгийн чиглэлд ялгаатай З. OpenGL 1.0 нь баруун гартай хэрэглэгчийн координатын системийг ашигладаг. Гэхдээ CVV координатын систем, хэрэглэгчийн координатын систем хоёр огт өөр зүйл юм. Түүгээр ч барахгүй 3.3 хувилбараас хойш ийм зүйл байхгүй болсон стандарт систем OpenGL координатууд. Өмнө дурьдсанчлан, програмист өөрөө матрицын үйлдлийн модулийг хэрэгжүүлдэг. Эргэлтийн матриц үүсгэх, проекцын матриц үүсгэх, урвуу матриц хайх, матрицыг үржүүлэх хамгийн бага багцматрицын үйлдлийн модульд орсон үйлдлүүд. Хоёр логик асуулт гарч ирнэ. Хэрэв үзэгдэх хэмжээ нь ирмэгийн урт нь хоёртой тэнцэх шоо юм бол яагаад хэдэн мянган нэгж хэмжээтэй дүр зураг дэлгэцэн дээр харагдаж байна вэ? Хэрэглэгчийн координатын систем ямар үед CVV координатын систем рүү хөрвүүлдэг вэ? Төсөөллийн матрицууд нь эдгээр асуудлыг шийддэг объект юм.

Дээр дурдсан гол санаа нь хөгжүүлэгч өөрөө хэрэглэгчийн координатын системийн төрлийг сонгох эрхтэй бөгөөд проекцын матрицыг зөв дүрслэх ёстой. Энэ нь OpenGL-ийн тухай баримтуудыг бүрэн дүүргэж, бүх зүйлийг нэгтгэх цаг болжээ.

Хамгийн түгээмэл бөгөөд ойлгоход хэцүү матрицуудын нэг бол хэтийн төлөв хувиргах матриц юм. Энэ нь CVV болон хэрэглэгчийн координатын системтэй ямар холбоотой вэ? Ажиглагчаас зай ихсэх тусам объектууд яагаад жижиг болдог вэ? Зай нэмэгдэх тусам объектууд яагаад жижиг болж байгааг ойлгохын тулд матрицын хувиргалтыг харцгаая гурван хэмжээст загваралхам алхмаар. Ямар ч гурван хэмжээст загвар нь бие биенээсээ бүрэн хамааралгүйгээр матрицын хувиргалтыг хийдэг оройн төгсгөлийн жагсаалтаас бүрддэг нь нууц биш юм. Хоёр хэмжээст дэлгэц дээрх гурван хэмжээст оройн координатыг тодорхойлохын тулд дараахь зүйлийг хийх шаардлагатай.

  1. Декарт координатыг нэгэн төрлийн координат болгон хувиргах;
  2. Нэг төрлийн координатыг загварын матрицаар үржүүлэх;
  3. Үр дүнг харах матрицаар үржүүлнэ;
  4. Үр дүнг проекцийн матрицаар үржүүлэх;
  5. Нэг төрлийн координатаас гарсан үр дүнг декарт координат болгон хөрвүүлнэ.
Декарт координатыг нэгэн төрлийн координат болгон хувиргах талаар өмнө нь ярилцсан. Геометрийн утгаЗагварын матриц нь тухайн загварыг орон нутгийн координатын системээс дэлхийн координатын системд шилжүүлэх явдал юм. Эсвэл тэдний хэлснээр оройнуудыг загвар орон зайгаас дэлхийн орон зайд шилжүүл. Энгийнээр хэлэхэд файлаас ачаалагдсан гурван хэмжээст объект нь тухайн объекттой харьцуулахад координатыг хэмждэг загварын орон зайд байрладаг. Дараа нь загварын матрицыг ашиглан загварыг байрлуулж, масштаблаж, эргүүлнэ. Үүний үр дүнд 3D загварын бүх оройнууд 3D дүр зураг дээр бодит нэгэн төрлийн координатуудыг хүлээн авдаг. Дэлхийн орон зайтай харьцуулахад загвар орон зай нь орон нутгийнх юм. Загварын орон зайгаас координатуудыг дэлхийн орон зайд (орон нутгийнхаас глобал руу) шилжүүлдэг. Энэ зорилгоор загвар матрицыг ашигладаг.

Одоо гурав дахь алхам руугаа явцгаая. Эндээс харах орон зай гарч ирдэг. Энэ орон зайд ажиглагчийн байрлал, чиг баримжаатай харьцуулан координатыг хэмждэг бөгөөд энэ нь дэлхийн төв юм. Харах орон зай нь дэлхийн орон зайтай харьцуулахад орон нутгийн шинж чанартай байдаг тул координатыг түүнд оруулах ёстой (өмнөх тохиолдлын адил авч болохгүй). Шууд матрицын хувиргалтзарим орон зайнаас координатуудыг устгадаг. Эсрэгээр нь тэдгээрийг нэвтрүүлэхийн тулд матрицын хувиргалтыг урвуу оруулах шаардлагатай тул төрлийн хувиргалтыг урвуу матрицаар дүрсэлсэн болно. Үүнийг яаж авах вэ урвуу матриц? Эхлээд шууд ажиглагчийн матрицыг авъя. Ажиглагч ямар онцлогтой вэ? Ажиглагчийг түүний байгаа координат болон харах чиглэлийн векторуудаар дүрсэлдэг. Ажиглагч үргэлж өөрийн орон нутгийн тэнхлэгийн зүг рүү хардаг З. Ажиглагч үзэгдлийн газрыг тойрон хөдөлж, эргэлт хийх боломжтой. Энэ нь олон талаараа загварын матрицын утгатай төстэй юм. Ерөнхийдөө ийм л байна. Гэсэн хэдий ч ажиглагчийн хувьд масштаблах үйлдэл нь утгагүй тул ажиглагчийн загвар матриц ба загварын матрицын хооронд гурван хэмжээст объектТа тэнцүү тэмдэг тавьж болохгүй. Ажиглагчийн загвар матриц нь хүссэн шууд матриц юм. Энэ матрицыг эргүүлснээр бид харах матрицыг олж авна. Практикт энэ нь дэлхийн нэгэн төрлийн координат дахь бүх орой нь ажиглагчтай харьцуулахад шинэ нэгэн төрлийн координатыг хүлээн авна гэсэн үг юм. Үүний дагуу, хэрэв ажиглагч тодорхой оройг харсан бол нэгэн төрлийн координатын утга zхарах орон зайд өгөгдсөн орой нь гарцаагүй байх болно эерэг тоо. Хэрэв орой нь ажиглагчийн ард байсан бол түүний нэгэн төрлийн координатын утга байна zхарагдах зай нь сөрөг тоо байх нь гарцаагүй.

Дөрөвдүгээр алхам бол хамгийн их сонирхолтой алхам. Өмнөх алхмуудыг зориуд нарийвчлан авч үзсэн тул уншигчдад ойлгомжтой байх болно бүрэн зурагдөрөв дэх алхамын бүх операндуудын тухай. Дөрөв дэх алхамд нэгэн төрлийн координатуудыг харах орон зайгаас CVV зай руу шилжүүлнэ. Бүх харагдахуйц оройнууд нь нэгэн төрлийн координатын эерэг утгатай байх болно гэдгийг дахин онцлон тэмдэглэв. z.

Матрицыг дараах маягтаар авч үзье.

Тэгээд зааж өгнө нэгэн төрлийн орон зайажиглагч:

Нэг төрлийн координатыг тухайн матрицаар үржүүлье.

Үүссэн нэгэн төрлийн координатыг декартын координат руу хөрвүүлье.

Харах орон зайд ижил координаттай хоёр цэг байна гэж бодъё xТэгээд y, гэхдээ өөр өөр координаттай z. Өөрөөр хэлбэл, нэг оноо нөгөөгөөсөө хоцорч байна. Хэтийн төлөвийн гажуудлаас болж ажиглагч хоёр цэгийг харах ёстой. Үнэхээр томъёоноос харахад координатаар хуваагдсантай холбоотой нь тодорхой байна z, гарал үүслийн цэг хүртэл шахалт үүсдэг. Яаж илүү үнэ цэнэ z(цэг нь ажиглагчаас хол байх тусам) шахалт илүү хүчтэй болно. Энэ бол хэтийн үр нөлөөний тайлбар юм.

OpenGL-ийн тодорхойлолтод хайчлах, растержуулах үйлдлүүд нь декарт координатаар хийгддэг бөгөөд нэгэн төрлийн координатыг декарт координат руу хөрвүүлэх үйл явц автоматаар хийгдэнэ.

Матриц (1) нь хэтийн төлөвийн проекцийн матрицын загвар юм. Өмнө дурьдсанчлан, проекцийн матрицын даалгавар нь хоёр цэгээс бүрдэнэ: хэрэглэгчийн координатын системийг (зүүн гар эсвэл баруун гартай) тохируулах, ажиглагчийн үзэгдэх хэмжээг CVV руу шилжүүлэх. Зүүн гартай хэрэглэгчийн координатын системийн хэтийн төлөвийн матрицыг гаргаж авцгаая.

Проекцийн матрицыг дөрвөн параметрээр тодорхойлж болно (Зураг 3):

  • Радианаар харах өнцөг ( фови);
  • Харьцаа ( тал);
  • Хамгийн ойрын хайчлах онгоц хүртэлх зай ( n);
  • Холын зүсэх онгоц хүртэлх зай ( е).


Цагаан будаа. 3. Харагдах байдлын хэтийн хэмжээ

Ажиглагчийн орон зай дахь цэгийн хэтийн төлөвийн алсын барааны захын урд талын ирмэг дээр байгаа проекцийг авч үзье. Илүү тодорхой болгохын тулд Зураг дээр. 4 нь хажуугийн харагдах байдлыг харуулж байна. Хэрэглэгчийн координатын систем нь CVV координатын системтэй давхцдаг, өөрөөр хэлбэл зүүн гартай координатын системийг хаа сайгүй ашигладаг гэдгийг анхаарах хэрэгтэй.


Цагаан будаа. 4. Төсөл дурын цэг

Үл хөдлөх хөрөнгө дээр үндэслэсэн ижил төстэй гурвалжиндараах тэгшитгэл хүчинтэй байна:

yꞌ ба xꞌ-ийг илэрхийлье:

Зарчмын хувьд (2) илэрхийлэл нь проекцын цэгүүдийн координатыг авахад хангалттай. Гэсэн хэдий ч, гурван хэмжээст объектуудыг зөв дэлгэцэнд гаргахын тулд фрагмент бүрийн гүнийг мэдэх хэрэгтэй. Өөрөөр хэлбэл, бүрэлдэхүүн хэсгийн утгыг хадгалах шаардлагатай z. Энэ нь OpenGL-ийн гүнийг шалгахад ашигладаг утга юм. Зураг дээр. 3 гэдэг нь тодорхой байна zꞌфрагментийн гүнд тохиромжгүй, учир нь бүх цэгийн төсөөлөл боломжтой ижил үнэ цэнэ zꞌ. Энэ нөхцөл байдлаас гарах арга зам бол псевдо-гүнзийг ашиглах явдал юм.

Псевдо-гүний шинж чанарууд:

  1. Утга дээр үндэслэн псевдо гүнийг тооцоолно z;
  2. Энэ цэг нь ажиглагчид ойртох тусам псевдо гүний утга бага байх болно;
  3. Харагдах байдлын эзэлхүүний урд талын хавтгайд байрлах бүх цэгүүд нь псевдо гүний утгатай -1 байна;
  4. Харагдах байдлын эзэлхүүний хол огтлох хавтгайд байрлах бүх цэгүүд нь псевдо гүний утгатай 1 байна;
  5. Харагдах хэмжээний дотор байрлах бүх хэлтэрхийнүүд нь [-1 1] мужид псевдо-гүний утгатай байна.
Псевдо гүнийг тооцоолох томъёог гаргая. Дараах илэрхийллийг үндэс болгон авч үзье.

Магадлал аТэгээд бтооцох шаардлагатай. Үүнийг хийхийн тулд бид псевдо-гүн 3 ба 4-ийн шинж чанарыг ашигладаг. Бид хоёр үл мэдэгдэх хоёр тэгшитгэлийн системийг олж авдаг.

Системийн хоёр хэсгийг нэмж, үр дүнг үржвэрээр үржүүлье fn, байхад еТэгээд nтэгтэй тэнцүү байж болохгүй. Бид авах:

Хаалтуудыг нээж, нэр томъёог зөвхөн хэсэгтэй байхаар цэгцэлцгээе А, баруун талд зөвхөн хамт б:

(6)-г (5) орлуулъя. Илэрхийлэлийг энгийн бутархай болгон хөрвүүлье:

Хоёр талыг үржүүлнэ -2fn, байхад еТэгээд nтэгтэй тэнцүү байж болохгүй. Үүнтэй төстэй зүйлийг танилцуулж, нэр томъёог дахин цэгцэлж, илэрхийлье б:

(7)-г (6)-д орлуулж, илэрхийлье а:

Үүний дагуу бүрэлдэхүүн хэсгүүд аТэгээд бтэнцүү байна:

Одоо олж авсан коэффициентүүдийг ажлын хэсгийн матрицад (1) орлуулж, координатад юу тохиолдохыг харцгаая. zажиглагчийн нэгэн төрлийн орон зайн дурын цэгийн хувьд. Орлуулах ажлыг дараах байдлаар гүйцэтгэнэ.

Урд зүсэх хавтгай хүртэлх зайг зөвшөөр nнь 2-той тэнцүү бөгөөд алсын зүсэх хавтгай хүртэлх зай етэнцүү 10. Ажиглагчийн нэгэн төрлийн орон зайд таван цэгийг авч үзье.

Харилцан байр суурьцэгүүд болон үзэгдэх байдлын хэмжээ
Цэг Утга Тодорхойлолт
1 1 Цэг нь харагдах байдлын эзэлхүүний урд талын хайчлах онгоцны урд байрладаг. Растержуулалтыг дамжуулдаггүй.
2 2 Цэг нь үзэгдэх орчныг таслах хэсгийн урд ирмэг дээр байрладаг. Растержуулалт хийгдэж байна.
3 5 Цэг нь харагдах байдлын эзэлхүүний урд талын хайчлах ирмэг ба хол хайчлах ирмэгийн хооронд байрладаг. Растержуулалт хийгдэж байна.
4 10 Энэ цэг нь үзэгдэх орчны хязгаарын хамгийн захад байрладаг. Растержуулалт хийгдэж байна.
5 20 Энэ цэг нь үзэгдэх орчны хязгаарын хамгийн захаас цааш байрладаг. Растержуулалтыг дамжуулдаггүй.

Бүх цэгүүдийг матрицаар (8) үржүүлье, дараа нь үүссэн нэгэн төрлийн координатыг хөрвүүлье. Декарт координатууд . Үүнийг хийхийн тулд бид шинэ нэгэн төрлийн бүрэлдэхүүн хэсгүүдийн утгыг тооцоолох хэрэгтэй Тэгээд .
1-р цэг:

Нэг төрлийн координат гэдгийг анхаарна уу CVV-д үнэхээр зөв байрлуулсан бөгөөд хамгийн чухал нь псевдо гүн нь туршилтын шаардлагыг бүрэн хангаж байгаа тул OpenGL-ийн гүнийг шалгах боломжтой болсон.

Координаттай zБид үүнийг ойлголоо, координат руу шилжье xТэгээд y. Өмнө дурьдсанчлан, бүгд ирээдүйтэй хэмжээхарагдах байдал нь CVV-д тохирох ёстой. CVV ирмэгийн урт нь хоёр байна. Үүний дагуу алсын барааны харагдацын өндөр ба өргөнийг ердийн хоёр нэгж болгон шахах ёстой.

Бидэнд булан бий фовиболон хэмжээ тал. Эдгээр утгыг ашиглан өндөр, өргөнийг илэрхийлье.


Цагаан будаа. 5. Харагдах байдлын хэмжээ

Зураг дээрээс. 5 Энэ нь тодорхой байна:

Одоо бид CVV OpenGL-тэй ажилладаг солгой гартай координатын системийн хэтийн төлөвийн проекцийн матрицын эцсийн үзэмжийг авах боломжтой.

Энэ нь матрицын гарал үүслийг дуусгана.

OpenGL-ийн гол өрсөлдөгч болох DirectX-ийн талаар хэдэн үг хэлье. DirectX нь OpenGL-ээс зөвхөн CVV-ийн хэмжээсүүд болон байршлаараа ялгаатай. DirectX-д CVV байдаг куб хэлбэртэйтэнхлэгийн урттай xТэгээд yхоёртой тэнцүү ба тэнхлэгийн дагуу zурт нь нэгтэй тэнцүү байна. Хүрээ xТэгээд y[-1 1] ба муж z-тэй тэнцүү. CVV координатын системийн хувьд DirectX нь OpenGL шиг солгой гартай координатын системийг ашигладаг.

Хэрэглэгчийн баруун гарын координатын системийн хэтийн төлөвийн матрицуудыг харуулахын тулд та Зураг 1-ийг дахин зурах хэрэгтэй. Шинэ тэнхлэгийн чиглэлийг харгалзан 2, 3-р зураг, 4-р зураг З. Цаашдын тооцоолол нь тэмдэг хүртэл бүрэн төстэй юм. DirectX матрицын хувьд псевдо-гүний шинж чанарууд 3 ба 4 нь мужид тохируулан өөрчлөгддөг.

Энэ үед ирээдүйтэй матрицуудын сэдвийг хаалттай гэж үзэж болно.

Өнөөдөр бид виртуал камерын төхөөрөмжийг нарийвчлан авч үзэх болно. Зургаас эхэлцгээе.

Зураг дээр бид камерын координатын орон зайг харж байна. Камерын чиглэл ("харагдах") нь z тэнхлэгийн эерэг чиглэлтэй үргэлж давхцдаг бөгөөд камер өөрөө гарал үүслийн хэсэгт байрладаг.

Зурагт үзүүлсэн пирамидын дотоод орон зай нь хэрэглэгчийн харах виртуал ертөнцийн хэсэг юм.

Гурван онгоцыг анхаарч үзээрэй. Эхнийх нь z тэнхлэгийн дагуу 1-ийн зайд байрладаг. Энэ бол ойрын онгоц юм. Тоглогч өмнө нь юу байгааг хэзээ ч харахгүй. IN энэ тохиолдолд z-ийн утга нэгтэй тэнцүү боловч ерөнхийдөө юу ч байж болно. График дэлгэцийн нэг гэмтэл нь ойролцоох хавтгайтай холбоотой. Энэ согог нь голчлон мэргэн буучдад илэрдэг (учир нь агуу эрх чөлөөкамер). Объект руу хэт ойртох үед та "дотор" байж болно. -аас хамгийн сүүлийн үеийн тоглоомуудЭнэ согог ялангуяа Left 4 dead-д тод харагдаж байсан: олон тооны зомби тоглогч дээр унах үед бусад дүрүүдийг харах боломжтой байв.

z тэнхлэгийн дагуу 100 нэгжийн зайд байрлах онгоцыг алсын хавтгай гэж нэрлэдэг. Дахин хэлэхэд үнэ цэнэ нь дур зоргоороо байж болно. Хэрэглэгч энэ хавтгайгаас цааш байрлах объектуудыг хэзээ ч харахгүй.

Хэрэглэгчийн харах зайг хязгаарлаж буй зургаан онгоцыг хайчлах онгоц гэж нэрлэдэг: зүүн, баруун, дээд, доод, ойр, хол.

Ойрын болон холын хооронд байрлах онгоц нь проекц юм. Ирээдүйд бид энэ онгоцыг z=1 дээр байрлуулна, өөрөөр хэлбэл. энэ нь хамгийн ойрынхтой давхцах болно. Энд би ойрын болон проекцын онгоцуудыг салгаж, тэдгээр нь ижил зүйл биш гэдгийг харуулах болно. Проекцийн хавтгай нь хамгийн сүүлийн координатын хувиргалт: хувиргалтаас гурван хэмжээст орон зайкамерууд - хоёр хэмжээст орон зайд.

Энэ нь проекцын хавтгайн ачаар хэрэглэгч харах болно виртуал ертөнц. Үнэн хэрэгтээ энэ онгоц бол хэрэглэгчдэд харагдах зүйл юм. Проекцийн хавтгай нь урд/арын буфер, програмын цонх, хэрэглэгчийн дэлгэц зэрэг ойлголтуудтай шууд холбоотой. Эдгээр бүх ойлголтыг компьютерийн санах ойд тоонуудын массиваар дүрсэлсэн тэгш өнцөгт зураг гэж үзэж болно.

Гурван хэмжээст ертөнцөөс координатыг проекцын хавтгайд хөрвүүлэх нь эдгээрээс хамгийн хэцүү байдаг одоогоорманайхаар судалсан.

Харах талбар/харагдах талбар

Дээрх зурагт проекцын хавтгай (тиймээс хэрэглэгчийн харах зураг) өргөнтэй байна илүү өндөр. Проекцын хавтгайн өргөн ба өндрийг өнцгийн тусламжтайгаар тодорхойлно. Уулзана өөр өөр нэрсЭдгээр өнцгүүд: харах талбар эсвэл харах талбай. Англи хэл дээр - харах талбар.

Харах талбайг хоёр өнцгөөр тодорхойлно. Тэднийг гэж нэрлэе: fovx - хэвтээ харах талбай, fovy - босоо харах талбай. Үзэх талбайн талаарх дэлгэрэнгүй мэдээлэл: доор.

Z-буфер / w-буфер / гүн буфер (z-буфер / w-буфер / гүн буфер)

Камераас 25 ба 50 нэгжийн зайд байрлах хоёр гурвалжинг харуулсан зургийг харцгаая. Зураг (а) нь орон зай дахь гурвалжингийн байршлыг (дээд харагдах байдал), (б) зурагт эцсийн зургийг харуулав.

Таны таамаглаж байгаагаар зургийг хамгийн алслагдсан элементүүдээс эхлээд хамгийн ойрынх нь хүртэл зурах хэрэгтэй. Тодорхой шийдэл бол эх үүсвэрээс (камераас) объект бүр хүртэлх зайг тооцоолж, дараа нь харьцуулах явдал юм. Компьютерийн график нь арай илүү дэвшилтэт механизмыг ашигладаг. Энэ механизм нь хэд хэдэн нэртэй байдаг: z-буфер, w-буфер, гүн буфер. Элементүүдийн тооны хувьд z-буферийн хэмжээ нь дэвсгэр болон үндсэн буферийн хэмжээтэй ижил байна. Камерт хамгийн ойр байгаа объектын z-бүрэлдэхүүнийг z-буферт оруулна. Энэ жишээнд цэнхэр гурвалжин ногоон гурвалжинтай давхцаж байгаа тохиолдолд цэнхэр өнгийн z-координатыг гүн буферт оруулна. Бид тусдаа хичээл дээр z-буферийн талаар илүү дэлгэрэнгүй ярих болно.

Зөв бичгийн / зэрэгцээ проекц

Орон зайн хэмжээ багасах (гурван хэмжээст орон зай байсан, хоёр хэмжээст болсон) үйлдлийг проекц гэж нэрлэдэг. Юуны өмнө бид хэтийн төлөвийн төсөөллийг сонирхож байгаа боловч эхлээд параллель (зэрэгцээ эсвэл зөв бичгийн проекц) -тэй танилцах болно.

Зэрэгцээ төсөөллийг тооцоолохын тулд нэмэлт координатыг хаяхад хангалттай. Хэрэв бидэнд огторгуйд цэг байгаа бол [ 3 3 3 ] бол z=1 хавтгайд параллель проекцоор энэ нь цэг рүү проекц болно.

Проекцийн хавтгай дээрх хэтийн төлөв

Энэ төрлийн төсөөлөлд бүх шугамууд нэг цэг дээр нийлдэг. Бидний алсын хараа яг ийм байдлаар ажилладаг. Бүх тоглоомын "харагдах байдал" -ыг хэтийн төлөвийн тусламжтайгаар загварчилсан байдаг.


Энэ зургийг өмнөх хичээлийн нэгэн төрлийн координатыг харуулсан зурагтай харьцуул. Гурван хэмжээст орон зайгаас хоёр хэмжээст орон зай руу шилжихийн тулд векторуудын эхний хоёр бүрэлдэхүүн хэсгийг гурав дахь хэсэгт хуваах хэрэгтэй: [ x/z y/z z/z ] = [ x/z y/z 1 ].

Миний дээр бичсэнчлэн, проекцын хавтгай нь хол, ойрын хооронд хаана ч байрлаж болно. Бид проекцын хавтгайг үргэлж z=1 дээр байрлуулах боловч энэ зааварт бид бусад хувилбаруудыг авч үзэх болно. Зургийг харцгаая:


Координатын эхлэлээс проекцын хавтгай хүртэлх зайг d гэж тэмдэглэе. Бид d=1 ба d=5 гэсэн хоёр тохиолдлыг авч үзэх болно. Чухал цэг: проекцын дараах бүх векторуудын гурав дахь бүрэлдэхүүн нь d-тэй тэнцүү байх ёстой - бүх цэгүүд нэг хавтгайд байрлана z=d. Үүнийг векторын бүх бүрэлдэхүүн хэсгүүдийг d: [ xd/z yd/z zd/z ]-аар үржүүлж болно. d=1-тэй бол бид дараахийг авна: [ x/z y/z 1 ], энэ нь нэгэн төрлийн координатыг хувиргахад ашигласан томъёо юм.

Одоо проекцын хавтгайг z=5 (д=5 тус тус) цэг рүү шилжүүлбэл: [ xd/z yd/z zd/z ] = [ 5x/z 5y/z 5 ] болно. Сүүлийн томьёо нь орон зайн бүх векторуудыг нэг хавтгайд буулгах ба d=5.
Энд бидэнд жаахан асуудал байна. Өмнөх томьёо нь гурван хэмжээст векторуудтай ажилладаг. Гэхдээ бид ашиглахаар тохиролцсон 4D векторууд. Энэ тохиолдолд дөрөв дэх бүрэлдэхүүнийг зүгээр л хаяж болно. Гэхдээ бид үүнийг хийхгүй, учир нь түүний хэрэглээ нь тодорхой боломжуудыг өгдөг бөгөөд бид дараа нь хэлэлцэх болно.

олох хэрэгтэй нийтлэг хуваагчГурав, дөрөв дэх бүрэлдэхүүн хэсгүүдийг хуваахад d утга нь гурав дахь бүрэлдэхүүн хэсэгт, нэгдмэл байдал дөрөв дэх хэсэгт үлдэнэ. Энэ хуваагч нь d/z байна. Одоо ердийн [ x y z 1 ] вектороос бид проекц (хуваах) [ x y z z/d ] хийхэд бэлэн вектор авах хэрэгтэй. Энэ нь хувиргах матрицыг ашиглан хийгддэг (ямар нэгэн векторыг энэ матрицаар үржүүлж үр дүнг шалгана уу):


Сүүлийн өөрчлөлт нь хараахан төсөөлөл болоогүй байна. Энд бид зүгээр л бүх векторуудыг шаардлагатай хэлбэрт оруулдаг. Бид проекцын хавтгайг d=1 цэгт байрлуулах бөгөөд энэ нь векторууд дараах байдлаар харагдах болно гэдгийг сануулъя: [ x y z z ].

Перспектив хувиргах матриц

Бид DirectX-д ашигласан хэтийн төлөв хувиргах матрицыг авч үзэх болно.

Одоо бид _34 ямар элементэд зориулагдсан болохыг мэдэж байна. Мөн _11 ба _22 элементүүд нь зургийг хэвтээ ба босоо байдлаар томруулдаг гэдгийг бид мэднэ. xScale болон yScale нэрний ард яг юу нуугдаж байгааг харцгаая.

Эдгээр хувьсагч нь бидний дээр хэлэлцсэн харах хэсгүүдээс хамаарна. Эдгээр өнцгийг нэмэгдүүлэх эсвэл багасгах замаар та зургийг масштаблах (масштаб эсвэл томруулах) боломжтой - проекцын хавтгайн хэмжээ, харьцааг өөрчлөх боломжтой. Томруулах механизм нь камер/камерыг томруулж байгааг тодорхойгүй санагдуулдаг - зарчим нь маш төстэй юм. Зургийг харцгаая:


fov өнцгийг хоёр хэсэгт хувааж, зөвхөн нэг талыг нь авч үзье. Энд бид юу харж байна: fov/2 өнцгийг (мөн үүний дагуу fov өнцгийг) нэмэгдүүлснээр бид өнцгийн нүгэлийг нэмэгдүүлж, cos-ийг бууруулна. Энэ нь проекцын хавтгай нэмэгдэж, үүний дагуу төлөвлөсөн объектуудын бууралтад хүргэдэг. Бидний хувьд хамгийн тохиромжтой өнцөг нь fov/2 = P/4 байх болно. P/4 радиан дахь өнцөг нь 45 градустай тэнцүү гэдгийг сануулъя. Энэ тохиолдолд fov нь 90 градустай тэнцүү байх болно. 45 градусын өнцөг яагаад бидэнд ашигтай вэ? Энэ тохиолдолд масштаб байхгүй бөгөөд cos(P/4)/sin(P/4)=1 байна.

Одоо бид харах талбайн тэн хагасын синус ба косинусыг ашиглан зургийг босоогоор (хэвтээ) хялбархан томруулж чадна (C++ хэл дээрх котангентын функцийг cot гэж нэрлэдэг):

yScale = cos(fovY/2)/sin(fovY/2) = ор(fovY/2)
DirectX нь зөвхөн босоо харааны талбарыг (fovY) ашигладаг бөгөөд хэвтээ масштаб нь дараахь зүйлээс хамаарна. босоо бүсхарах ба харьцаа.

Манай программуудын цонх 500х500 хэмжээтэй гэдгийг сануулъя. Харьцаа: 1-ээс 1. Тиймээс хувьсагчид тэнцүү байх болно: xScale=1, yScale=1.

Стандарт дэлгэц/ТВ-ийн харьцаа: 4:3. Энэ харьцаа нь дэлгэцийн нягтралтай тохирч байна: 640x480, 800x600, 1600x1200. Бид бүрэн дэлгэцийн горимд хараахан хүрэхгүй байгаа ч програмын цонхны хэмжээг өөрчлөх боломжтой. Та цонхны хэмжээг (одоо байгаа параметрүүдээр), жишээлбэл, 640X480 болгож өөрчилж болно. Гэхдээ бүх объектыг сунгахаас сэргийлэхийн тулд (дөрвөлжин нь тэгш өнцөгт шиг харагдах болно) проекцын матриц дахь харгалзах хувьсагчдыг өөрчлөхөө бүү мартаарай.

DirectX дээрх xScale-д зориулсан форум: би бараг мартчихаж.

xScale = yScale / харьцаа
Харьцааг энгийнээр тохируулсан: 1/1, 4/3, 16/9 - эдгээр нь стандарт юм.

Перспектив хувиргах матрицын _33, _34-р элементүүдийн зорилгыг олж мэдэхэд л үлдлээ. zf нь алс холын хавтгайн z координат (алс - холоос), zn нь ойрын хавтгайн z координат (ойрын - ойроос) юм. Элемент _43 = _33 * -zn гэдгийг анхаарна уу.

Эдгээр томъёонууд яг юу болохыг ойлгох хамгийн хялбар арга бол жишээнүүдийн тусламжтайгаар юм. Стандарт векторыг [ x y z w ] дээр үзүүлсэн матрицаар үржүүлье. Би танд цаас, харандаа авч үүнийг хийхийг зөвлөж байна (хоёр матрицыг хэрхэн үржүүлэхээ санаж байгаа гэж найдаж байна). Вектор бүрэлдэхүүн нь дараах хэлбэртэй байна.

1-р = x*xScale
2-р = y*yScale
3-р = z*(zf/(zf-zn)) + w*(-(zn*zf)/(zf-zn)) = (zf/(zf-zn))*(z - w*zn)
4-р = (w*z)/d
Проекцын хувиргалтыг хийцгээе (бид бүх элементүүдийг 4-р бүрэлдэхүүн хэсэг болгон хувааж, d=1 ба w=1 гэж үзье):

1-р = (d*x*xScale)/(w*z) = (x*xScale)/z
2-р = (d*y*yScale)/(w*z) = (y*xScale)/z
3-р = (zf/(zf-zn))*(z - w*zn)*(w*d/z) = (zf/(zf-zn))*(1 - zn/z)
4 = 1
Үүний үр дүнд бид дараах хэлбэрийн векторыг хүлээн авлаа.

[ x/(z*xScale) y/(z*yScale) (zf/(zf-zn))*(1-zn/z) 1 ]
Одоо, хэрэв та zf болон zn-ийн тодорхой утгуудыг зааж өгвөл дараахь зүйлийг олох болно (for эерэг утгууд): хэрэв вектор нь ойролцоох хавтгайн өмнө байрласан бол хувиргасны дараах z-бүрэлдэхүүн хэсэг болно тэгээс бага, хэрэв вектор алс холын хавтгайн ард байрладаг бол z-бүрэлдэхүүн хэсэг нь нэгдлээс их байх болно.

Ойрын болон холын хавтгай яг хаана байрлаж байгаа нь ямар ч ялгаагүй: zn=1, zf=10 эсвэл zn=10, мөн zf=100 (эсвэл бусад утгууд) - хувиргасны дараа харагдах хэсэг нь интервалд байрлана. тэгээс нэг хүртэл, багтаасан.

Проекцын матрицын _33, _34-р элементүүдийн томъёонууд яг ийм зорилготой - ойроос алсын хавтгай хүртэлх зайг сегмент рүү проекцлоход зориулагдсан. Үүнийг хэд хэдэн векторын утгыг тооцоолох замаар шалгана уу тодорхой утгууд zn,zf (тиймээ, цаасан дээр!!!).



Танд нийтлэл таалагдсан уу? Найзуудтайгаа хуваалцаарай!