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

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

Blender 新歡 Armory3D - Armory Engine

2023-04-14 14:06 作者:緊果唄  | 我要投稿

Blender Grease Pencil 繪畫(huà)是基于曲線(xiàn)創(chuàng)建的,不能像幾何體一樣導(dǎo)出到 Godot 這些游戲引擎中使用,只有 Mesh 幾何體才能通過(guò) Collada 這些文件導(dǎo)出使用。當(dāng)然,可以將蠟筆轉(zhuǎn)換為 Polygon Curve,設(shè)置 Geometry -> Depth 再導(dǎo)出為 Collada,但是經(jīng)過(guò)處理后,與 Blender 渲染的效果不一致。另一種方法是輸出透明有動(dòng)畫(huà)幀圖像,作為 Sprite Animation 使用,需要設(shè)置渲染器的透明屬性,Render Properties - Film - Transparent。


目前,Armory3D 是集成了 Blender 功能的游戲引擎,可以說(shuō)是專(zhuān)為 Blender 開(kāi)發(fā)的,但蠟筆效果支持也不好。Armory 本身是 Blender 插件,組合成一個(gè)完整游戲開(kāi)發(fā)工具和從頭到尾的統(tǒng)一工作流程。使用 haXe 語(yǔ)言開(kāi)發(fā),語(yǔ)法類(lèi)似 Java。haXe 是編譯器又是轉(zhuǎn)譯工具,可以將源代碼構(gòu)建為跨平臺(tái)應(yīng)用程序,并且允許訪(fǎng)問(wèn)每個(gè)平臺(tái)的本地功能。自有虛擬機(jī) HashLink 和 NekoVM,但也可以在解釋模式下運(yùn)行,例如 `haXe -cp src --main Main --interp`。


使用 Kha 開(kāi)發(fā)游戲項(xiàng)目,最好有圖形學(xué)基礎(chǔ),有一定的線(xiàn)性代數(shù)基礎(chǔ)。熟悉現(xiàn)代 GPU 渲染管道的編程邏輯,了解任意一個(gè)圖形 API 接口,如 OpenGL、Direct3D、Metal、Vulkan。


? 源文檔 https://github.com/Jeangowhy/opendocs/blob/main/Haxe.md

Armory3D 引擎是一組工具集合,除了一個(gè) Blender 插件,還有以下核心模塊:

  • 01. **haXe** 一個(gè)高級(jí)跨平臺(tái)編程語(yǔ)言、代碼轉(zhuǎn)譯工具。

  • 02. **Kha** 一個(gè)使用 haXe 編程語(yǔ)言的跨平臺(tái)游戲框架,包含獨(dú)立于不同系統(tǒng)的圖形、音頻、輸入、網(wǎng)絡(luò)抽象層。

  • 03. **Iron** 是 Armory 的核心構(gòu)架,相對(duì)于處理底層 Kha,Iron 是高級(jí)抽象層,處理游戲中的渲染與內(nèi)容管道。

  • 04. **Armory3D**,包含的 Blender 插件稱(chēng)為 Armory,從 Blender 中完全分離 Shaders 和??Materials,使用 Cycles 材質(zhì)節(jié)點(diǎn),使用 Blender 動(dòng)畫(huà),提供 Logic Nodes 可視化編程。

  • ? ? 使用 haXe 編程語(yǔ)言,使用 Traits 混入編程模式。

  • 05. **Zui** UI 框架,使用 Armory2D 編輯器進(jìn)行可視化界面設(shè)計(jì),Bundled 目錄下 JSON 文件中保存。此構(gòu)架受 imgui 啟發(fā),Immediate Mode 即時(shí)刷新模式 UI 構(gòu)架,使用 Haxe 和 Kha 實(shí)現(xiàn)。

閱讀 Architecture 內(nèi)容,了解使用到的相關(guān)構(gòu)架,有助于快速認(rèn)識(shí) Armory 引擎的主體構(gòu)架結(jié)構(gòu):

