中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NVisionXR引擎基本介紹

發布時間:2020-06-28 00:56:37 來源:網絡 閱讀:675 作者:NVisionXR 欄目:移動開發

NVisionXR引擎基本介紹 

一. 介紹 

1.1 NVisionXR是什么? 

            NVisionXR引擎是全球首款跨平臺多兼容的原生AR應用開發引擎AR應用開發更高效。 

1.2 為什么是NVisionXR? 

           NVisionXR引擎是專門為AR應用開發而設計,提供一套3D渲染引擎AR模塊接口,能夠幫助開發者更高效地開發原生AR應用。它具有如下的特點: 
① 采用原生開發方式,與原生應用結合好 
② 開發的應用包體小,更有利于AR產品推廣 
③ 學習成本低 
④ 專為AR應用開發而設計,兼容多款AR平臺 

1.3 現有版本特性 

         NVisionXR現有版本支持3D渲染功能、多媒體功能以及AR跟蹤功能。 

1.3.1 渲染功能特性 

模型渲染,包括模型貼圖,模型骨骼動畫 
燈光陰影,包括點光源, 平行光, 聚光燈 
運動, 支持Bezier曲線運動 
粒子系統, 集成了particle universe 粒子系統庫,能夠實現酷炫的粒子動畫 

1.3.2 多媒體功能特性 

NVisionXR引擎集成了ijkPlayer 從而能夠實現在3D空間中渲染視頻的功能。 

1.3.3 增強現實跟蹤功能特性 

兼容Vuforia平臺基本功能 能夠識別多個Marker圖片。 

 系統架構 

2.1 系統層級 

NVisionXR引擎基本介紹


如上圖所示, NVisionXR的框架在結構上大體分為三個層級: 
最底層是渲染引擎和集成的一些第三方庫。 
中間層是管理層,負責將底層提供的功能進行封裝,組合,抽象,再以一種更加簡便的形 
式提供給上層。 
上層是應用層, 它是用戶進行應用開發直接對接的一層。 

2.2 MVC框架 

NVisionXR引擎基本介紹


         NVisionXR引擎應用層采用MVC的設計模式,這種設計模式更貼合原生應用開發的方式,使得開發更簡便。如上圖所示,NVisionXRNVWidget類相當于MVCView, 負責顯示某個被渲染對象。NVisionXRNVScenePlay類相當于MVCController 它負責管理及配置NVWidget所需要的數據。 
        
 基本概念 

3.1 坐標系 

NVisionXR引擎基本介紹

     如上圖,分別為左手坐標系和右手坐標系的示意圖。 
     NVisionXR采用右手坐標系,其Z軸為手機屏幕向外的方向。NVisionXR場景中的坐標系原點為(0, 0, 0)點。 

3.2 單位 

3.2.1 角度 
         NVisionXR采用角度制,其范圍為0~360度。 

3.2.2 尺度 

        物體大小的單位為cm 可參考3dmax,默認的系統單位cm時,所表示的模型大小。 

. SDK常用類 

4.1 執行類 NVAppDirector 
         NVAppDirectorNVisionXR的執行類,它主要負責添加所需運行的場景NVScenePlay, 添加功能插件及配置一些全局的功能屬性。
         NVisionXR在一啟動的時候會進入到一個場景中,首次進入的場景為主場景,而隨后切換的場景為普通場景。NVisionXR需要通過NVAppDirector來添加主場景和普通場景。用戶創建的NVScenePlay只有被添加到NVAppDirector中才能被使用。 
        NVAppDirector還可以添加一些功能插件,如VuforiaAR跟蹤功能等。還可以配置一些全局的屬性,如時候開啟陰影等,同時NVAppDirector還承擔了NVisionXR中派發任務的職責,如NVScenePlay生命周期階段的派發和場景交互事件的分發等。 
          NVAppDirector類似于Android開發里的AndroidManifest.xml或者iOS開發里的info.plist 

4.2 上下文 NVContext 

          NVContext是獲取關于App全局信息的接口類。它允許用戶能夠獲取相關的資源管理類NVResoures, NVWorld類等。 
           同時NVContext還提供了場景與場景之間跳轉的接口startScenePlay方法, 即從當前的NVScenePlay場景跳轉到其它的NVScenePlay場景。 
           以后NVContext會提供更多關于中間層功能的接口。 

NVisionXR引擎基本介紹

