計算機圖形學理論(1):建模基礎

本系列根據國外一個圖形小哥的講解為本,整合互聯網的一些資料,結合自己的一些理解。

場景的組成部分

場景相當于一個或多個模型的集合。模型包含以下內容:

  • 結構描述:幾何形狀,如頂點、紋理坐標等
  • 表面描述:外觀及光照等

image.png

猶他壺模型(Utah teapot)

對于學圖形學的人來說,猶他壺并不陌生。猶他壺模型是計算機圖形學早期著名的3D模型(大約70年代~80年代)。在那個時候,3D模型通常被表示為多項式函數,主要技術被稱為“樣條曲線(spline curves)”,該技術將模型劃分為多個表面塊,如下所示:
image.png

三角形網格

現在我們主要使用多邊形或三角形網格來構建模型。

3D 對象數據的類型

  • 多邊形網格(polygonal meshes) —— 代表復雜的現實世界對象。
  • 樣條面片(spline patches) —— 程序化建模。
  • 體積數據,體素(voxel) —— 通過將對象的密度存儲在三維數組中來表示對象。
  • 構造立體幾何(Constructive Solid Geometry) —— 常用于機器零件。
  • 其他。

這是網格和樣條線之間的比較:
image.png

建模技術

點云技術

image.pngimage.png
首先,點云樣本是非結構化的數據,所以沒有關于兩點之間鄰接(連通性)的信息。為了使點能夠連接在一起,我們必須使用額外的算法,例如 K 最近鄰算法。

使用點云技術的優點之一是“簡單”。此外,由于點云樣本通過掃描能成為“原始數據raw data”,因此如今備受關注。

使用相機進行 3D 掃描

原理是通過一系列相機掃描物體,之后相機生成點云并捕獲紋理。

原始數據都是“rgbd”數據,“rgb”的部分用于表示顏色和紋理,然后“d”(深度)用于生成點云。深度是指點與相機之間的距離。
image.png

多邊形湯(Polygon Soup)

多邊形湯是一組非結構化的多邊形。它可以渲染一個對象,但不可以再進行其他操作,因為這些多邊形之間并沒有幾何上的連系,也不含拓撲信息。為什么起這個名可以看下知乎的一個回答。
image.png

網格(Mesh)

網格是一組連接的多邊形(通常是三角形)。 例如,多邊形可以由多個三角形組成,并且三角形表示為一組頂點。一開始三角形之間沒有連接,我們可以通過為每個頂點附加有關相鄰三角形的附加信息(索引)來實現多邊形上的連接。
image.pngimage.png
網格是表示對象的顯式方法。

隱式曲面(水平集 Level set)

通過使用三維函數,我們可以隱式地表示一個對象。曲面表面上的點應滿足“F(x,y,z) = 0”。當函數的結果為零時,表示該點是曲面上的一個點,稱為等值曲面。
image.pngimage.png
這種技術有優點也有缺點。
優點:

  • 可以保證模型無孔洞
  • 易于改變拓撲

缺點:

  • 必須遍歷體積數據,就會造成 CPU 時間開銷,導致速度慢。
  • 需要更多的內存空間。

體素(Voxels)

醫療領域在CT、MRI中經常使用此類物體。體素是體積數據的 3D 圖像。
image.png

構造立體幾何

使用主要的幾何圖形,從布爾運算的層次結構中獲得目標幾何圖形(并集、差集和交集),例子之一是CAD程序中的機械建模。
image.png

場景圖(Scene Graph)

文章的開頭提到過“一個場景相當于一個或多個模型的組合”。我們可以將模型放置為層次樹,而不是將它們放置為列表。

