Unity--Cubism Live2D模型使用

了解LIVE2D在unity的使用--前提記錄

了解各個組件的作用

Live2D Manuals & Tutorials

這些文件都是重要的控制動畫參數的

Cubism Editor是編輯Live2D的工具,而導出的數據的類型,需要滿足以上的條件

SDK中包含的Cubism的Importer會自動生成一個Prefab。
這個生成的Prefab是轉換為Unity可以處理Live2D模型的版本。
可以從Hierarchy視圖中操作參數和部件的顯示。

了解一下Live2D的制作流程

1立繪分層_嗶哩嗶哩_bilibili

可以設置陰影、透明度、將人物分為多個部分部分,每個部分都可以有自己的變化曲線

達成最終的呈現效果,所以在Unity調動2D模型的時候,這些很多的變化要如何規范,這是一個盲區

旋轉變形器? 曲面? 父子集? 流暢度(帶動周圍格子變形)

透明度設置為0,需要切換發型則將新發型設置為1,原來的設置為0

可以整體依然用同一套物理

制作過程中也會存在分文件夾制作

對單個頭發的部件控制

這樣看,SDK的作用確實很重要了,把這些本來規定在Editor里的規則,搬運到unity里得到控制

頭部的移動,但頭發作為子物體,通過調整,達到保持了重力的垂直效果

眼部的閉合也是通過一個0~1的參數就可以控制變化

睫毛作為部件被變化曲線連帶

閉眼不失去高光點

微笑,左右眼開閉,以及閉眼變成微笑融合的情況

這么復雜的變化,unity不能在自己的引擎里控制每一個部分的參數變化

所以需要外部提供變化的規則文件,就像給出多個int? ,每個int 只能控制一個范圍的變化,但湊起來可以達到在Editor里展現的效果

加速度,scale變化,xy的位置綁定,轉換到具體的每一個unity物體

連帶的曲面等等,則通過額外的連動計算腳本控制

頭部的轉向控制,xy控制,z控制大小

圖片只需要一張就可以,其余的都是Editor下的對圖片的各種物理變化

輕微的拉伸是合理的,并不會造成視覺上的怪異

里面也會有噴槍等額外添加的圖片層,可能是貼在原圖上,可能是新建資源,

但在unity里,如果是前者無變化,是后者則變化較大,

會涉及到新圖的放置問題(但Editor也可以轉換成參數控制顯隱,以及像轉動頭部一樣的xy控制,最后的模型的處理規則傳遞到SDK里,應該不會有什么變化)

最后的呈現效果真的很驚人,,資源是僅僅一個圖集,但最后呈現的效果非常廣,好強,,

每個部件的變化都有自己的 參數可以提供輸出,,

每個部件也可以接受別的部件的輸出 影響自身部件的變化倍率,變化幅度等等

9導出和按鍵表情包_嗶哩嗶哩_bilibili

最后一課導出,

每一個表情,衣服的透明度都單獨調整為1,之前的設置為0,然后導出一個文件

每次都導出,每一個透明度替換狀態對應一個按鈕,就可以在電腦鍵盤上對應切換狀態

---------------

回到unity控制Live2D

在Unity項目模型上 播放從Cubism Editor 輸出的嵌入動畫文件

.motion3.json在載入時會自動轉變Unity的動畫格式AnimationClip

從Cubism Editor輸出的嵌入動態文件連同包含它的文件夾拖放到Project視圖中

經過該操作,AnimationClip將從.motion3.json生成、、也可以為生成的AnimationClip設置Loop

AnimationClip以曲線的形式擁有設置為模型各參數的值,此曲線上設置的參數的屬性位于模型Prefab以下層次結構中。

Cubism Part 控制 Opacity透明度

Cubism Parameters則是 控制變化的參數

指定這些屬性,則可以使用在Unity上創建的AnimationClip或程序

操作模型的參數和部件的不透明度

Cubism的 動畫格式載入項目時會轉變為AnimationClip,所以可以使用Animator管理 過渡和混合多個動態

