Ⅰ Android OpenGLES2.0(十六)——3D模型貼圖及光照處理(obj+mtl)
在Android OpenGLES2.0(十四)——Obj格式3D模型載入中實現了Obj格式的3D模型的載入,載入的是一個沒有貼圖,沒有光照處理的帽子,為了呈現出立體效果,「手動」加了光照,擁有貼圖的紋理及光照又該怎麼載入呢?
本篇博客例子中載入的是一個卡通形象皮卡丘,資源是在網上隨便找的一個。載入出來如圖所示:
obj內容格式如下:
mtl文件內容格式如下:
關於Obj的內容格式,在上篇博客中已經做了總結,本篇博客中使用的obj,可以看到f後面的不再跟的是4個數字,而是 f 2/58/58 3/59/59 17/60/60 這種樣子的三組數,每一組都表示為頂點坐標索引/貼圖坐標點索引/頂點法線索引,三個頂點組成一個三角形。而頭部的 mtllib pikachu.mtl 則指明使用的材質庫。
而mtl格式文件中,主要數據類型為:
模型載入和之前的模型載入大同小異,不同的是,這次我們需要將模型的貼圖坐標、頂點法線也一起載入,並傳入到shader中。其他參數,有的自然也要取到。
模型載入以obj文件為入口,解析obj文件,從中獲取到mtl文件相對路徑,然後解析mtl文件。將材質庫拆分為諸多的單一材質。obj對象的 載入,根據具使用材質不同來分解為多個3D模型。具體載入過程如下:
頂點著色器
片元著色器
完成了以上准備工作,就可以調用 readMultiObj 方法,將obj文件讀成一個或多個帶有各項參數的3D模型類,然後將每一個3D模型的參數傳入shader中,進而進行渲染:
Ⅱ 安卓手機有沒有能做3d模型的軟體
手機端實現的建模技術已經支持3D掃描、數字雕刻、3D列印等高端技術,指尖觸摸和拖動創很精確,對用戶來說,觸摸界面更加友好,適合隨時隨地發揮創意。以下是手機上的3D建模軟體總結:
PhotoSynthforiPhone
一款微軟開發的全景拍攝應用老爛,該應用會判斷出照片和照片之間的共同點,快速建構將各種不同角度和來源照片的360度平面全景照片。
QloneMat
一個黑科技感滿點的AR3D掃描建模工具,可以超級方便快速地把現實物品掃描成3D模型文件。目前僅支持英明高文語言。
Sculpt建模app
一款數字雕刻和繪畫應用程序,用戶在線可以簡單的繪制3D圖形。
Putty3d
一款超好用的手機在線3D素描簿,支持3D建模、3D列印等高激含尺端操作,實現簡單觸摸和拖動雕刻。
如果想偷懶的話,可以利用ThingJS3D模型庫,有十萬個3D模型、場景供選擇,不用重復建模,直接拖動到3D場景中。效果還不錯滴
工具類
植物類
建築類
Ⅲ 一、Android 虛擬機內存模型
jvm運行時數據區域解析
劉望舒的BLOG
虛擬機的內存模型
1.程序計數器: 確定程序指令執行順序的,是唯一一塊不會發生內存溢出的區域
2. Java虛擬機棧
**它也是線程私有的,負責存儲方法內的局部變數,方法出口等。每執行一個方法都相當於壓如一個棧幀,方法執行完比後這個棧幀從Java虛擬機棧中彈出。
3.本地方法區
負責管理虛擬機用到的 C 的方法。
4.堆內存區域
Java堆是一塊被所有線程共享的區域,用來存放對象的實例。它不需要物理上連續,只需要邏輯上連續就可以。
5.方法區
方法區是被所有線程共享的的內存區域,用來存放已經被Java虛擬機載入的類的結構信息:運行時常量池,欄位,方法信息,靜態變數等數據。
class文件的內容