4.3 Controller NVScenePlay 

        NVScenePlay相當于MVC模式中Controller的作用,在該類中,我們可以添加場景中的內容。同時NVScenePlay還定義了一整套完整的生命周期流程: 
        onCreate方法是我們創建每個NVScenePlay內容的地方,在這里我們會調用addWidget, addAnimEffect等方法。 
        onStart方法是當NVScenePlay被激活將要進入的時候會被調用,這個時候NVScenePlay將要顯示,此時NVScenePlay處于激活狀態, 其內容還沒有完全被顯示,因此,該階段我們可以被視為準備階段。 在該階段,我們可以將NVWorld中創建的燈光等添加到場景中。 
         onResume方法在整個場景準備好后,會被調用。在這個階段,整個場景中的內容會被完全顯示出來。 
        onPause方法當手機app隱藏到后臺,或當該NVScenePlay退出時會被調用,此時NVScenePlay處于未激活狀態。 
       onStop方法是NVScenePlay完全退出時,會調用該方法,此時我們需要刻意在這個方法里,把一些全局的對象如燈光從該場景中移除。 
      onDestroy方法,當我們銷毀應用程序時,會執行所有注冊到NVAppDirector中的NVScenePlay的該方法。     

4.4 視圖類 NVWidget 

NVWidget類似于MVC架構中的View的作用。NVWidget是所有場景中可顯示對象的父類。 
不同于傳統2D應用中的ViewNVWidget需要定義整個其可顯示對象的形狀,外表和姿態。這些形狀,外表和3D姿態可以抽象為一個模型數據。 
為此,在NVWidget中,我們提供了setShape這個方法,用于設置物體顯示需要的形狀,該方法的參數接收一個關于形狀的文件名字。該文件的格式為mesh 格式 (5.1.1節中會介紹) 
此外,NVWidget可以通過setPosition來調整自身的位置,通過setScale來控制自身大小,通過pitch, yaw, roll方法來分別繞X軸, Y軸, Z軸旋轉來改變物體的姿態。 

4.5 資源管理類 NVResources 


NVResources是一個資源管理類,它主要提供給用戶如何監聽資源加載,獲取資源信息的接口。 

4.5.1監聽資源加載 


該功能主要通過設置NVResourcesListener來完成的,NVResourcesListener主要有三個方法: 
onLoadStart用于通知用戶目前開始加載的資源組,以及該組所包含的資源文件數目。一般NVisionXR會自動將資源分為三組:一組是必須添加的,即NVisionXR自帶的資源文件;一組是用戶根據我們的資源目錄 (參見,第五章資源目錄)添加的資源文件;還有一組是用戶自己定義的文件路徑中的文件。 
onLoadFile用于通知用戶目前開始加載的資源文件,以及該資源文件在其資源組中的位置。 
onLoadEnd 通知用戶所有資源文件已經加載完畢。 

4.5.2添加資源目錄 

用戶可以通過該類的addResourceLocation方法,來添加它們自己創建的資源文件夾路徑。 

4.5.3獲取資源信息接口 

