日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

live2dmesh渲染优先级_如何渲染Live2D模型

發布時間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 live2dmesh渲染优先级_如何渲染Live2D模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇如何引入Live2D SDK的專欄發出去之后,有小伙伴找到我一起做Live2D相關的App,看來這塊的確是有需求的。所以這個專欄我估摸著不能再咕了。

那么上一回我們講到,如何為一個工程引入Live2D SDK,在引入SDK之后,自然是要把我們的Live2D模型渲染到視圖上。

為了更好的理解,避免ObjC孤兒語言造成理解障礙,下面會以在Qt中渲染Live2D作為例子。

先上Demo地址

https://github.com/CmST0us/Nodoka

值得注意的是,需要先參考?https://github.com/CmST0us/Nodoka/blob/master/vendor/download_live2d_native_sdk.txt 來下載配置SDK

先看看Live2D Native SDK的架構

Live2D Native SDK 架構

Core層作為Live2D會社的技術核心,并不對外開放,程序在編譯時需要手動鏈接對應的鏈接庫。你可以在SDK的Core目錄中找到相關的內容。

接下來是支撐Framework的基礎組建,包括數學計算,一些Json、字符串工具、便于跨平臺的自定義類型,以及用于家在模型參數的ID組件。

考慮到一切對模型的操作最終目的都是渲染出來,我按照自己的理解把Render渲染層放在了較底層的地方。接下來是用于加載模型的ModelLoader,ModelLoader通過對模型的json配置文件解析正確得找到對應的moc3模型,貼圖,以及各類附加資源文件。其次,ParameterSystem提供了對模型參數修改的能力,你可以獲取到這個模型的所有參數,并對他進行修改。

在這之上就是方便你整活的各種輔助系統了,包括呼吸,眨眼,姿勢,表情,動作以及物理效果。關于輔助系統的講解我還是咕到下一篇,本章我就只聊聊怎么讓一個模型顯示出來

創建自定義內存管理對象

對應文件?l2dapp.h 和 l2dapp.cpp

這部分其實并沒有好說的,直接照搬SDK的Demo代碼就行。因為Live2D作為一個跨平臺組件,需要考慮各個平臺的差異。使用一個自定義的內存管理對象方便你靈活的分配內存。例如你可以為全局分配一個內存池,避免頻繁的申請內存,或者你可以監控內存分配,優化程序。由于這部分屬于比較工程上的內容,這里就先跳過,日后有緣再見

模型對象

對應文件 l2dmodel.h 和 l2dmodel.cpp

一個標準Live2D模型應該有下圖所示的目錄結構(ModelName為模型名字)Live2D 模型目錄結構

我們需要首先加載的是ModelName.model3.json文件,這個文件里面包含了一個Live2D模型的資源文件的索引信息。我們將這個文件全部讀取出來,使用Csm::CubismModelSettingJson加載

加載模型索引文件

加載好索引信息之后,我們再去找對應的資源文件就很容易了。整個資源文件加載流程我分為這幾步加載模型

加載效果(Effect)

加載動作(Motion)

加載物理(Physics)

創建渲染器

加載貼圖

本篇為了最簡單渲染模型(好像說了幾次了),只實現了1、5、6。那么加載模型的時候,流程其實和加載模型索引大同小異。加載模型

首先通過模型索引使用GetModelFileName方法,獲取模型文件路徑。值得注意的是,這個路徑是相對json索引文件的路徑,你需要拼接一下才能拿到完整的路徑。

同樣將文件讀取到內存后使用父類的LoadModel方法加載內存。

然后為這個模型創建一個新的布局

創建渲染器直接調用父類CreateRenderer方法即可,但是在創建貼圖的時候,你需要將一個png文件讀取為OpenGL紋理,同時非常關鍵的一點,你要設置紋理采樣方式

紋理采樣方式

建議使用圖中所示的采樣配置,否則會出現圖像有鋸齒的問題。

創建好紋理后,將紋理索引綁定到貼圖索引,即調用BindTexture方法即可。

綁定紋理

OpenGL渲染

對應文件l2drenderwidget.cpp

我這里直接使用了Qt的OpenGLWidget實際應用時可根據自己需要

首先需要使用glewInit初始化GLEW,然后配置

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

最后加載模型及其資源文件。!強烈建議在OpenGL初始化時加載模型,否則會出現OpenGL上下文不對導致模型顯示有問題。

在每次渲染刷新中渲染刷新

注意調用glClear清屏。對于模型的更新需要調用模型的Update方法。在更新完模型之后,調用DrawModel方法繪制模型。

需要說明一下setMVPMatrixWithSize方法用于設置模型的位置,需要轉換為OpenGL紋理坐標系。

總結

以上是生活随笔為你收集整理的live2dmesh渲染优先级_如何渲染Live2D模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。