在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鏈游開發源碼——3D建模經濟模型設計

開發MrsFu123 ? 來源:開發MrsFu123 ? 作者:開發MrsFu123 ? 2022-06-28 21:04 ? 次閱讀

元宇宙技術在傳統互聯網的基礎上,元宇宙在沉浸感、參與度、永續性等多方面提出了更高的要求,因此將會由許多獨立工具、平臺、基礎設施、協議等來支持其運行。隨著AR、VR5G云計算等技術成熟度提升,元宇宙有望逐步從概念走向現實。

元宇宙的發展模式

(1)循序漸進是元宇宙的主要過程,其中在技術端、內容端、載體端都隨著時代的發展而在不斷演變。關于將區塊鏈應用變得如何豐富化這個問題以太坊正在努力改進中,同樣的Coinbase、Uniswap以及Opesea為代表的交易所也在為區塊鏈經濟提供更好的交易能力,他們的發展始終在遵循自然規律,循序漸進的發展。

(2)內容端,元宇宙這一概念在游戲中不斷增加,其生態形式也不斷加強,當然用戶數也隨之增長。尤其是以Roblox、Sandbox為代表的UGC元宇宙概念,確保游戲得益于玩家的參與而不斷豐富自己游戲的內容。

(3)載體端,比較明顯的表現是在通信技術、虛擬現實以及芯片等底層技術的改進和升級中。

Metauniverse emphasizes digital space and virtual world,but it does not mean that it is just digital space and virtual world.It can realize the interaction between virtual world,real world and real society,and can strengthen reality with emptiness.Therefore,metauniverse is an important new track to drive digital technology innovation and enable the real economy.Our government,scientific research institutions,enterprises and individuals need to actively participate in promoting the rapid development of metauniverse.

Do a good job in the top-level design at the macro level,and establish the basic concept and main objectives of the meta universe;Supporting technologies for building the meta universe,especially promoting the research and development of some key technologies;Establish relevant standards of metauniverse,from national standards to international standards,so as to gain a voice in the international science and technology field,avoid wasting financial and material resources and energy,improve R&D efficiency,I35模式7O98開發O7I8.and realize automation and intelligent interoperability;Formulate relevant laws and regulations,standardize in development,develop in standardization,and promote the healthy development of meta universe industry and industrial meta universe.

c#執行lua代碼

這里將分三個步驟:

加載lua代碼到vm中,對應api-luaL_loadbuffer

luaL_loadbuffer會同時在棧上壓入代碼塊的指針

執行lua代碼,對應api-lua_pcall

lua_pcall會從棧上依次彈出{nargs}個數據作為函數參數,再彈出函數進行執行,并將結果壓入棧

如果lua代碼有返回值,那么通過lua_toXXX相關api從棧上獲取結果

完整的代碼如下:

private bool DoLuaCode(System.IntPtr L,string luaCode){

//加載lua代碼

if(Lua.luaL_loadbuffer(L,luaCode,"")==0){

//執行棧頂的函數

if(Lua.lua_pcall(L,0,1,0)==0){

//函數執行完成后,返回值會依次依次押入棧

return true;

}else{

Debug.LogError("pcall failed!");

return false;

}

}else{

Debug.LogError("load buffer failed");

return false;

}

}

假如我們有一段lua代碼:

return'hello,i am from lua'

這段lua僅僅返回一段字符串,那么利用DoLuaCode去執行就是:

//lua代碼

string luaCode="return'hello,i am from lua'";

if(DoLuaCode(L,luaCode)){

Debug.Log(Lua.lua_tostring(L,-1));

//lua_toXXX不會出棧,需要lua_pop才能出棧

Lua.lua_pop(L,1);

}

由于此處lua代碼返回的是字符串,因此使用lua_tostring(L,-1)來將棧頂的元素轉為字符串并返回,相應的我們還能看到有lua_tonumber,lua_toboolean等等.

4.c#調用lua全局函數

接下來的例子將說明一下c#端如何執行lua中的全局函數。

假設現在我們有一段lua代碼如下:

function addSub(a,b)

return a+b,a-b;

end

通過DoLuaCode來運行以上的lua代碼,就得到了一個全局的addSub函數,這個函數會返回a,b相加和相減的結果。

為了在c#端執行以上的lua函數,需要按以下步驟進行:

將全局函數壓入棧中,對應api-lua_getglobal

將函數所需的參數依次壓入棧中,對應api-lua_pushnumber

執行棧中函數,對應api-lua_pcall

獲取函數返回結果,對應api-lua_tonumber

完整c#代碼如下:

//從全局表里讀取addSub函數,并壓入棧

Lua.lua_getglobal(L,"addSub");

//壓入參數a

Lua.lua_pushnumber(L,101);

//壓入參數b

Lua.lua_pushnumber(L,202);

//2個參數,2個返回值

Lua.lua_pcall(L,2,2,0);

//pcall會讓參數和函數指針都出棧

//pcall執行完畢后,會將結果壓入棧

Debug.Log(Lua.lua_tonumber(L,-2));

Debug.Log(Lua.lua_tonumber(L,-1));

Lua.lua_pop(L,2);

5.lua注冊并調用c#靜態函數

首先,想要被Lua調用的c#函數,都必須滿足以下的格式:

public delegate int LuaCSFunction(System.IntPtr luaState);

同時需要加上特性:

MonoPInvokeCallback(typeof(LuaCSFunction))

我們可以通過以下方式,將一個LuaCSFunction注冊到lua中:

static void RegisterCSFunctionGlobal(System.IntPtr L,string funcName,LuaCSFunction func){

//將LuaCSFunction壓入棧中

Lua.lua_pushcfunction(L,func);

//lua_setglobal會彈出棧頂元素,并按給定的名字作為key將其加入到全局表

Lua.lua_setglobal(L,funcName);

}

那么,當我們在lua中執行c#注冊的函數時,其交互過程如下:

LuaVM會臨時分配一個局部棧結構(這里要區分開始通過luaL_newstate創建的全局棧,兩者是獨立的)

LuaVM會將lua側的函數參數壓入這個臨時棧,然后將棧指針傳給LuaCSFunction

LuaCSFunction在實現上需要從這個棧中讀取lua側壓入的參數,然后執行真正的相關邏輯,并將最終結果壓入棧中

LuaCSFunction需要返回一個int值,表示往棧中壓入了多少個返回值

Lua從棧中獲取C#側壓入的0/1/多個返回值

官方說明文檔可以參考-Calling C from Lua

接下來要將演示如何將一個c#靜態函數Print注入到lua中,實現lua中調用c#端的日志輸出功能。

我們定義一個c#靜態函數如下:

[MonoPInvokeCallback(typeof(LuaCSFunction))]

private static int Print(System.IntPtr localL){

//獲取棧中元素個數

var count=Lua.lua_gettop(localL);

System.Text.StringBuilder s=new System.Text.StringBuilder();

for(var i=1;i<=count;i++){

//依次讀取print的每個參數,合并成一個string

s.Append(Lua.lua_tostring(localL,i));

s.Append('');

}

Debug.Log(s);

//print函數沒有返回值

return 0;

}

lua_gettop可以獲取棧中的元素個數,此處代表了lua端壓入棧中的函數參數個數

然后我們通過以下方式將這個c#側的Print注冊到lua中,命名為print。

//將LuaCSFunction壓入棧中

Lua.lua_pushcfunction(L,Print);

//lua_setglobal會彈出棧頂元素,并按給定的名字作為key將其加入到全局表

Lua.lua_setglobal(L,"print");

接下來我們執行以下的lua代碼:

print('hello','csharp')

就能看到編輯器中輸出

hello csharp

6.lua注冊c#類型

通常我們使用lua中的table來模擬c#中的類。一般類的注冊思路如下:

在lua中創建一個與c#類同名的表

將c#類的靜態函數都注冊到lua的這個同名表里

下面演示一下如何將Unity中的Debug類注冊到lua中:

Lua.lua_createtable(L,0,1);

Lua.lua_setglobal(L,"Debug");

其實很簡單:

lua_createtable會創建一個table,壓入棧頂

lua_setglobal會彈出棧頂元素,并將其加到全局表里

這樣我們在lua里就有了一個名為Debug的表可供全局訪問。但目前這個表是空空如也的,我們還需要為其添加靜態函數。(tips:實際上完整的設計中,還需要為class table設置metatable,增加一些限制性,但這里先不表)

6.1注入類的靜態函數

首先我們定義一個符合LuaCSFunction形式的c#函數如下:

[MonoPInvokeCallback(typeof(LuaCSFunction))]

private static int Debug_Log(System.IntPtr L){

string msg=Lua.lua_tostring(L,1);

Debug.Log(msg);

return 0;

}

這個c#函數是對Debug.Log的一個封裝。

然后可以通過以下方式將這個c#函數注冊到lua中的Debug表中:

Lua.lua_createtable(L,0,1);

//往棧中壓入字符串'Log'

Lua.lua_pushstring(L,"Log");

//往棧中壓入函數Debug_Log

Lua.lua_pushcfunction(L,Debug_Log);

//從棧中彈出一個元素作為key,再彈出一個元素作為value,作為pair賦值到index指定的table

Lua.lua_settable(L,1);

Lua.lua_setglobal(L,"Debug");

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 互聯網
    +關注

    關注

    54

    文章

    11178

    瀏覽量

    103570
  • 元宇宙
    +關注

    關注

    13

    文章

    1397

    瀏覽量

    11505