在運行時導入模型 | SDK 教程 | Live2D Manuals & Tutorials

在3.0或更高版本中,處理已經完全重新設計,使用CusbimModel3Json.LoadAtPath導入模型后,調用.ToModel()即可顯示模型。
另外,創建并顯示Prefab,無需從腳本中編寫.update().draw()的更新繪制,繪制也會更新。

自己用c#腳本實現對導入模型的“轉unity”

在運行時導入模型 | SDK 教程 | Live2D Manuals & Tutorials

這一塊附近的內容都相對關鍵一些,先找找現在有沒有更簡單的工具可以幫我實現,但我還沒找過,關于這些復雜的控制先暫時停下

---

回到制作層面,現在可以接入Deepseek的API來回答出問題了

(這里是future,,還是打算用GPT的API了,)

完成了對話的內容,接下來需要達到的效果是什么樣的:

Live2D只是交互的方式,是說話或Idle 的時候可以表現出的動畫控制

接下來可以填入什么進去?

1.語音模型,達到朗讀發音

....

---

再次回到對Live2D的模型unity里進行控制

Live2D Cubism 模型有 多個參數 用來控制 表情、動作、變形。常見參數:

參數名功能
ParamAngleX頭部左右旋轉
ParamAngleY頭部上下旋轉
ParamAngleZ頭部歪斜(傾斜)
ParamEyeLOpen左眼開合(0=閉眼, 1=睜眼)
ParamEyeROpen右眼開合
ParamEyeBallX眼球左右移動
ParamEyeBallY眼球上下移動
ParamMouthOpenY嘴巴開合(0=閉嘴, 1=張嘴)
ParamMouthForm嘴型(-1=悲傷, 1=笑)
ParamBodyAngleX身體左右旋轉
ParamBodyAngleY身體上下移動
簡單測試
public class Live2DControl : MonoBehaviour
{private CubismModel model;  // Live2D 模型void Start(){model = GetComponent<CubismModel>();  // 獲取模型組件}
}打印所有參數
void Start()
{model = GetComponent<CubismModel>();foreach (var param in model.Parameters){Debug.Log("參數名: " + param.Id + ",當前值: " + param.Value);}
}

52個參數,這個還算是簡單的模型

.要做到可以控制各個參數,像虛擬主播一樣:

EyeBlink | Cubism SDK 手冊 | Live2D Manuals & Tutorials

---

CubismEyeBlinkController.Refresh()

CubismEyeBlinkController.EyeOpening

可以通過操作CubismEyeBlinkController.EyeOpening的值,將值應用于眨眼的參數

CubismEyeBlinkController在每幀的LateUpdate()時機

將CubismEyeBlinkController.EyeOpening的值應用于CubismEyeBlinkParameter標記的參數

Cubism SDK for Unity中,各組件的執行順序由CubismUpdateController控制

---

剛才直接去看了Sample自帶的場景,發現了一些可以直接引用的組件,達到實現追蹤的效果

target就是掛載的游戲對象,會整體跟隨移動

那大致要怎么控制的框架就有了

大致框架理解之后,Sample里的例子就很容易知道重點在哪一部分了

lookAt的動畫變化,并不是由unity的animator控制的,此時掛在模型上的animator是空的

導入進來的Live2D模型實際上和 unity里的Motion調整動作沒有關系,,或者說在導入之前,Editor里就已經把物理規則定的很標準,是不允許在unity里亂調不暴露出來的重要參數的

這些各種Controller就是整理好的,可以在unity中暴露被修改的部分

unity才是扒拉人家模型,強行想用到自己的引擎里,但Editor對這方面的規定比較完善和硬核,所以unity能改的地方并不多,

狀態機可以做的,是安排各種條件,對應各種動作表情(這些也是Editor規定好的,不會為了unity bro去額外改什么規則),這樣就可以把效果的控制全轉移到C#的代碼邏輯上了

?這些動作也和狀態機沒有一點關系

但是參數的修改有時候在unity上沒有很及時的同步,不知道是不是適配原因