如下圖所示,從辦公桌的角度來看,桌面上的一組模型(電話、鏡子、相框)是葉子節點。通過使它們依賴于辦公桌,我們可以構建新的模型。
image.pngimage.png
通過繪制一組對象的圖形,我們可以應用視椎體進行剔除。“視錐體”是相機能夠看到物體的空間。“剔除”是一種不會在視錐體空間之外渲染對象的技術。創建一組模型后,我們可以為包含所有對象的組設置包圍體。如果我們將視圖空間投影到單位立方體空間(NDC空間),紅球將位于該空間之外。然后,我們可以在 CPU 操作內將其從渲染目標中刪除。
image.png

程序化建模

我們在這里使用替換規則。
image.png
程序化建模的一個例子是“地形”。我們不使用純隨機數,而是利用高度圖并生成受相鄰位置高度影響的隨機數。
image.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3中的defineModel

目錄 一、vue3的defineModel介紹 二、defineModel使用 (1)在vite.config.js中開啟 (2)子組件 (3)父組件 一、vue3的defineModel介紹 為什么要使用到defineModel呢?這里有這樣一種場景&…

“快速排序:一種美麗的算法混沌”(1.hoare)

歡迎來到我的博客!在今天的文章中,我將采用一種獨特且直觀的方式來探討我們的主題:我會使用一幅圖像來貫穿整篇文章的講解。這幅精心設計的圖表不僅是我們討論的核心,也是一個視覺輔助工具,幫助你更深入地理解和掌握本…

學習深度強化學習---第2部分----RL動態規劃相關算法

文章目錄 2.1節 動態規劃簡介2.2節 值函數與貝爾曼方程2.3節 策略評估2.4節 策略改進2.5節 最優值函數與最優策略2.6節 值迭代與策略迭代2.7節 動態規劃求解最優策略 本部分視頻所在地址:深度強化學習的理論與實踐 2.1節 動態規劃簡介 態規劃有兩種思路&#xff1…

前端 Web Workers 簡介

簡介 以前我們總說,JS 是單線程沒有多線程,當 JS 在頁面中運行長耗時同步任務的時候就會導致頁面假死影響用戶體驗,從而需要設置把任務放在任務隊列中;執行任務隊列中的任務也并非多線程進行的,然而現在 HTML5 提供了…

App備案、ios備案Bundle ID查詢、公鑰信息、SHA-1值

App備案、ios備案Bundle ID查詢、公鑰信息、SHA-1值 Bundle ID這個就不說了,都知道是啥,主要說公鑰信息和SHA-1值的獲取 打開鑰匙串訪問,找到當前需要備案App的dis證書,如下: #####右鍵點擊顯示簡介 #####可以看…

03.仿簡道云公式函數實戰-QLExpress初探

1. 前言 在上一篇文章中,我們簡單介紹了一下表達式引擎,并引出我們的主角QLExpress.在這篇文章中,我們先來一個QLExpress的熱身。 2. 初探QLExpress 源碼地址:https://github.com/alibaba/qlExpress 筆者下載源碼的版本是3.3.…

STL源碼剖析筆記——適配器(adapters)

系列文章目錄 STL源碼剖析筆記——迭代器 STL源碼剖析筆記——vector STL源碼剖析筆記——list STL源碼剖析筆記——deque、stack,queue STL源碼剖析筆記——Binary Heap、priority_queue STL源碼剖析筆記——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

【Spring 基礎】00 入門指南

【Spring 基礎】00 入門指南 文章目錄 【Spring 基礎】00 入門指南1.簡介2.概念1)控制反轉(IoC)2)依賴注入(DI) 3.核心模塊1)Spring Core2)Spring AOP3)Spring MVC4&…

php實現截取姓名中的第一個字作為頭像的實戰記錄

php 截取中文字符串第一個字 substr 函數 在 PHP 中,使用 substr 函數來截取中文字符串的第一個字。由于 PHP 默認的字符編碼是 UTF-8,它可以正確處理中文字符。 $chineseString "你好世界"; $firstChar substr($chineseString, 0, 1); e…

vue2 組件內路由守衛使用