? * [Setup](https://github.com/armory3d/armory/wiki/setup)

? * [Playground tutorial](https://github.com/armory3d/armory/wiki/playground)

? * [Architecture](https://github.com/armory3d/armory/wiki/architecture)

? * [Tanks tutorial](https://github.com/armory3d/armory/wiki/tanks)


Armory3D Wiki - Playground 內(nèi)容中展示了 Armory 引擎的基本功能以及使用流程:

  • - Armory Player 工具條的使用,Run、Stop,或者 Krom、Browser 運(yùn)行時(shí)選擇等等;

  • - Materials - Armory PBR 是引擎提供的一個(gè)著色程序節(jié)點(diǎn)組;

  • - Animation - Armory 支持 Blender 時(shí)間軸動(dòng)畫(huà);

  • - Physics - Armory 集成了 Bullet 等物理引擎支持 Blender 中的物理設(shè)置;

  • - Logic Nodes - 邏輯節(jié)點(diǎn)和 UE 藍(lán)圖一樣是可視化的節(jié)點(diǎn)編程工具;

  • - Haxe Scripts - Armory 可以使用 Haxe 腳本為場(chǎng)景對(duì)象提供編程控制能力,主要是 Iron 構(gòu)架;

  • - Bundled Scripts - Armory 引擎提供的一套常用的 Trait 擴(kuò)展類(lèi)型定義;

  • - UI Canvas - 場(chǎng)景屬性 Armory Traits 列表可以添加 UI 擴(kuò)展,可以激活 Armory2D 界面編輯器;

  • - Render Path - 提供可編程的渲染路徑系統(tǒng),`Render - Armory Render Path` 面板中進(jìn)行配置;

  • - Exporter - 項(xiàng)目導(dǎo)出配置: `Properties - Render - Armory Exporter`;


所謂“捆綁腳本”,Bundled Scripts,就是 Armory 源代碼中現(xiàn)有的由 Haxe 編寫(xiě)的 Trait 擴(kuò)展類(lèi)型。與常規(guī) Haxe 腳本類(lèi)似,Bundled 腳本可以附加到對(duì)象屬性面板或場(chǎng)景屬性中的 Armory Trait 列表中。例如,使用 PhysicsDrag 特性,當(dāng)這個(gè)特性附加到啟用了物理的對(duì)象上時(shí),可以使用鼠標(biāo)拖動(dòng)這個(gè)對(duì)象。

又如,使用 WalkNavigation 可以實(shí)現(xiàn)相機(jī)的漫步運(yùn)動(dòng)控制。


以下一是 Armsdk 中定義的部分 Bundled Scripts 列表和 Zui UI 框架代碼文件:

Armory 使用獨(dú)立于 Blender 的渲染程序,通過(guò) Iron 實(shí)現(xiàn),但是使用 Cycles/EEVEE 材質(zhì)節(jié)點(diǎn), 目前還不斷完善,沒(méi)有完全做支持所有材質(zhì)節(jié)點(diǎn)。Armory 提供了一個(gè) Armory PBR 材質(zhì)著色器,另外 Render Path 功能完全可腳本化,支持開(kāi)箱即用的 deferred renderpath。也完全可以在 GLSL 中編寫(xiě)自己的著色器。


顯然,Armory 的缺點(diǎn)是對(duì) Blender 材質(zhì)支持不到位,比如 Glass BSDF 就不能完全支持,這導(dǎo)致 Blender 中調(diào)試好的材質(zhì),程序運(yùn)行時(shí) Armory 無(wú)法準(zhǔn)確還原,并且較多 Shader 節(jié)點(diǎn)沒(méi)有支持。 [supported nodes] https://github.com/armory3d/armory/wiki/supported_nodes


Armory3D 開(kāi)發(fā)本身涉及多個(gè)語(yǔ)言,包括 haXe、Python、JavaScript 等等,需要對(duì)所選擇語(yǔ)言有了解。 可以在渲染器屬性面板 Armory Exporter 中配置為 C 語(yǔ)言項(xiàng)目導(dǎo)出,如 Windows (C)、Android (C), 這種方式會(huì)生成相應(yīng)的項(xiàng)目配置和 C 語(yǔ)言代碼,需要經(jīng)過(guò)編譯才會(huì)生成游戲的可執(zhí)行程序。使用 JavaScript 語(yǔ)言有兩種導(dǎo)出方式,Node (JS) 和 HTML (JS),不同平臺(tái)提供的 API 都有差異,需要區(qū)別對(duì)待。


JavaScript 作為一種跨平臺(tái)腳本語(yǔ)言,應(yīng)用非常廣泛,在 Armory 中也被大量使用。并且,隨著 WebAssembly 不斷發(fā)展,Web 平臺(tái)性能有了較大的進(jìn)步,所以 JavaScript 應(yīng)用更盛。正所所謂: 任何可以用 JavaScript 來(lái)寫(xiě)的應(yīng)用,最終都將用 JavaScript 來(lái)寫(xiě)。 JavaScript 的優(yōu)點(diǎn)是可以寫(xiě)任何東西,缺點(diǎn)是你真的會(huì)用它去寫(xiě)這些東西。


? ? Atwood's Law: Any application that can be written in JavaScript,

? ? will eventually be written in JavaScript.


? ? Reg Braithwaite: The strength of JavaScript is that you can do anything.

? ? The weakness is that you will.


也就如墨菲定律所說(shuō):“如果壞事情有可能發(fā)生,它總會(huì)發(fā)生,并引起最大可能的損失。” JavaScript 雖然靈活,但是用好它好一點(diǎn)也不容易,特別是大型項(xiàng)目,所以才有了 TypeScirpt 這種強(qiáng)類(lèi)型升級(jí)版 JS 腳本。

Armory3D SDK 本身已經(jīng)包含 Armory2D 工具,要從 Blender 中啟動(dòng) Armory2D editor, 只需要在 Scene 屬性面板中向 Armory Scene Traits 列表中添加一個(gè) UI Armory Trait, 然后編輯這個(gè) UI 就會(huì)打開(kāi) Armory 2D 編輯器。或者直接執(zhí)行 Krom 加載 Armory2D。 Armory2D UI Editor https://github.com/armory3d/armory/wiki/ui_editor

? ? Krom.exe C:\HaxeToolkit\armsdk\lib\armory_tools\armory2d\d3d11

注意,Kha GraphicsExtension 會(huì)在新版本中移除,需要使用這個(gè)圖形擴(kuò)展,可以手動(dòng)拷貝到項(xiàng)目目錄中。


? ? armsdk\Kha\Sources\kha\graphics2\GraphicsExtension.hx

? ? @:deprecated("GraphicsExtension will be removed. If you want to use it, simply copy it into your own project and then remove this message.")

一個(gè)常用的工作流程是:使用 Kha 編譯源代碼得到 JavaScript 腳本程序,然后由 Krom 加載運(yùn)行。 Krom 和 Electron 類(lèi)似,都集成了 V8 JavaScript 腳本引擎,提供了不錯(cuò)的性能。Krom 還集成了 一個(gè)低層抽象游戲庫(kù):Kinc - Modern low level game library and hardware abstraction。 同時(shí),haXe 編程語(yǔ)言提供了的豐富轉(zhuǎn)譯能力,這樣的組合也使得 Kha 擁有非常好的移植能力,方便實(shí)現(xiàn) 跨平臺(tái)游戲項(xiàng)目開(kāi)發(fā)。


Krom 運(yùn)行程序時(shí),如果路徑參數(shù)缺失,krom 就從其自身的目錄下加載著色器和資產(chǎn)。


Armory3D 運(yùn)行游戲時(shí)也會(huì)調(diào)用 Kha 編譯命令,可以打開(kāi) Blender 控制臺(tái)查看。比如,以下命令將構(gòu)建出供 Krom 運(yùn)行時(shí)程序,生成的工程也可以使用 HaxeDevelop 進(jìn)行構(gòu)建。


用戶(hù)也可以自行構(gòu)建 Zui 這些工具,并將結(jié)果拷貝到指定目錄。下載 Zui 源代碼后,就可以參考以下命令執(zhí)行 Zui 示例程序的構(gòu)建、執(zhí)行:

Blender 中執(zhí)行 Armory3D 構(gòu)建時(shí),引擎插件會(huì)將所有資源、著色器、紋理等等都存放在 compiled 目錄下, 最后打包到輸出目錄,主要是 krom 和 krom-resources 兩個(gè)目錄。構(gòu)建腳本 khafile.js 也自動(dòng)生成。 資源導(dǎo)出目標(biāo)為 `<build target>-resources`,比如 Krom 導(dǎo)出的資源目錄就是 krom-resources。


而手動(dòng)執(zhí)行 Kha 構(gòu)建時(shí),則直接打包到輸出目錄,并且需要自行配置 khafile.js 腳本,當(dāng)然可以調(diào)用 khamake 生成:

? ? node.exe C:\HaxeToolkit\armsdk\Kha\make --init

Kha 構(gòu)建 HTML5 或 Flash 應(yīng)用時(shí),如果有 .wav 等等資源文件,就需要指定 ffmpeg 工具來(lái)轉(zhuǎn)換格式。 聲波文件在 HTML5 平臺(tái)中需要轉(zhuǎn)換為 .ogg 文件,在 Flash 平臺(tái)中轉(zhuǎn)換為 .mp3 文件,優(yōu)化文件大小。

? ? node Kha/make html5 --ffmpeg "/path/to/ffmpeg.exe"

khamake 期待的資源文件格式如下,其它格式資源通過(guò) Assets.blobs 作為 Blob 對(duì)象訪(fǎng)問(wèn):

  • 01. Images: png, jpg, hdr

  • 02. Sounds: wav (sample rate: 44100Hz 16 bit)

  • 03. Videos: mp4

  • 04. Fonts: ttf

Kha 是一套 API 或稱(chēng)為一個(gè)開(kāi)發(fā)庫(kù),它使用的構(gòu)建工具稱(chēng)為 **khamake**,以及一個(gè)著色器交叉編譯器 **Krafix**,使其能夠支持多個(gè)圖形 API。支持平臺(tái)包含:Web, Mobile, Desktop, and Consoles, 使用 OpenGL, WebGL, DirectX, Vulcan, 以及 Metal 等圖形 APIs。


Kha 編譯得到目標(biāo)程序程序是 targets,最典型就是 C++ ( with Kore ), Krom, Web, 和 HashLink (HL)。

Kha?Feature Matrix

https://github.com/Kode/Kha/wiki/Feature-Matrix


Kha 構(gòu)架圖示意

https://github.com/Kode/Kha/wiki/Features


Blender 新歡 Armory3D - Armory Engine的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
丰镇市| 西丰县| 库车县| 安新县| 邯郸市| 甘肃省| 荥阳市| 曲靖市| 乌拉特后旗| 钦州市| 东莞市| 化州市| 邛崃市| 马边| 寿宁县| 海晏县| 贺兰县| 平乡县| 桃源县| 贺州市| 台山市| 大理市| 郁南县| 沈丘县| 衡阳县| 虞城县| 高要市| 双江| 师宗县| 通江县| 望都县| 巩义市| 常山县| 库车县| 陈巴尔虎旗| 太湖县| 宜兰县| 内乡县| 航空| 永仁县| 伽师县|