這些動作的切換是Motion Controller控制的,但是layer count沒有很及時的變換(unity也是夠卑微 )

Fade Controller,應該就是動作之間切換的時候,透明度逐漸調為0的過程

所以需要list確保淡去哪個,顯示哪個

這個動畫就運用了狀態機,讓他自己切換播放

可以確定了,Live2D在unity里就是不能通過Animation播放這些動作的

但是Animation里的 Clip文件,對每個參數的變化的都是有記錄的,這些內部參數又是不會暴露給unity的,所以無法通過Animation窗口查看,

但可以在Game窗口里,當狀態切換的時候,會把對應的動作調用出來得到展示

每個狀態上也掛了對應的觀察腳本(應該是控制透明度切換,更換新的動作),并沒有把控制權交給unity

進這個腳本里大致看看結構,也可以差不多的感覺到對切換的監控和準備切換為新狀態

Cubism的射線檢測

一個測試腳本,拖入模型之后,就可以檢測到碰撞(也是Sample樣本里的)

--------

animator又在一些時候有用,,

OW(Original Workflow,原始工作流)是 Live2D Cubism SDK for Unity 中的一部分,它提供了一系列 組件腳本,用于管理 Live2D 模型的參數、動作、表情、姿勢讓開發者可以通過 代碼 輕松控制 Live2D 模型的各種表現

你理解得 基本正確——OW 主要是 暴露出可以操作的參數,讓開發者可以通過 C# 修改參數 以控制 Live2D 角色的各種行為,比如 表情、動作、姿勢、過渡效果

OW(Original Workflow)目錄下的文件 主要包含以下功能:

文件作用
CubismParameterStore存儲參數值,可用于保存和恢復 Live2D 模型狀態
CubismUpdateController管理參數更新,確保模型的參數隨時間變化
Expression管理表情(類似 happy.face3.json 這樣的表情文件)
Motion管理動作(如 Idle.motion3.json 等)
MotionFade處理動畫淡入淡出,讓不同的動畫過渡更自然
Pose管理 Live2D 角色的姿勢,用于防止角色姿勢不自然

Expression | Cubism SDK 手冊 | Live2D Manuals & Tutorials

Expression的文件創建,使用到Live2D上

下載了模型之后,檢查有沒有生成.asset文件(unity形式的expression和motion文件,下方的文本是json文件,是Cubism Editor 里做好的原始文件,unity并不能控制)

了解各個系統在unity中的使用之前,首先要清楚,unity在Live2D模型的控制力是很卑微的(在以后學習到別的資源引用的時候應該也會這樣),

Editor做好的模型都在SDK里幾乎自己解決了,給unity也不想unity亂用,所以暴露出來的可控區域很少,基本上OW文檔里面說了什么,就只能用這些

Live2D 表情系統(Expression)


1. Expression

Live2D Expression 負責 控制表情,主要用于 眨眼、微笑、皺眉、驚訝短時間的動態變化

  • 通過 .exp3.json 文件定義表情參數(類似于“開心”、“驚訝”)。
  • 通過 CubismExpressionController 播放表情。
  • 通過 加算(Additive)、覆蓋(Override)、正片疊底(Multiply) 計算表情對參數的影響。
  • Unity 的 Animator 沒有“正片疊底”功能,所以需要 Expression 系統 處理表情混合。

2. 使用前提

