Blender烘焙AO操作及對應的python代碼

(一)Blender軟件操作

1. 導入模型(這里省略)

2. 材質設置

模型使用的所有材質都需要刪除Surface Shader,沒有其他多余的計算,可以大量縮短烘焙時間。刪除之后的只留下一個材質輸出節點,如圖所示:?

3. 導出Textures設置

在ShaderEditor中按照如圖所示步驟,創建Image Texture節點:?

在如圖所示位置點擊New創建Image:?

將Image的寬和高設置設置為2048像素,Color的亮度為0.73作為空白位置的填充顏色,如圖所示

節點的插值計算設置為Smart,邊界外插值設置為Extend,色彩空間設置為Raw,可以使最終烘焙出的AO對比更強烈,連接到材質的Surface,如圖所示:?

復制Image節點,鏈接到模型的其他材質上,否則其他材質所對應的部位不會參與烘焙。

4. 渲染器設置

將渲染器設置為Cycles,并選擇GPU作為計算設備,顯卡配置高的電腦烘焙時間會縮短很多:?

采樣方式選擇Branched Path Tracing,如此便可以對每一部分材質屬性設置采樣值了:

?

將整體采樣設置為最低,只提高AO的采樣值,這樣可以縮短計算其他材質屬性所浪費的時間:

5. 烘焙設置

烘焙類型設置為Ambient Occlusion:?

輸出設置中把邊緣擴展設置8像素,然后關閉Clear Image,否則渲染器會把ImageTexture中設置的Color清除

(二)Python代碼實現

參考上面軟件操作流程語句,記錄blender代碼和補充的處理

1. 材質設置

刪除材質關聯的信息,加快烘焙速度,對于沒有材質的,需要創建至少一個材質

# 刪除材質關聯的信息
for mat in bpy.data.materials:nodes = mat.node_tree.nodesfor node in nodes:if node.type != 'OUTPUT_MATERIAL':nodes.remove(node)
# 若模型沒有材質,需要創建材質,并關聯到對應的mesh
unique_material = None
if len(bpy.data.materials) == 0:bpy.ops.object.material_slot_add()bpy.ops.material.new()unique_material = bpy.data.materials[-1]
for object in bpy.data.objects:if object.type == 'MESH':if unique_material is not None:object.active_material = unique_material

2.?創建AO貼圖和texture節點


# 創建AO貼圖
AOMAP_NAME = 'AO.png'
bpy.ops.image.new(name=AOMAP_NAME,width=2048,height=2048,color=(186, 186, 186, 255),generated_type='BLANK')
aomap = bpy.data.images[AOMAP_NAME]
aomap.colorspace_settings.name ='Raw'# 創建texture節點,關聯AO貼圖,設置節點屬性
for mat in bpy.data.materials:mat.node_tree.nodes.new(type="ShaderNodeTexImage")mat.node_tree.nodes[-1].image = aomapmat.node_tree.links.new(mat.node_tree.nodes[-1].outputs['Color'] ,mat.node_tree.nodes[0].inputs['Surface'])mat.node_tree.nodes[-1].interpolation ='Smart'mat.node_tree.nodes[-1].extension ='EXTEND'

3. 渲染器設置


render = bpy.context.scene.render
render.engine = 'CYCLES'
bpy.data.scenes['Scene'].cycles.device = 'GPU'
bpy.data.scenes['Scene'].cycles.progressive ='BRANCHED_PATH'
bpy.data.scenes['Scene'].cycles.aa_samples =1
bpy.data.scenes['Scene'].cycles.ao_samples =256

4.?烘焙設置


bpy.data.scenes['Scene'].cycles.bake_type ='AO'
bpy.data.scenes['Scene'].render.bake.margin =4
bpy.data.scenes['Scene'].render.bake.use_clear =False

5. 烘焙

需要選中所有mesh,并且不能選中其他類型的資源,不然會報錯

