最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

關(guān)于透視的一些筆記

2023-05-25 22:00 作者:友紀(jì)V-入OP  | 我要投稿

為什么頭圖是python?因?yàn)楹竺婧芏嗍纠龍D是用turtle畫(huà)的(

該筆記記錄了關(guān)于透視的心智模型,一些繪制透視圖的準(zhǔn)則,并簡(jiǎn)述了倍增線條、二等分、四等分、任意等分和透視中畫(huà)圓的方法。

關(guān)于透視的心智模型

沒(méi)看過(guò)多少材料,也不懂?dāng)?shù)學(xué),這一節(jié)全程胡謅,注意甄別!例子均使用 blender 繪制。

透視是在二維的畫(huà)布上展示三維物體的技術(shù),可以通過(guò)計(jì)算機(jī)圖形學(xué)(以及攝影?不知道呢)中的抽象來(lái)理解透視,并建立對(duì)透視的心智模型。

這里有三個(gè)概念:相機(jī)(camera),視口(viewport),對(duì)象(object);相機(jī)不用解釋?zhuān)暱诳梢哉J(rèn)為是相機(jī)的可視范圍,也是我們的畫(huà)面本身,它在這里是一個(gè)和相機(jī)有一定距離的矩形,其中相機(jī)在視口的投影為視口的中心。視口可以不是平面,通過(guò)改變平面的形狀,我們可以得到其它類(lèi)型的透視比如魚(yú)眼透視,人眼是魚(yú)眼透視。改變視口和相機(jī)的距離和視口的寬高比,我們就能得到不同的焦距;對(duì)象即為我們想繪制的對(duì)象,如立方體,球,少女等。

camera, viewport, object
對(duì)象在viewport上投影的內(nèi)容(即顯示的內(nèi)容)

我們要繪制特定對(duì)象,就是做對(duì)象到相機(jī)在視口上的投影,具體來(lái)說(shuō),就是對(duì)對(duì)象的每個(gè)部分,做它和相機(jī)的連線,找到連線在視口上的交點(diǎn)。方法類(lèi)似于下圖(中心),但是投影面 P 在點(diǎn)和對(duì)象之間

中心投影

就是這么簡(jiǎn)單,只需要投影這一道工序,近大遠(yuǎn)小,消失點(diǎn),一二三點(diǎn)透視,一切透視圖的性質(zhì)都自動(dòng)地得到了。

近大遠(yuǎn)小

同一個(gè)對(duì)象,如果它正好在視口上,則它的投影大?。ɡL制的大?。┖退旧硪恢?;它離視口越遠(yuǎn),它向相機(jī)在視口上的投影就會(huì)越小,這是符合直覺(jué)的。

近大遠(yuǎn)小_縮略
近大遠(yuǎn)小_鏡頭

畸變

但一個(gè)很有趣的點(diǎn)是,如果這個(gè)物體始終在平行于視口的平面上運(yùn)動(dòng),則(只要還在可視范圍內(nèi),)它的投影大小是不會(huì)縮短的,甚至有可能會(huì)變大!下圖是一個(gè)很明顯的例子,這些球體的球心均在同一個(gè)平面上且半徑相同,但形狀完全不同:

畸變_縮略
畸變_鏡頭

是誰(shuí)說(shuō)球在任何角度都是球的?

焦距:遠(yuǎn)處的變化小,近處的變化大

攝影中有所謂的長(zhǎng)焦鏡頭,他們說(shuō),長(zhǎng)焦鏡頭有“空間壓縮”效果,變形幅度小,近大遠(yuǎn)小的感覺(jué)不明顯。通過(guò)調(diào)整視口的大小,可以模擬長(zhǎng)焦鏡頭的效果。

固定視口的寬高比和相機(jī)到視口的距離,則視場(chǎng)角(FOV,水平方向可視角度,常用在游戲里)和焦距成反比,下面展示了各視場(chǎng)角下同一個(gè)場(chǎng)景:

FOV=120
FOV=60
FOV=20
FOV=5

可以認(rèn)為,不同視場(chǎng)角(焦距)下所看到的場(chǎng)景,就是去裁剪“原圖”中間的部分并放大到原圖的大小。

通過(guò)固定物體平行于視口方向的大小,并調(diào)整遠(yuǎn)離視口方向的大小,我們能夠模擬不同焦距下的畫(huà)面,這個(gè)可以應(yīng)用在繪畫(huà)中,它也證明,比較指向不同消失點(diǎn)的線段的長(zhǎng)度是不可能的,因?yàn)樗鼤?huì)隨著焦距的大小而改變。

下面是不同焦距看同一張椅子:

FOV=60
FOV=20,注意該圖的“地面”并非無(wú)限大的(我好像忘了修改遠(yuǎn)裁切面了……這可能只有100m遠(yuǎn)?),所以椅子的上部會(huì)在“地平線”(視平線)之上,這實(shí)際上是不可能的

也能認(rèn)識(shí)到,當(dāng)鏡頭距離物體非常遠(yuǎn)的時(shí)候,物體看起來(lái)就會(huì)像正視圖一樣了。

一點(diǎn)透視

當(dāng)六面體的一個(gè)面平行于視口的時(shí)候,得到的就是一點(diǎn)透視,下面展示了低焦距和高焦距下的一些一點(diǎn)透視的正方體,其中高焦距將相機(jī)移遠(yuǎn)了。

一點(diǎn)透視_縮略
一點(diǎn)透視_低焦距
一點(diǎn)透視_高焦距

平行于視口的線總是平行的

如果我們沿遠(yuǎn)離鏡頭的軸旋轉(zhuǎn)一個(gè)六面體,則該六面體背后的面的邊的方向如何確定?和面前的面的邊平行。因?yàn)檫@兩條邊和視口平行且相互平行,因此投影到視口上仍舊是平行的。

平行于 viewport 的線依舊平行

二點(diǎn)透視

如果六面體只有一條邊平行于視口,則我們得到二點(diǎn)透視。

下面的立方體均沿垂直方向旋轉(zhuǎn)了 45 度:

二點(diǎn)透視

三點(diǎn)透視

如果六面體沒(méi)有任何面和邊平行于視口,則得到三點(diǎn)透視。三點(diǎn)透視通常出現(xiàn)在非平視的情況,下面的圖示在二點(diǎn)透視的基礎(chǔ)上將相機(jī)的角度向下調(diào)整了 20 度,并向上移動(dòng)了相機(jī)。

三點(diǎn)透視

tips

  1. 使用下面的畫(huà)法的時(shí)候盡量減少測(cè)量次數(shù)以減少錯(cuò)誤的累計(jì),比如畫(huà)等分時(shí)盡量把問(wèn)題轉(zhuǎn)化為畫(huà) 2 的 n 次方等分

  2. 始終關(guān)心視平線高度

  3. 垂直消失點(diǎn)比水平消失點(diǎn)更重要(因?yàn)椴煌瑢?duì)象一般水平消失點(diǎn)不同,但垂直消失點(diǎn)相同)

  4. 把要畫(huà)的事物當(dāng)成六面體(盒子)去看待

  5. 始終使用近大遠(yuǎn)小的常識(shí)去檢查畫(huà)面是否正確,比如二分事物時(shí),靠近鏡頭的部分會(huì)比遠(yuǎn)離對(duì)象的部分更大,猜測(cè)等分線的位置時(shí)也可以使用此種手段

  6. 指向不同消失點(diǎn)的線段的長(zhǎng)度是無(wú)法比較的,會(huì)隨著相機(jī)的距離和 FOV(焦距)發(fā)生改變,因此選一個(gè)合適的比例并假定它們等長(zhǎng)即可

  7. 不要追求完全徒手繪畫(huà),該依賴(lài)工具就依賴(lài)工具,無(wú)論是透視尺還是 3d 輔助繪畫(huà),內(nèi)容和效率最重要

  8. 不要追求完全正確的透視,要為內(nèi)容服務(wù),如果畫(huà)面需要夸張和扭曲,那就夸張和扭曲

一些透視畫(huà)法

下面的透視畫(huà)法中均依賴(lài)這樣的假設(shè):在平面作圖中僅使用連線來(lái)進(jìn)行的作圖方法,在透視圖中仍然適用,無(wú)論一點(diǎn),二點(diǎn),還是三點(diǎn)透視。無(wú)論這個(gè)假設(shè)是否為真,至少下面的畫(huà)法的效果都還蠻符合直覺(jué)。

下面的畫(huà)法均使用一個(gè)二點(diǎn)透視圖做例子(這些畫(huà)法都是在面上操作的,一個(gè)面顯然最多是二點(diǎn)透視)。

要將這些畫(huà)法應(yīng)用到一點(diǎn)透視,把“做點(diǎn)到消失點(diǎn)的連線”修改為“過(guò)該點(diǎn)的邊的平行線”即可。

二等分

因?yàn)楸对鼍€段也需要用到二等分,這里先描述二等分畫(huà)法。二等分就是將一個(gè)指向某消失點(diǎn)的線段分為等長(zhǎng)的兩段。

要進(jìn)行二等分,只需對(duì)要操作的面的相對(duì)交點(diǎn)做連線,找兩條連線的交點(diǎn)和消失線做直線,該直線即為等分線,其和面的邊的交點(diǎn)即為等分點(diǎn)。