Unity 里使用 Expression(表情系統) 之前,需要確保:

  1. Live2D 預制體(Prefab)已經包含---SDK has done commonly
    • CubismUpdateController
    • CubismParameterStore
  2. 有表情文件(.exp3.json)
    • 需要從 Live2D Editor 導出,并轉換成 Unity 可用的 .exp3.asset 文件。
  3. 表情列表(.expressionList.asset
    • 管理多個表情,類似于“表情索引”。

3. 完整流程

1. 創建 .exp3.asset(表情數據)---SDK has done commonly

.exp3.asset.exp3.jsonScriptableObject 版本,用于存儲解析后的表情信息。

  • 解析 .exp3.json,轉換為 CubismExpressionData
  • 創建 .exp3.asset
  • 不要手動修改 .exp3.asset,否則可能導致異常。
代碼示例
// 解析 .exp3.json 并創建 .exp3.asset
expressionData = CubismExpressionData.CreateInstance(ExpressionJson);
AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset"));// 更新 Unity 資源庫
EditorUtility.SetDirty(expressionData);

?2. 創建 .expressionList.asset(表情列表)---SDK has done commonly

.expressionList.asset管理表情 .exp3.asset 的列表

  • 這個文件 記錄了當前模型支持的所有表情
  • 使用 CubismExpressionController 通過 索引(CurrentExpressionIndex) 選擇要播放的表情。
代碼示例
// 獲取現有的表情列表
var expressionList = AssetDatabase.LoadAssetAtPath<CubismExpressionList>(expressionListPath);// 如果不存在,創建新資產
AssetDatabase.CreateAsset(expressionList, expressionListPath);// 更新 Unity 資源
EditorUtility.SetDirty(expressionList);

?3. 追加 .exp3.asset.expressionList.asset---SDK has done commonly

每個模型的 .expressionList.asset 都需要綁定 .exp3.asset(表情數據)

代碼示例
// 追加新的 .exp3.asset
expressionIndex = expressionList.CubismExpressionObjects.Length;
Array.Resize(ref expressionList.CubismExpressionObjects, expressionIndex + 1);
expressionList.CubismExpressionObjects[expressionIndex] = expressionData;// 更新 Unity 資源庫
EditorUtility.SetDirty(expressionList);

?4. 通過 CubismExpressionController 播放表情

Unity 運行時,可以通過 CubismExpressionController.CurrentExpressionIndex 切換表情

代碼示例
using Live2D.Cubism.Framework.Expression;
using UnityEngine;public class ExpressionController : MonoBehaviour
{private CubismExpressionController expressionController;void Start(){expressionController = GetComponent<CubismExpressionController>();}void Update(){if (Input.GetKeyDown(KeyCode.H)){expressionController.CurrentExpressionIndex = 0;  // 播放第一個表情}if (Input.GetKeyDown(KeyCode.S)){expressionController.CurrentExpressionIndex = 1;  // 播放第二個表情}}
}

🔹 說明

  • CurrentExpressionIndex = 0 → 切換到 happy.exp3.asset
  • CurrentExpressionIndex = 1 → 切換到 sad.exp3.asset
  • 必須 綁定 CubismExpressionController 組件。

?5. 讓表情有“淡入淡出”效果

每個表情有:

  • FadeInTime淡入時間
  • FadeOutTime淡出時間

切換表情時,應該 設置上一個表情的 ExpressionEndTime,讓它正確淡出。

代碼示例
// 讓上一個表情淡出
if (_playingExpressions.Count > 0)
{var playingExpression = _playingExpressions[_playingExpressions.Count - 1];playingExpression.ExpressionEndTime = playingExpression.ExpressionUserTime + playingExpression.FadeOutTime;_playingExpressions[_playingExpressions.Count - 1] = playingExpression; 
}

🔹 這個代碼會 自動計算表情的過渡時間,讓表情更流暢。


?6. 計算表情并應用

表情在每幀更新時,系統會計算新表情的值,并應用到 CubismParameter 里。

  • 表情數據結構
    字段作用
    Type.exp3.json 類型
    FadeInTime表情淡入時間
    FadeOutTime表情淡出時間
    Weight影響權重(0 ~ 1)
    ExpressionUserTime播放時間
    ExpressionEndTime退出時間
    Destinations影響的 Live2D 參數
    Value表情應用到參數的值
    Blend計算方式(Override、Additive、Multiply

Live2D SDK 通過 CubismExpressionController.OnLateUpdate() 計算表情參數的最終值。

必須在 ParameterStore.SaveParameters() 之后應用表情,否則會導致參數錯誤。


測試表情的代碼

using Live2D.Cubism.Framework.Expression;
using UnityEngine;public class ExpressionController : MonoBehaviour
{private CubismExpressionController expressionController;void Start(){expressionController = GetComponent<CubismExpressionController>();}void Update(){if (Input.GetKeyDown(KeyCode.E)){expressionController.CurrentExpressionIndex++;if (expressionController.CurrentExpressionIndex >= expressionController.ExpressionsList.CubismExpressionObjects.Length){expressionController.CurrentExpressionIndex = -1;}Debug.Log(expressionController.CurrentExpressionIndex);}}
}

模型的Render錯位

模型導入到LIVE2D場景之后,會出現這樣的問題,因為Editor里的圖層順序安排,在unity里并不適用,要在RenderController里設置后-前 Order,這樣部件的排序(大概率是SDK做的Order)就可以改掉unity的展示問題

功能實現記錄

梳理一下自己的需求,視線追蹤要實現,自由切換表情,,,(這個可能還要結合一下語音內容什么的,已經有動作了,表情要怎么處理,,,這個還得考慮)

--------------

AnimationClip以曲線的形式擁有設置為模型各參數的值,此曲線上設置的參數的屬性位于模型Prefab以下層次結構中。(Value在Inspector中隱藏)

[模型根]/Parameters/[參數ID]/Cubism Parameters/Value

----

SDK會帶來自己的狀態機文件,和動畫clip

這些clip都是json轉出來的適用于unity的動作控制

clip動畫和對模型的控制的其他組件功能是分開的,不會產生重疊的問題

通過使用Motion,您可以從腳本播放動畫,而無需使用Unity的Mecanim構建狀態機

要使用Motion,您需要CubismFadeController組件和Unity的Animator。
如果在Animator組件中設置AnimatorController,則不會播放Motion,而是播放AnimatorController的動畫

但加上也是可以的,只不過和Clip的動畫會有一些出入,比如覆蓋clip里規定 的各個參數變化,眼睛一直保持某個狀態不變等

加于不加并不沖突

太多類型如果都去記,就很消耗時間,var這個類型前綴,用的很多是有原因的

注意,Center是target 對象身上的中心,是可以不拖的,默認就把target物體的中心做中心來計算

(因為是鼠標,所以可能這個地方的lookAt功能并不是很能體現出Center的位置重要性)?

參數中,將名為CubismLookParameter的組件附加到希望跟蹤的gameobject

最后,準備要跟蹤的對象。

在CubismLookController組件的[Target]中,設置實裝[ICubismLookTarget]接口的組件。

加look parameter組件一定要加載對應的gameobject上

視線追蹤和點擊頭、身體的隨機動畫是做好了

----

關于這個自動眨眼,一些模型會自帶的做上去,附加上Controller

mao這個模型就附帶了,也不用加auto blink input了

-----

口形同步設置

關于blend mode,大多默認是multiply,這樣就是如果有別的部分在操作參數,自己則不使用參數

additive就是附加,“正片疊底”

override就是完全控制該blend下的全部參數

MouthMovement包含作為輸入范例,根據AudioSource的音量和Sin波操作嘴巴開合值的組件。

此次附加一個名為?CubismAudioMouthInput?的組件,以便您可以從AudioSource設置值。

?Sampling Quality:設置要采樣的音量的精度。設置的階數越低,精度越高,計算負載越大。

Gain:設置以多少倍的值處理采樣音量。1為等倍

?Smoothing:設置從音量計算的開/關值平滑化多少。值越高,則越平滑,但也會增加計算負載

最后,要獲取音量,將AudioSource拖入 CubismAudioMouthInput的Audio Input?

-----

最后,就是接入語音模型了,也是不怎么了解的領域,先了解一下吧

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

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

相關文章

Linux | Vim 鼠標不能右鍵粘貼、跨系統復制粘貼

注&#xff1a;本文為 “ Vim 中鼠標右鍵粘貼、跨系統復制粘貼問題解決方案” 相關文章合輯。 未整理去重。 Linux 入門&#xff1a;vim 鼠標不能右鍵粘貼、跨系統復制粘貼 foryouslgme 發布時間 2016 - 09 - 28 10:24:16 Vim基礎 命令模式(command-mode)插入模式(insert-m…

Flink-DataStreamAPI-執行模式

一、概覽 DataStream API支持不同的運行時執行模式&#xff0c;我們可以根據用例的要求和作業的特征進行選擇。 STREAMING執行模式&#xff1a;被稱為“經典”執行模式為&#xff0c;主要用于需要持續增量處理并且預計無限期保持在線的無界作業BATCH執行模式&#xff1a;類似…

解決VScode 連接不上問題

問題 &#xff1a;VScode 連接不上 解決方案&#xff1a; 1、手動殺死VS Code服務器進程&#xff0c;然后重新嘗試登錄 打開xshell &#xff0c;遠程連接服務器 &#xff0c;查看vscode的進程 &#xff0c;然后全部殺掉 [cxqiZwz9fjj2ssnshikw14avaZ ~]$ ps ajx | grep vsc…

C#類型轉換基本概念

一、基本定義? C# 類型轉換是將數據從一種類型轉換為另一種類型的過程&#xff0c;分為 ?隱式轉換? 和 ?顯式轉換? 兩類?。 強類型語言特性?&#xff1a;C# 要求變量類型在編譯時確定&#xff0c;類型轉換需滿足兼容性或顯式規則?。目的?&#xff1a;處理不同數據類…

使用阿里云操作系統控制臺排查內存溢出

引言 操作系統控制臺是阿里云最新推出的一款智能運維工具&#xff0c;專為提升運維效率、優化服務器管理而設計。它集成了多種運維管理功能&#xff0c;包括操作系統助手、插件管理器以及其他實用工具&#xff0c;為用戶提供一站式的運維解決方案。無論是個人開發者還是企業運…

(C/S)架構、(B/S)架構

客戶機/服務器&#xff08;C/S&#xff09;架構 理論描述&#xff1a; 客戶機/服務器架構是一種網絡架構風格&#xff0c;其中任務被分配給網絡中的不同計算機&#xff0c;以提高效率和靈活性。這種架構由兩部分組成&#xff1a;客戶端&#xff08;Client&#xff09;和服務器&…

混合存儲HDD+SSD機型磁盤陣列,配上SSD緩存功能,性能提升300%

企業日常運行各種文件無處不在&#xff0c;文檔、報告、視頻、應用數據......面對成千上萬的文件&#xff0c;團隊之間需要做到無障礙協作&#xff0c;員工能夠即時快速訪問、共享處理文件。隨著業務增長&#xff0c;數字化辦公不僅需要大容量&#xff0c;快速高效的文件訪問越…

C 語言異常處理方式全面解析

引言? 在 C 語言編程領域&#xff0c;穩健的錯誤處理機制對于保障程序的可靠性、穩定性以及安全性至關重要。異常處理作為錯誤處理的進階形式&#xff0c;雖然并非 C 語言標準庫原生支持的特性&#xff0c;但通過巧妙運用語言特性和編程技巧&#xff0c;開發者能夠實現有效的…

【每日學點HarmonyOS Next知識】狀態欄控制、片段按鈕點擊回調、繪制組件、取消按鈕與輸入框對齊、父調子組件方法

1、HarmonyOS 狀態欄怎么控制顯示于隱藏&#xff0c;設置狀態欄顏色&#xff0c;子顏色等控制&#xff1f; 顯示與隱藏 可以設置沉浸式&#xff0c;隱藏的話可以退出沉靜式&#xff0c;在子窗口打開的頁面 aboutToAppear 方法中設置沉浸式 aboutToAppear(): void {// 設置沉浸…

二級Python通關秘籍:字符串操作符/函數/方法全解析與實戰演練

第一章 字符串基礎概念與運算符速通 1.1 字符串的不可變性特性 在Python中&#xff0c;字符串被設計為immutable類型&#xff0c;任何修改操作都會生成新對象。這一特性直接影響字符串拼接的性能表現&#xff0c;建議使用join()方法代替多次操作。 1.2 基礎操作符全掌握 pyt…

GStreamer —— 2.6、Windows下Qt加載GStreamer庫后運行 - “教程6:媒體格式和Pad功能“(附:完整源碼)

運行效果 簡介 上一個教程演示了GUI 工具包集成(gtk)。本教程介紹媒體格式和Pad功能。Pad Capabilities 是 GStreamer 的一個基本元素&#xff0c;盡管大多數它們不可見&#xff0c;因為框架會處理它們 自然而然。這個有點理論性的教程展示了&#xff1a; ? 什么是 Pad 功能。…

【前綴和與差分 C/C++】洛谷 P8218 求區間和

2025 - 03 - 09 - 第 72 篇 Author: 鄭龍浩 / 仟濹 【前綴和與差分 C/C】 文章目錄 洛谷 P8218 求區間和題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1 說明/提示思路代碼 洛谷 P8218 求區間和 題目描述 給定 n n n 個正整數組成的數列 a 1 , a 2 , ? , a n a_…

初識Bert

在學習Bert之前我們先了解“遞歸神經網絡&#xff08;RNN Recurrent neural network)” 和 “長短期記憶&#xff08;LSTM Long short-term memory)” 我們如果僅僅識別每個字的含義&#xff0c;那么在一句話中沒有相同的字還是可以的但是如果一句話中有相同的字&#xff0c;那…

clickhouse源碼分析

《ClickHouse源碼分析》 當我們談論數據庫時&#xff0c;ClickHouse是一個不容忽視的名字。它是一個用于聯機分析處理&#xff08;OLAP&#xff09;的列式數據庫管理系統&#xff08;DBMS&#xff09;&#xff0c;以其快速的數據查詢能力而聞名。對于想要深入了解這個高效工具…

[網絡爬蟲] 動態網頁抓取 — Selenium 元素定位

&#x1f31f;想系統化學習爬蟲技術&#xff1f;看看這個&#xff1a;[數據抓取] Python 網絡爬蟲 - 學習手冊-CSDN博客 在使用 Selenium 時&#xff0c;往往需要先定位到指定元素&#xff0c;然后再執行相應的操作。例如&#xff0c;再向文本輸入框中輸入文字之前&#xff0c;…

ArcGIS操作:15 計算點的經緯度,并添加到屬性表

注意&#xff1a;需要轉化為地理坐標系 1、打開屬性表&#xff0c;添加字段 2、計算字段&#xff08;以計算緯度為例 !Shape!.centroid.Y ) 3、效果

[項目]基于FreeRTOS的STM32四軸飛行器: 七.遙控器按鍵

基于FreeRTOS的STM32四軸飛行器: 七.遙控器 一.遙控器按鍵搖桿功能說明二.搖桿和按鍵的配置三.按鍵掃描 一.遙控器按鍵搖桿功能說明 兩個手柄四個ADC。 左側手柄&#xff1a; 前后推為飛控油門&#xff0c;左右推為控制飛機偏航角。 右側手柄&#xff1a; 控制飛機飛行方向&a…

Redis 內存淘汰策略深度解析

Redis 作為高性能的內存數據庫&#xff0c;其內存資源的高效管理直接關系到系統的穩定性和性能。當 Redis 的內存使用達到配置的最大值&#xff08;maxmemory&#xff09;時&#xff0c;新的寫入操作將觸發內存淘汰機制&#xff08;Eviction Policy&#xff09;&#xff0c;以釋…

【面試】Java 集合

集合 1、常見的集合有哪些2、說說 List、Set、Queue、Map 四者的區別3、Collection 和 Collections 有什么區別4、Comparable 和 Comparator 的區別5、ArrayList 和 LinkedList 的區別是什么6、ArrayList 和 Vector 的區別是什么7、ArrayList 和 Vector 的擴容機制8、CopyOnWri…

【c++】平移字符串

說明 實現字符串的左移與右移 示例代碼 #include <iostream> #include <string> using namespace std;int main() {string str1 "12345";//左移2位string str2 str1.substr(2) str1.substr(0, 2);cout << str2 << endl;//右移2位&…