bpy.ops.object.select_all(action='DESELECT')for object in bpy.data.objects:if object.type == 'MESH':bpy.context.view_layer.objects.active = objectobject.select_set(True)
# 開始烘焙
bpy.ops.object.bake(type='AO')
aomap.save_render(output_path)

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

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

相關文章

CentOS Stream 9系統Cgroup問題處理

安裝docker容器啟動失敗 之前適配過Ubuntu系統的容器,由于版本比較高,沒有掛載Cgroup的路徑。這次使用Centos Stream 9系統安裝docker容器時也遇到了這個情況。由于處理方式有些不一樣,所以記錄一下。 這是docker容器啟動過報錯的輸出日志。…

Windmill:最快的自托管開源工作流引擎

我們對 Windmill 進行了基準測試,認為它是 Airflow、Prefect 甚至 Temporal 中最快的自托管通用工作流引擎。對于 Airflow,有速度快了 10 倍! 工作流引擎編排工作人員的有向無環圖 (DAG) 中定義的作業,同時尊重依賴性。 主要優點…

Haclon簡介及數據類型

Haclon簡介 HALCON是由德國MVtec公司開發的機器視覺算法包,它由一千多個各自獨立的函數(算子)構成,其中除了包含各類濾波、色彩以及幾何、數學轉換、形態學計算分析、圖像校正,目標分類辨識、形狀搜尋等基本的圖像處理…

通配符OV SSL證書都有哪些品牌?

隨著數字化時代的到來,網站和在線服務的安全性變得尤為重要。為了保護用戶的隱私和數據安全,SSL證書越來越受到重視。OV證書是一種高級別的SSL證書,可以提供更多的驗證和保護。而通配符SSL證書則可以保護多個子域名,非常適用于企業…

C/C++文件操作————寫文件與讀文件以及通訊錄的改進 (保姆級教學)

個人主頁:點我進入主頁 專欄分類:C語言初階 C語言程序設計————KTV C語言小游戲 C語言進階 C語言刷題 歡迎大家點贊,評論,收藏。 一起努力,一起奔赴大廠。 目錄 1.前言 2.寫文件函數與讀文件函數 …

多個JDK版本可以嗎:JDK17、JDK19、JDK1.8輕松切換(無坑版)小白也可以看懂

多個版本JDK切換 多個JDK:JDK17、JDK19、JDK1.8輕松切換(無坑版)小白也可以看懂 提示:看了網上很多教程,5w觀看、32w觀看、幾千觀看的,多多少少帶點坑,這里我就把踩過的坑都給抹了 文章目錄 多…

「Verilog學習筆記」不重疊序列檢測

專欄前言 本專欄的內容主要是記錄本人學習Verilog過程中的一些知識點,刷題網站用的是牛客網 題目要求檢測a的序列,a為單bit輸入,每個時刻可能具有不同的值, 當連續的六個輸入值符合目標序列表示序列匹配,當六個輸入值的…

免費接口集合讓開發更簡單

企業基本信息(含聯系方式):通過公司名稱/公司ID/注冊號或社會統一信用代碼獲取企業基本信息和企業聯系方式,包括公司名稱或ID、類型、成立日期、電話、郵箱、網址等字段的詳細信息。企業基本信息:通過公司名稱/公司ID/注冊號或社會統一信用代…

Redisson分布式鎖源碼解析、集群環境存在的問題

一、使用Redisson步驟 Redisson各個鎖基本所用Redisson各個鎖基本所用Redisson各個鎖基本所用 二、源碼解析 lock鎖 1) 基本思想: lock有兩種方法 一種是空參 另一種是帶參 * 空參方法:會默認調用看門狗的過期時間30*1000&…

內網穿透的應用-如何在本地安裝Flask,以及將其web界面發布到公網上并進行遠程訪問