1、beforeRouteEnter 進入頁面 to – 即將要跳轉到的頁面 form – 跳轉前的頁面,從哪個頁面跳轉過來的 next – 下一步,若無指定跳轉的路由,設置為空 next() 即可 beforeRouteEnter(to, from, next) {next() }, 使用 beforeRouteEnter 時&…

中文分詞演進(查詞典,hmm標注,無監督統計)新詞發現

查詞典和字標注 目前中文分詞主要有兩種思路:查詞典和字標注。 首先,查詞典的方法有:機械的最大匹配法、最少詞數法,以及基于有向無環圖的最大概率組合,還有基于語言模型的最大概率組合,等等。 查詞典的方法…

知識產權服務企業網站建設效果如何

知識產權服務也有較高的市場需求度,尤其如今互聯網深入到各個行業,無論個人還是企業都會以不同的方式經營,相應的為保障自身權益,注冊商標、專利等自然不可少,而對普通小白來說,想要完成這些流程也是有些難…

Python實現獲取b站視頻的彈幕內容

前言 本文是該專欄的第39篇,后面會持續分享python的各種干貨知識,值得關注。 在本專欄之前,有詳細介紹使用python增加b站視頻的播放量方法,感興趣的同學可往前翻閱《Python-增加b站視頻播放量》。而本文,筆者再來單獨的詳細介紹,通過python來獲取b站視頻的彈幕內容。如下…

CGAL的3D皮膚表面網格

1、介紹 Edelsbrunner 引入的皮膚表面和具有豐富而簡單的組合和幾何結構,使其適合在生物計算中模擬大分子。 對這些表面進行網格劃分通常是進一步處理其幾何形狀所必需的,例如在數值模擬和可視化中。 皮膚表面由一組加權點(輸入球&#xff09…

力扣labuladong——一刷day70

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣814. 二叉樹剪枝二、力扣1325. 刪除給定值的葉子節點 前言 這道題的難點在于要一直剪枝,直到沒有值為 0 的葉子節點為止,只有從…

RecursionError: maximum recursion depth exceeded in comparison

諸神緘默不語-個人CSDN博文目錄 這個bug的產生原因是運行rouge包時句子太長,所以遞歸次數過多了。完整的報錯信息懶得粘了,總之很長,解決方案就是手動在程序開始處就增大遞歸次數: import sys sys.setrecursionlimit(100000)具體…

html通過CDN引入Vue使用Vuex以及Computed、Watch監聽

html通過CDN引入Vue使用Vuex以及Computed、Watch監聽 近期遇到個需求,就是需要在.net MVC的項目中,對已有的項目的首頁進行優化,也就是寫原生html和js。但是咱是一個寫前端的,寫html還可以,.net的話,開發也…

K8S學習指南-minikube的安裝

簡介 Minikube 是一個用于在本地開發環境中運行 Kubernetes 集群的工具。它允許開發人員在單個節點上體驗 Kubernetes,無需配置復雜的生產環境。本指南將詳細介紹在 Windows、CentOS 和 Ubuntu 系統上安裝 Minikube 的步驟。 1. Windows 系統安裝 1.1 &#xff1…

期末速成數據庫極簡版【查詢】(3)

目錄 多表查詢 【8】多表連接——內連接 🙂等值連接 🙂自然連接 🙂非等值連接 【9】多表連接——外連接 【10】交叉連接不考 【11】聯合查詢 【12】擴展多表連接 【13】嵌套查詢 🙂 多表查詢 【8】多表連接——內連…

HIVE學習(hive基礎)

HIVE基礎介紹 一、HIVE簡介二、hive的數據類型1、基本數據類型2、復合數據類型 三、HIVE的DDL操作四、創建一個表1. 建表語句 五、修改表結構1.修改表名2. 列修改或增加3. 修改分區 五、常見函數六、一對一關聯left join左關聯right join 右關聯內連接全連接查詢只有A表的數據 …