摘要:點集是下文所述的無向圖矢量場以及網格的實體。將視為語言中的行列的二維數組可能會更好理解一些。打開,將修改為上述修改,意味著將相機沿軸正方向移動了個單位,即讓相機重復靠近。矢量場文件的格式與點集文件相同。
簡介
Hamal 是一份 Python 3 腳本,可將點集、無向圖、曲線、矢量場、網格曲面等三維幾何數據轉化為 POV-Ray 場景文件。也就是說,Hamal 不生產數據,也不負責圖形渲染,它只能算是一個數據格式轉換器,面向對 POV-Ray 有一些了解并且希望使用 POV-Ray 對上述三維幾何圖形進行光線追蹤渲染的人。
安裝$ git clone https://github.com/liyanrui/hamal.git $ cd hamal $ chmod +x hamal $ sudo install hamal /usr/local/bin點集
待渲染的三維點集數據應當存儲在 ASCII 編碼的文本文件中,并且文件的每一行文本都是三維點坐標的字面值,例如:
1.2 3.3 5.4 0.1 2.2 8.5 ... ... ...
現在假設三維點集數據文件為 foo.asc,通過以下命令可將其轉換為 POV-Ray 場景文件 foo.pov 與 foo.inc:
$ hamal foo.asc
這條命令會在當前目錄生成 foo.pov 與 foo.inc,前者為視圖文件,后者為 POV-Ray 模型文件,使用 povray 命令可基于 foo.pov 與 foo.inc 對點集進行渲染:
$ povray foo.pov
渲染結果為當前目錄下的位圖文件 foo.png。例如:
Hamal 默認的點的尺寸是 0.0025,下面這條命令可將其設置為 0.005:
$ hamal --point-size=0.005 foo.asc
再次使用 povray 處理新生成的 foo.png,結果可得:
注:事實上,當點的尺寸設為 x 時,點在 POV-Ray 中的實際尺寸是 x * r,r 為點集近似最小外接球的半徑。
點集是下文所述的無向圖、矢量場以及網格的「實體」。
無向圖對于點集數據文件 foo.asc,假設我們算出了它對應點集的歐幾里得最小支撐樹(EMST)——EMST 是樹,也是無向圖。假設 EMST 的數據被保存到 foo-graph.asc 文件,該文件的每一行都是 EMST 的一條邊的兩個端點,只不過存儲的不是點坐標,而是 foo.asc 文件中對應點坐標的行號,只不過 foo.asc 第一行的行號從 0 開始。將 foo.asc 視為 C 語言中的 n 行 3 列的二維數組可能會更好理解一些。例如:
0 1 1 15677 15677 12881 12881 12849 ... ...
要繪制無向圖,在將無向圖數據轉換為 POV-Ray 的過程中,需要載入點集數據文件與無向圖數據文件:
$ hamal --graph=foo-graph.asc foo.asc
然后使用 povray 對新的 foo.pov 進行處理,便可得到 EMST 的渲染結果:
結果似乎與上文所示的點集模型的渲染結果差不多,這實際上是因為點集非常密集所致。若修改 foo.pov,讓相機距離點集更近一些,便可以看清 EMST 的局部分支。
打開 foo.pov,將
camera { location <0, 0, -2 * model_radius> + model_center * z look_at <0, 0, 0> translate view_center }
修改為:
camera { location model_center * z look_at <0, 0, 0> translate view_center }
上述修改,意味著將相機沿 z 軸正方向移動了 2 * model_radius 個單位,即讓相機重復靠近 EMST。重新用 povray 處理 foo.pov,可得:
點的尺寸與先的寬度似乎太大了一些,可以將它們設置的小一些,可以在使用 hamal 生成 POV-Ray 場景文件時將它們的尺寸設置的小一些,例如:
$ hamal --graph=foo-graph.asc --point-size=0.001 --line-width=0.0005 foo.asc
結果可得:
曲線將一條曲線離散化處理,形成一組首尾相連的線段,這樣就可以構成無向圖,然后利用上一節渲染無向圖的方法進行曲線的渲染。
下圖是一條 3 次 Bezier 曲線的渲染結果:
矢量場矢量場,就是一組矢量,這組矢量的起點即上文所述的點集文件,例如 foo.asc,而它們的終點存儲在矢量場文件中,例如 foo-vector-field.asc。矢量場文件的格式與點集文件相同。
下面的命令可以將矢量場轉化為 POV-Ray 場景文件:
$ hamal --vector-field=foo-vector-field.asc --point-size=0.001 --line-width=0.0005 foo.asc
像上一節那樣修改 foo.pov 文件,拉近相機與模型之間的距離,結果可得:
網格為了便于演示,下面的命令使用了 qhull 為一組隨機點集構建了凸包,然后將凸包數據(三角網格文件)轉換為 POV-Ray 場景文件并交由 povray 進行渲染:
$ rbox 100 W0 > points.asc $ qhull QJ i < points.asc TO hull.asc $ sed -i "1,2d" points.asc $ sed -i "1d" hull.asc $ hamal --object=hull --mesh=hull.asc --point-size=0.03 points.asc $ povray +P hull.pov
hamal 的 --object 選項用于設定 POV-Ray 模型的文件名(不包含擴展名)。
結果可得到如下圖所示的渲染結果:
內幕見「Python 邂逅 POV-Ray」與「趴邊去!」。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41024.html
摘要:相當于分布式數據庫的大腦,一方面負責收集和維護數據在各個節點的分布情況,另一方面承擔調度器的角色,根據數據分布狀況以及各個存儲節點的負載來采取合適的調度策略,維持整個系統的平衡與穩定。原文鏈接雷神自動化運維平臺 作者:瞿鍇,同程藝龍資深 DBA 背景介紹 隨著互聯網的飛速發展,業務量可能在短短的時間內爆發式地增長,對應的數據量可能快速地從幾百 GB 漲到幾百個 TB,傳統的單機數據庫提...
摘要:本指南將引導您使用構建其中一個入門指南。導入入門指南啟動并運行后,從菜單中打開向導。彈出向導將為您提供從網站搜索和選擇任何已發布的指南。概要恭喜您已經設置了,導入了入門指南,并打開了一個瀏覽器選項卡來瀏覽它。 本指南將引導您使用Spring Tool Suite(STS)構建其中一個入門指南。 你要構建什么 您將選擇一個Spring指南并將其導入Spring Tool Suite。然后...
摘要:產品概述產品概述產品概述本篇目錄產品特點產品特點功能簡介功能簡介操作指南操作指南開發指南開發指南任務調度任務調度產品價格產品價格簡稱,是推出的云上智能化輕量級的大數據基礎服務平臺,能夠幫您快速構建起大數據的分析處理能力。 產品概述本篇目錄產品特點功能簡介操作指南開發指南任務調度產品價格UCloud Smart Data Platform(簡稱 USDP),是 UCloud 推出的云上智能化、...
閱讀 1625·2021-09-22 15:25
閱讀 1506·2021-09-07 10:06
閱讀 3183·2019-08-30 15:53
閱讀 1090·2019-08-29 13:12
閱讀 3373·2019-08-29 13:07
閱讀 725·2019-08-28 18:19
閱讀 2269·2019-08-27 10:57
閱讀 982·2019-08-26 13:29