收藏 人收藏

    評論

    相關推薦

    TechWiz LCD 3D應用:局部液晶配向

    ,本案例使用TechWiz LCD 3D進行局部摩擦的設置。 1. 建模任務 1.1進行局部摩擦配置 2. 建模過程 以下是建模過程中部分重要步驟的說明 2.1在TechWiz Lay
    發表于 01-03 08:58

    TechWiz LCD 3D應用:撓曲電效用仿真

    完成后在TechWiz LCD 3D中加載并進行相關參數設置 2.2在TechWiz LCD 3D軟件中開啟應用撓曲電效應的功能 2.3其它設置 液晶設置 電壓條件設置 光學分析部分,添加偏振片 結果查看 3.1 V-T曲線 3.2 結果對比
    發表于 12-10 13:43

    透明塑料件噴粉3D掃描CAV全尺寸檢測逆向3D建模設計服務-CASAIM

    3D建模
    中科院廣州電子
    發布于 :2024年08月30日 10:04:53

    3D 建模:塑造未來的無限可能

    在當今數字化飛速發展的時代,3D 建模正以驚人的力量改變著我們的生活和工作方式。它不僅是一項創新的技術,更是開啟未來之門的鑰匙。 3D或三維這個術語指的是三個空間維度:寬度、高度和深度。物質
    的頭像 發表于 08-16 18:24 ?1601次閱讀

    安寶特產品 安寶特3D Analyzer:智能的3D CAD高級分析工具

    安寶特3D Analyzer包含多種實用的3D CAD高級分析工具,包括自動比對模型、碰撞檢測、間隙檢查、壁厚檢查,以及拔模和底切分析,能夠有效提升3D CAD
    的頭像 發表于 08-07 10:13 ?402次閱讀
    安寶特產品  安寶特<b class='flag-5'>3D</b> Analyzer:智能的<b class='flag-5'>3D</b> CAD高級分析工具

    裸眼3D筆記本電腦——先進的光場裸眼3D技術

    隨著科技的不斷進步,裸眼3D技術已經不再是科幻電影中的幻想。如今,英倫科技裸眼3D筆記本電腦將這一前沿科技帶到了我們的日常生活中。無論你是專業的3D模型設計師,還是希望在視頻播放和
    的頭像 發表于 07-16 10:04 ?601次閱讀

    3d場景建模可視化,場景1:1還原

    在當今數字化時代,3D場景建模可視化技術成為重要工具,為各行業提供了強大的展示和交互手段。從電影特效到建筑設計,從游戲開發到虛擬現實,3D場景建模
    的頭像 發表于 07-12 14:49 ?327次閱讀

    3D建模的重要內容和應用

    3D建模是一種技術,通過計算機軟件創建虛擬三維模型,模擬現實世界中的物體或場景。這項技術廣泛應用于建筑設計、電影制作、游戲開發、工程仿真等領域。下面古河云科技將介紹一些與
    的頭像 發表于 06-21 14:48 ?701次閱讀

    3D建模的特點和優勢都有哪些?

    3D建模是一種用于創建三維對象的過程,它在許多領域都有著廣泛的應用,包括動畫、游戲開發、建筑設計、工程以及制造業等。下面古河云科技將介紹一些關于3D
    的頭像 發表于 05-13 16:41 ?2572次閱讀

    烘焙vs渲染:3D模型制作中的效率與質量之爭

    3D建模和渲染領域,模型烘焙(Baking)和模型渲染(Rendering)是兩個經常被提及的概念。盡管它們都與最終圖像的生成有關,但它們在技術實現、目的、優勢和劣勢等方面存在顯著差
    的頭像 發表于 05-12 08:27 ?493次閱讀
    烘焙vs渲染:<b class='flag-5'>3D</b><b class='flag-5'>模型</b>制作中的效率與質量之爭

    ad19中3d模型不顯示?

    封裝庫導入3d模型不顯示,但導入3d模型后的封裝庫生成pcb文件時顯示3d模型,這是什么原因導致
    發表于 04-24 13:41

    頭盔3D掃描逆向工程3d建模抄數測繪服務-CASAIM中科廣電

    3D掃描
    中科院廣州電子
    發布于 :2024年04月12日 14:03:01

    包含具有多種類型信息的3D模型

    Desktop是一個3D建模CAD程序,用于多種繪圖和設計,涵蓋建筑、土木和機械工程,以及室內設計、產品設計、景觀建筑甚至游戲開發。它通常用于創建和編輯3D
    發表于 03-28 17:18

    Stability AI推出全新Stable Video 3D模型

    近日,Stability AI 推出了全新的 Stable Video 3D 模型,該模型以其獨特的功能吸引了眾多關注。此模型具備從單張圖像中生成多視圖
    的頭像 發表于 03-22 10:30 ?891次閱讀

    高分工作!Uni3D3D基礎大模型,刷新多個SOTA!

    我們主要探索了3D視覺中scale up模型參數量和統一模型架構的可能性。在NLP / 2D vision領域,scale up大模型(GP
    的頭像 發表于 01-30 15:56 ?923次閱讀
    高分工作!Uni<b class='flag-5'>3D</b>:<b class='flag-5'>3D</b>基礎大<b class='flag-5'>模型</b>,刷新多個SOTA!
    主站蜘蛛池模板: www黄色大片| 欧美视频不卡一区二区三区| 天天做天天爱天天综合网2021| 亚洲免费色视频| 停停五月天| 人人玩人人弄人人曰| 九九热精品在线观看| аⅴ资源中文在线天堂| 97菊爱网| 黄色的视频免费看| 日本成片视频| 免费一级成人毛片| 国产综合精品久久亚洲| 97伊人| 色就操| 成年全黄大色大黄| 在线a亚洲老鸭窝天堂新地址 | 国语自产拍在线观看7m| 综合五月天婷婷丁香| 免费视频一级片| 色屁屁www免费看视频影院| 国产日日夜夜| 乌克兰毛片| 五月婷婷丁香花| 欧美freesex交| wwxxx日本| 黄网站色| 男女全黄做爰视频| 色视频网址| 国产卡1卡2卡三卡网站免费| 天天操夜夜操天天操| 日本69式xxx视频| 中文字幕色| 男女交性拍拍拍高清视频| www.a级片| 国产精品护士| 成人久久久精品乱码一区二区三区 | 天天干夜夜草| 国产大片黄在线看免费| 综合伊人久久| 免费看日本黄色片|