輕量級web開發框架:Flask本地部署及實現公網訪問界面 文章目錄 輕量級web開發框架:Flask本地部署及實現公網訪問界面前言1. 安裝部署Flask2. 安裝Cpolar內網穿透3. 配置Flask的web界面公網訪問地址4. 公網遠程訪問Flask的web界面 前言 本篇文章講解如何…

linux環境下samba服務器的配置

linux服務器怎么創建用戶 在Linux服務器上,可以使用以下步驟創建用戶: 使用adduser命令創建新用戶: sudo adduser username將 username 替換為你要創建的用戶名。這個命令會提示你輸入新用戶的密碼以及其他相關信息。 如果需要為新用戶設…

qml PathPercent使用介紹

PathPercent 是一個QML類型,它表示 Path 上的一個百分比位置。這個類型通常在 PathAnimation 或 PathInterpolator 中使用,以便在路徑上產生一個特定的位置。它提供了一種方式來表示在 Path 元素上的某個點。通過 PathPercent,你可以指定一個百分比,來表示沿著路徑的位置,…

『亞馬遜云科技產品測評』活動征文|通過Lightsail搭建個人筆記

提示:授權聲明:本篇文章授權活動官方亞馬遜云科技文章轉發、改寫權,包括不限于在 Developer Centre, 知乎,自媒體平臺,第三方開發者媒體等亞馬遜云科技官方渠道 文章目錄 前言實踐知識儲備Lightsail介紹Leanote介紹實踐…

系統架構設計: 21 論敏捷軟件開發方法及其應用

論敏捷軟件開發方法及其應用 請圍繞“敏捷軟件開發方法及其應用”論題,依次從以下三個方面進行論述。 ①簡述你所參與開發的運用了敏捷技術的項目,以及你所擔任的工作; ②分析并討論敏捷<

VSCode插件koroFileHeader的使用。

文章目錄 前言一、koroFileHeader是什么&#xff1f;二、使用步驟1.安裝1.配置2.食用 前言 今天的天氣還不錯&#xff0c;真是金風玉露一相逢&#xff0c;便勝卻人間無數&#xff0c;寫篇博客玩玩&#xff0c;主題&#xff1a;注釋。注釋的本質就是對代碼的解釋和說明&#xf…

nginx 配置靜態緩存全教程 (以及靜態緩存文件沒有生成)

一、第一步定義一個緩存目錄設置目錄結構 在 http 模塊下定義(keys_zone 緩存區名&#xff1a;后面是緩存區大小 inactive 不活躍的文件多久清理 max_size 緩存區所占磁盤的上限 use_temp_path 默認關閉&#xff08;有需要自己百度&#xff09;) proxy_cache_path /path/your…

16 Go的反射

概述 在上一節的內容中&#xff0c;我們介紹了Go的并發&#xff0c;包括&#xff1a;Goroutines、Channels、WaitGroups、Mutex、Select等。在本節中&#xff0c;我們將介紹Go的反射。Go語言中的反射是一種在運行時檢查類型信息并操作對象的能力&#xff0c;通過反射&#xff0…

STM32_6(TIM)

TIM定時器&#xff08;第一部分&#xff09; TIM&#xff08;Timer&#xff09;定時器定時器可以對輸入的時鐘進行計數&#xff0c;并在計數值達到設定值時觸發中斷16位計數器、預分頻器、自動重裝寄存器的時基單元&#xff0c;在72MHz計數時鐘下可以實現最大59.65s的定時不僅…

在游戲開發中,實時渲染和離線渲染對于游戲平衡的影響有哪些?

實時渲染和離線渲染對游戲平衡有那些影響呢&#xff1f;在游戲開發中&#xff0c;渲染方式的選擇對游戲的整體表現和玩家體驗有著至關重要的作用。那么&#xff0c;實時渲染和離線渲染究竟有哪些利弊呢&#xff1f; 一、實時渲染 實時渲染&#xff0c;顧名思義&#xff0c;是…