獲取資源信息后,用戶可以通過程序接口來操作相應的資源文件, 目前這部分功能還沒有完全開放。 
            
 資源目錄 

     用戶在使用NVisionXR時,需要添加資源,為此,為了方便用戶使用和管理,我們提供了兩個文件夾用于管理資源文件: 
     一個是nvisionXR文件夾,該文件夾下存放的是nvisionXR引擎所必需使用的資源文件路徑,一般不允許用戶更改。 一個時user文件夾,可以允許用戶添加自己的資源。(ios對應的這兩個文件夾,一個是NVRes.bundle, 一個是UserRes.bundle 
       nvisionXRuser文件夾下都會有一些準備好的文件夾: 
       1 models文件夾:用于存放模型相關的文件,mesh文件,skeleton文件 
       2 materials文件夾用于存放NVWidget設置Appearance相關的資源文件material腳本,存放在scripts子文件夾中;program腳本,存放在programs子文件夾中;紋理圖片,存放在textures子文件夾中。 
       3 packs文件夾,用于存放壓縮的zip文件。 
       4 particle文件夾,用于存放粒子系統的腳本文件,如pu文件等。 

        以上各個文件夾的路徑都在resources.cfg配置文件中定義,所有資源必需存放在資源目錄里才能夠使用 
       以上資源目錄在Android工程里需要放在assets文件夾根目錄下,ios的兩個bundle放在工程根目錄下即可。 

5.1 Models 

models文件夾下存放了兩類文件,一類是mesh文件,一類是skeleton文件。這兩個文件是NVisionXR向用戶提供的關于如何定義NVWidget形體以及如何為其添加骨骼動畫的資源文件。 
meshskeleton格式的文件自身具有體積小的優勢。 

5.1.1 mesh文件 

mesh文件,定義了NVWidget的形狀,是nvisionXR向用戶提供的一種模型格式,其內部包含了模型的頂點,紋理坐標,頂點法線等信息。 
mesh文件中的頂點需要通過material文件來為其賦予顏色屬性 ,即其外表。 

5.1.2 skeleton文件 

skeleton文件是NVWidget的子類NVSkeletonWidget所使用的資源文件,它為NVWidget定義了關于其形狀的一組動畫。每個動畫都有一個名字,可以通過NVSkeletonWidgetaddAnimation方法進行添加, 目前NVSkeletonWidget只能添加一個動畫,后續NVisionXR會提供支持添加多個動畫,及動畫之間的切換。 
skeleton文件里包括了骨骼和骨骼動畫的關鍵幀數據。 
skeleton文件的名字要與mesh文件的名字一致,這樣當我們設置mesh文件時,程序會自動索引到相關mesh文件。 

5.2  Materials 
         materials文件夾下有兩類文件: 
         program 腳本文件,可以允許用戶自定義編程的shader 目前支持shader語言為glsl 
         material腳本文件 定義了關于NVWidget整個外表相關的屬性。 

5.2.1 program文件 

program腳本提供了如何使用自己的shader文件,這部分功能目前不對用戶開放。 

5.2.2 material 文件 

material文件定義了物體的外表屬性,即材質信息。 
其大致結構如下: 
             material name 
             { 
                  technique 
                  { 
                       pass 
                       { 
                        } 
                  } 
             } 
             上述是一個樹結構, material是根節點, technique pass是子節點, 節點具有屬性和body 屬性可以是名字,  body需要{}定義 
             material節點里, 至少要定義一個technique 一般情況下,我們只需要一個technique就可以了, pass是我們主要定義材質屬性的地方。 
            pass中常用屬性參數有: 
            ambient 定義環境光顏色, 格式為rgb三個值, 其格式為amient r g b 
            diffuse 定義一個物體表面漫反射系數,當為全白時,即1.0, 1.0, 1.0時, 表示物體會反射光的全部顏色, 如果是0.0, 0.0, 0.0 則物體不會反射光的顏色,表現為全黑,格式為rgba四個值,其格式為 diffuse r g b a 
              注意上述rgba的值都在0~1之間。 

              texture_unit表示pass的一個子節點, 在其里面可以用textures里圖片物體表面的紋理。 
              其格式如下: 
               texture_unit 
               { 
                      texture image_name 
                }         

5.2.3 圖片文件 

目前nvisionxr 支持jpg, png, bmp, tga,等格式的圖片文件。 

5.3 packs 

           packs文件夾里,存放了我們壓縮成zip格式的壓縮文件。 

5.3.1 zip文件 

zip文件從某種意義上說也是一種文件夾, 只不過它將其中的資源集中管理起來,并能夠減少其中的體積。 
一般,我們會將關于一個物體的所有相關資源,壓縮成一個zip文件,如將mesh, skeleton, material文件存放在一個zip里。 這時候, mesh , skeleton, material的名字最好一致, 方便程序索引, Rabbit.mesh, Rabbit.skeleton, Rabbit.material存放在一個zip文件夾中,我們通過NVWidget類的setShape方法設置Rabbit.mesh 那么程序能夠自動索引到Rabbit.skeleton  Rabbit.material 

5.4 particle 

5.4.1 pu文件 

particle是存放粒子系統腳本的地方, nvisionxr的粒子系統采用的是particle universe第三方庫, 其支持的腳本為pu文件,關于如何使用particle universe, 請詳細看particle universe使用教程。 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海口市| 定兴县| 宜都市| 临漳县| 大名县| 信宜市| 德兴市| 台南市| 合肥市| 尚义县| 祁东县| 香格里拉县| 陆丰市| 闻喜县| 湛江市| 贡嘎县| 玉龙| 平原县| 阿拉尔市| 盱眙县| 安吉县| 苍梧县| 固始县| 蓝山县| 陆河县| 信丰县| 南澳县| 寻乌县| 鱼台县| 威远县| 黔江区| 肇州县| 屏东县| 遂溪县| 杨浦区| 台湾省| 商城县| 合作市| 舒城县| 湟中县| 泽州县|