比如,要二等分 CD,則先連接 AC,BD,找到交點(diǎn) E,直線 EY 即為二等分線,EY 和 AB,CD 的交點(diǎn)為二等分點(diǎn);垂直方向的二等分點(diǎn)同理。

二等分

這個(gè)很容易證明,不表了。

倍增線段

倍增線段,該畫(huà)法將一條指向消失點(diǎn)的線段長(zhǎng)度增加一倍。它常用于“拷貝”等分點(diǎn)。

要做 DC 的倍增線段,需要找到 BC 的中點(diǎn) E(在垂直方向上應(yīng)用二等分),連接和延長(zhǎng) AE,AE 和 DC 的延長(zhǎng)線交點(diǎn)為 F,則 DC = CF。

倍增線段

要證明 DC=CF,只需要證明三角形 BEA 和三角形 CEF 全等即可,這是容易證的。

四等分

四等分是容易的——做二等分后,前后再各做一次二等分即可。任意 2 的 n 次方等分均可如此。

任意等分

偶數(shù)等分在網(wǎng)絡(luò)上都能查到很多資料,現(xiàn)在該來(lái)點(diǎn)魔法嘍——精確地畫(huà)出任意 n 等分,即使 n 是質(zhì)數(shù)或任意奇數(shù),這里直接給出規(guī)律——要找到 n 等分點(diǎn),若 n 為偶數(shù),則需要先找到 n/2 等分點(diǎn)(n 等分點(diǎn)可以在找到 n/2 等分點(diǎn)后再在前后進(jìn)行一次二等分得到),若 n 為奇數(shù),則需要先找到 n-1 等分點(diǎn)。這個(gè)方法是如此地機(jī)械化,以至于可以編程實(shí)現(xiàn),下面是幾種使用該方式的示例,分別使用 p5.js,geogebra,turtle 繪制。

1xx等分
11等分
17等分

證明

現(xiàn)在試著證明,如果已經(jīng)得到了 n 等分線,能僅通過(guò)連線(在平面情況下是做平行線,透視情況下是連接點(diǎn)和消失點(diǎn))和找交點(diǎn)找到 n+1 等分線。

考慮下面的平面矩形,我們已經(jīng)找到 n 等分線(EF),現(xiàn)在要找 n+1 等分點(diǎn)。連接 BD,AF,它們的交點(diǎn)在 n+1 等分線上,證明如下(不會(huì) latex,手寫(xiě)了):

三等分

要找到三等分點(diǎn),我們首先需要找到二等分線 EF,然后連接 AF,AF 和 BD 交點(diǎn)就在三等分線上。做完第一個(gè)三等分線后,可以使用倍增來(lái)找到第二個(gè),或者對(duì)后三分之二這個(gè)矩形找二等分。

三等分

五等分

要找到五等分點(diǎn),我們首先需要找到四等分線 EF(這是容易做的),然后連接 AF,AF 和 BD 交點(diǎn)就在五等分線上。做完第一個(gè)五等分線后,可以對(duì)后五分之四的矩形做四等分。

五等分

七等分

要找到七等分點(diǎn),首先需要找到六等分線,要找到六等分線,首先要找到三等分線……以此類(lèi)推。做完第一個(gè)七等分線后,對(duì)后七分之六點(diǎn)矩形做六等分即可,或者使用倍增法一步步推。

十一等分

剩余無(wú)論多少等分都是一樣的操作,比如對(duì)十一等分,我們需要先找到十等分點(diǎn),因此需要先找到五等分點(diǎn),因此需要先找到四等分點(diǎn)……找到第一個(gè)十一等分線后,對(duì)后十一分之十的矩形做十等分即可。

透視圓的畫(huà)法

不想寫(xiě)了,感覺(jué)這個(gè)沒(méi)啥實(shí)踐意義,留張圖。

參考資料

  • 《Computer Graphics from Scratch》

  • https://coloso.global/en/products/illustrator_mogoon_us

代碼

下面的代碼包括繪制二三四五等分和倍增線段的python代碼,沒(méi)啥意義,只是水水字?jǐn)?shù)。


關(guān)于透視的一些筆記的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
洪雅县| 松滋市| 衡山县| 南京市| 芒康县| 沧州市| 永兴县| 吉木萨尔县| 安福县| 黑山县| 五河县| 海林市| 兰西县| 通河县| 通辽市| 台东县| 陇川县| 文昌市| 黄陵县| 广安市| 平顺县| 延长县| 辽阳市| 旬邑县| 津市市| 宜宾市| 广灵县| 天柱县| 内黄县| 正安县| 平和县| 青龙| 保靖县| 雅江县| 呼图壁县| 会泽县| 苍溪县| 满洲里市| 河池市| 乃东县| 庆安县|