❶ 2023騫10嬈炬渶浣3D妯″瀷鏌ョ湅鍣ㄥ簲鐢錛圓ndroid鍜宨OS錛
鎺㈢儲2023騫寸殑涓夌淮璁捐℃柊瑙嗛噹
1. ViewSTL - 嫻忚堝櫒鐗堜箣閫: 鍏嶈垂涓旂敤鎴峰弸濂斤紝ViewSTL浠ョ畝鍗曠洿瑙傜殑鐣岄潰嬈㈣繋浣犮傚畠鐨勬牳蹇冨姛鑳藉寘鎷澶氭牸寮忔敮鎸佸拰嫻佺晠鐨凷TL鏌ョ湅浣撻獙銆傝櫧鐒跺熀紜鐗堟彁渚涘熀紜鍔熻兘錛屼絾閫氳繃鍐呰喘瑙i攣楂樼駭鐗規э紝濡備綋縐嫻嬮噺鍜屽幓闄ゅ箍鍛婏紝璁╀綘鐨勪嬌鐢ㄦ洿鍔犲叏闈銆
2. 3D Model Viewer-AR View (iOS) - 浜掑姩澧炲己浣撻獙: 涓撲負iOS璁捐★紝鍏嶈垂搴旂敤甯︽湁騫垮憡鏀鎸侊紝鏀鎸佸氱3D鏂囦歡鏍煎紡錛岀壒鍒鏄疉R妯″紡鍜屼簰鍔ㄥ伐鍏楓傚熀紜鐗堟湰鏈夐檺鍒訛紝浣嗗彲浠巌Cloud瀵煎叆鎵╁睍鍔熻兘銆
3. 鍦ㄧ嚎3D嫻忚堢殑鏂板ぉ鍦 - Online 3D Viewer (鍩轟簬嫻忚堝櫒): 浜戞祻瑙堢殑渚挎嵎宸ュ叿錛屾棤闇娉ㄥ唽錛屾祴閲忓拰瀵煎嚭閫夐」涓搴斾勘鍏錛岄傚悎闇瑕佸嵆鏃舵煡鐪嬬殑璁捐″笀銆
4. android鐗堣交閲忕駭涔嬮 - 3D Model Viewer (Android): 寮婧愪笖鍔熻兘涓板瘜鐨勫簲鐢錛屼負縐誨姩璁懼囦紭鍖栵紝鏈鏉ュ皢甯︽潵鏇村氬炲己浣撻獙銆
5. 鍒涗綔鑰呯殑鍦ㄧ嚎瀹濆簱 - Creators3D Online Viewer: 鍏嶈垂娉ㄥ唽鍚庯紝浣犲彲浠ヤ韓鍙楀氱3D鏂囦歡鐨勬敮鎸侊紝涓板瘜鐨勪氦浜掑伐鍏鋒彁鍗囪捐℃晥鐜囥
6. CAD Assistant - 紱葷嚎CAD鐨勫叏鑳戒箣閫: 鏀鎸乮OS鍜孉ndroid錛屽熀紜CAD鍔熻兘寮哄ぇ錛岄傚悎闇瑕佺葷嚎鏌ョ湅鐨勮捐″笀銆
鍏煎規枃浠舵牸寮忥細浠嶴TEP鍒3DM錛屾兜鐩栦簡璁捐$晫鐨勪富嫻佹牸寮忥紝杞繪澗閫氳繃鏂囦歡閫夋嫨鍔熻兘鎵撳紑銆
鎿嶄綔渚挎嵎鎬ф彁鍗囷細閫氳繃鏀硅繘鐨勬墜鍔挎帶鍒訛紝浣犲彲浠ユ棤緙濇斁澶с佺緝灝忋佹棆杞鍜屽鉤縐繪ā鍨嬶紝鑿滃崟鏍忔彁渚涢濆栫殑瀵艱埅閫夐」銆
璺ㄥ鉤鍙板吋瀹規э細鏃犺轟綘鏄鍦╓indows銆丩inux銆丮acOS錛岃繕鏄疉ndroid銆乮OS璁懼囦笂錛岃繖浜涘簲鐢ㄩ兘鑳芥棤緙濊繍琛屻
緇忔祹瀹炴儬鐨勯夋嫨錛鎵鏈夋帹鑽愮殑搴旂敤鍧囧厤璐規彁渚涘熀鏈鏈嶅姟錛岄儴鍒嗗簲鐢ㄦ彁渚涘唴璐浠ヨВ閿佹洿澶氶珮綰у姛鑳姐
AVE3D Viewer - 鍏ㄨ兘鏍煎紡鏀鎸: 瀵逛簬OBJ銆丳LY銆丟LTF絳夋牸寮忕殑鐖卞ソ鑰咃紝AVE3D Viewer鎻愪緵浜嗕粯璐圭増錛岃В閿佹洿澶氭牸寮忔敮鎸侊紝鐢ㄦ埛瀵瑰叾鐣岄潰銆佹帶鍒跺拰鏍煎紡閫夋嫨璧炶獕鏈夊姞銆
涓撲負Android鎵撻 - AVE3D Viewer (Android): 鍐呰喘閫夐」璁╀綘浣撻獙瀹屾暣鐨勫姛鑳介泦錛屾弧瓚充綘鐨勫氭牱鍖栭渶奼傘
榪欎竴鍒囷紝鐢盇LL3DP綺懼績緙栬瘧鍛堢幇錛屼負浣犵殑3D璁捐′箣鏃呮彁渚涘叏鏂逛綅鏀鎸併
❷ 在Android上開發一個3D游戲需要用到哪些技術
Android開源游戲引擎是Android游戲開發的基礎,選擇一個好的Android游戲開發的引擎能讓我們更好的來開發游戲,下面就為大家簡紹幾個Android開源游戲引擎。
1、Angle
Angle是一款專為Android平台設計的,敏捷且適合快速開發的2D游戲引擎,基於OpenGL ES技術開發。該引擎全部用Java代碼編寫,並且可以根據自己的需要替換裡面的實現,缺陷在於文檔不足,而且下載的代碼中僅僅包含有少量的示例教程。
2、Rokon
rokon是一款Android 2D游戲引擎,基於OpenGL ES技術開發,物理引擎為Box2D,因此能夠實現一些較為復雜的物理效果,該項目最新版本為 2.0.3 (09/07/10)。總體來說,此引擎最大的優點在於其開發文檔相當之完備,並且項目作者對反饋Bug的修正非常之神速,所以該框架的使用在目前也最為 廣泛,有人乾脆將它稱為Cocos2d-iPhone引擎的Android版(業務邏輯和編碼風格上也確實很像)。附帶一提,國內某個需要注冊會員才能下 載的Android游戲框架衍生於此框架,所以大家也不要刻板的認為收費便一定是好的,免費就一定不好,最低運行環境要求為Android 1.5。
3、LGame
LGame是一款國人開發的Java游戲引擎,有Android及PC(J2SE)兩個開發版本,目前最高版本同為0.2.6(31/07/10)。其底 層繪圖器LGrpaphics封裝有J2SE以及J2ME提供的全部Graphics API(PC版採用Graphics2D封裝,Android版採用Canvas模擬實現),所以能夠將J2SE或J2ME開發經驗直接套用其中,兩版本 間主要代碼能夠相互移植。Android版內置有Admob介面,可以不必配置XML直接硬編碼Admob廣告信息。
該引擎除了基本的音效、圖形、物理、精靈等常用組件以外,也內置有Ioc、xml、http等常用Java組件的封裝,代價是jar體積較為龐大,PC版 已突破1.2MB,Android版有所簡化也在500KB左右。此外,該引擎還內置有按照1:1實現的J2ME精靈類及相關組件,可以將絕大多數 J2ME游戲平移到Android或PC版中。唯一遺憾的是,該項目作者是個極其懶惰的傢伙,開發文檔從去年說到今年依舊沒有提供,只有游戲示例可供下 載。
4、jPCT
jPCT是一款基於OpenGL技術開發的3D圖形引擎(PC環境為標准OpenGL,Android為OpenGL ES), 以Java語言為基礎的,擁有功能強大的Java 3D解決方案。該引擎與LGame(此為2D游戲引擎)相類似,目前擁有PC(J2SE)以及Android兩個開發版本。
jPCT的最大優勢之一,就在於它驚人的向下兼容性。在PC環境中,jPCT甚至可以運行在JVM1.1環境之中,因為jPCT內部提供的圖形渲染介面完 全符合所有的Java 1.1規范(就連已經消失的Microsoft VM乃至更古老的Netscape 4 VM也不例外)。
5、Catcake
Catcake是一款跨平台的Java 3D圖形引擎,目前支持PC(J2SE)及Android環境運行(已有iPhone版規劃)。該引擎在易用性和運行性能上皆有出色的表現,支持常見的游戲開發功能,諸如精靈動畫,音頻處理和視頻播放等。
轉網路知道
❸ 怎樣用Android開發Unity3D游戲
1.認識Unity3D
Unity3D是一個讓開發者能夠在多平台製作同一款游戲的游戲開發工具,有專業的圖像處理和游戲引擎,能做出各式各樣的游戲。
羽化以前認為Android游戲開發只能在Eclipse裡面死活敲代碼,也許是自己閱歷不夠,不知道游戲引擎能給游戲開發帶來如此大的便利,無論是3D游戲還是2D游戲都可以用Unity3D開發而且轉成IPHONE游戲也很簡單,因為Unity3D很多移動開發功能IPHONE與Android是共用的,其中最主要的控制器就是一樣的,這樣我們就基本上告別Eclipse了。。。
由於Unity3D裡面的腳本是用C#或者Java Script寫的,學習過這兩個語言最好,不會也沒關系,還可以學嘛(和羽化一樣),其實C#和JS與Java類似,看起來不會那麼陌生,要注意的是JS中無論什麼變數聲明都是」var」表示,這點對於聲明經常出錯的羽化來說很好-0-
2. Unity3D環境搭建與Android軟體生成方法
這里給大家介紹兩個網站,在裡面可以下載到最新的UnitySetup-3.3.0包括破解補丁U3v3.3.0f4_Win和腳本編輯器UnityScriptEditor2.55,還有很多學習資料,包括羽化正在學的Unity視頻教程(全英文啊=。=),還有全中文幫助文檔,雖然現在資料很少,但可以看出Unity3D越來越給力中。。。
安裝過程就不詳細寫了,很簡單的。這里要注意的是,安裝的系統用戶名不要是中文的,要不打開Unity3D以後Scene裡面看不到東西,這是羽化的切生體驗- -。
1)第一次打開Unity3D後會出現創建Project的界面,這就和Eclipse創建項目一樣的道理,這時候可以添加一些插件包,這步操作羽化留在了軟體打開後。
2)新建以後就出現了開發界面,這里簡單介紹下:
Scene 開發視圖:裡面可以拖拽物體位置、改變大小、旋轉角度等,是開發中最常的地方。
Game 游戲視圖:點上面的運行以後游戲就會在Game視圖裡面運行,沒點的時候可以看到攝像機當前的圖像。
Hierarchy 層試圖:放置游戲物件,在游戲運行時可以觀察游戲物件變化
Project 工程視圖:裡面可以新建文件夾管理腳本,渲染,圖片等。
Inspector 檢查視圖:顯示物件屬性等
最下面一條,一般情況下不會顯示東西,如果出錯或者列印語句都是顯示在下面:
先不管那麼多,生成個Android軟體再說。
3)在Project裡面右擊 ——〉 Import Package ——〉 Standard Assets(Mobile)這是移動開發的包,全部Import導入吧。再在Project裡面選中導入的Standard Assets(Mobile)———〉Control Setups——〉CameraRelativeSetup,這會提示保存Scene,我們就保存一個,可以看到Project裡面多了一個我們保存的Scene,游戲運行就是從Scene開始,這時應該可以看到這個包的顯示了。一眼就看出這是一個演示控制器的包,這個時候我們就不管這個工作原理,先放在Android手機裡面看看效果。
4)點擊左上角的File菜單——〉Build Settings——〉選中Android——〉右邊Development Build勾打上——〉點擊下面Player Settings,這時在Insperctor視圖裡面可以看到一些基本設定,第一個Resolution and Presentation是游戲視圖設定,橫屏還是豎屏隨你可以默認它,點擊Other Settings,這里主要設置Identification這個屬性,裡面第一個相當於項目包,這個一定不能默認,自己隨便寫個名字比如羽化就是com.LB.first其他設定大家可以自己研究,對於生成這個軟體,這步必須改。
5)然後回到窗口點擊Build,這里第一次點會跳出一個選中Android SDK的路徑,大家都懂的,自己放哪的選哪,確定後,輸入一個apk的名字,就叫作LB,如果發生什麼錯誤,可以看看下面的提示。
6)軟體已經生成好了後就可以丟到手機裡面安裝試試了,你可以直接丟在SD卡裡面安裝,這里羽化給大家介紹個簡單的方法,對於模擬器還是真機都適用,首先設置環境變數,在Path裡面添加如羽化自己目錄的D:android-sdk-windowsplatform-tools,這樣就可以在命令控制台裡面打命令了,比如羽化安裝的命令是cd C:UsersLiBeiDocumentsLB先到apk目錄下,再輸入adb install LB.apk這里要注意若你原來安裝過相同名字軟體,先卸載了再裝。
7)實際運行效果左搖桿是控制位移,右搖桿是控制方向:
步驟看起很多,其實很簡單。
3.Unity3D基本使用方法
這里羽化推薦大家看看視頻,看視頻學起來得很快,羽化就講講自己照視頻做的例子,解壓後可以通過Open Project選項打開這個例子,選中Scene裡面的Scene1打開,運行是在電腦上。
1)場景創建
全是Cube搭建的,看一眼就知道了,Cube可以在上方Gameobject——〉create other裡面創建,也點擊Hierarchy層視圖下面的Create創建,位置調整可以在Scene裡面通過左上角的物件選項慢慢調整,第一個是觀察,第二個是調整位置,第三個是調整角度,第四個調整大小。
2)主視角
這里主視角是用Standard Assets(這要自己導入)——〉Character Controllers——〉First Person Controller 可以看到這里能直接用的物件其實都是Prefab預設。這里可以看天空,其實是運用了Skybox組件,選中Main Camera可以在菜單中Component——〉Rendering——〉Skybox。
3)光
若無光運行的時候漆黑一片,這里放了個Point Light點光,數值可自行調整,添加和Cube一樣。
4)腳本
腳本放在Scripts文件夾下,裡面Door是控制門開關,Shoot是滑鼠點擊事件,Respawn是墜落返原地。注意這里腳本寫好以後要拖到對應物體上才能運行。
5)動畫
開門其實是個動畫,創建在Component——〉Miscellaneous ——〉Animation
6)火焰
火焰是粒子產生的,粒子創建和Cube類似,Particle System裡面的數值要做相應調整就會有火焰效果了。
再介紹幾個Component裡面重要的組件
1)Rigidbody 剛體
剛體顧名思義,有重量,帶碰撞都是剛體的屬性,若你為一個物件添加這個組件,證明你需要前面這幾個屬性。
2)Character 人物
其實裡面放的都是控制視角或者是主角操作的腳本。
3)Trail Renderer 路徑渲染器
很有用的組件,可以看到自己走過的路徑,論壇上有個切水果刀光的例子就是用到它。
❹ 求助!在android中導入OBJ的3D模型怎麼導入,求具體方法
下面的List可用ArrayList替換
InputStream input;
BufferedReader reader;
try
{
List<String> verticeLines = new List<String>();
List<String> textureLines = new List<String>();
List<String> normalLines = new List<String>();
List<String> verticeIndiceLines = new List<String>();
List<String> textureIndiceLines = new List<String>();
List<String> normalIndiceLines = new List<String>();
input=new FileInputStream(data);
reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while((line = reader.readLine()) != null)
{
//?狦琌猔稈┪?フ膥尿鉻筁
if(line.startsWith("//") ||line.startsWith("#")|| line.trim().equals(""))
{
continue;
}
String SPACE=" ";
String SLASH="/";
String[] st=RemoveNull(line.split(SPACE));
String lineType = st[0];
if(lineType.equals("v"))
{//郴翴畒夾
verticeLines.Add(st[1]);
verticeLines.Add(st[2]);
verticeLines.Add(st[3]);
}
else if(lineType.equals("vt"))
{//郴翴?借畒夾
textureLines.Add(st[1]);
textureLines.Add(st[2]);
}
else if(lineType.equals("vn"))
{//郴翴猭?秖
normalLines.Add(st[1]);
normalLines.Add(st[2]);
normalLines.Add(st[3]);
}
else if(lineType.equals("f"))
{//?à?癸萊?郴翴??借?猭?秖
//?艙畒夾
String v1=st[1];
String v2=st[2];
String v3=st[3];
String[] st1=v1.split(SLASH);
String[] st2=v2.split(SLASH);
String[] st3=v3.split(SLASH);
//頂點
verticeIndiceLines.Add(st1[0]);
verticeIndiceLines.Add(st2[0]);
verticeIndiceLines.Add(st3[0]);
//紋理
textureIndiceLines.Add(st1[1]);
textureIndiceLines.Add(st2[1]);
textureIndiceLines.Add(st3[1]);
//正常
normalIndiceLines.Add(st1[2]);
normalIndiceLines.Add(st2[2]);
normalIndiceLines.Add(st3[2]);
}
}
//郴翴畒夾:3?????郴翴
int indicesSize=verticeIndiceLines.Count();
indices=new short[indicesSize];
int verticeSize=indicesSize*3;
vertices=new float[verticeSize];
//?借畒夾:埃3т?碭?郴翴??2Τㄢ?畒夾
int textureSize=indicesSize*2;
textures=new float[textureSize];
//猭?秖:–?郴翴常Τ?艙猭?秖??3Τ3?よ??秖
int normalSize=indicesSize*3;
normals =new float[normalSize];
for(int i=0;i<verticeIndiceLines.Count();i++)
{
//郴翴
indices[i]=(short)i;
int indice=Integer.valueOf(verticeIndiceLines.Item(i))-1;
//郴翴畒夾
vertices[i*3]=Float.valueOf(verticeLines.Item(indice*3));
vertices[i*3+1]=Float.valueOf(verticeLines.Item(indice*3+1));
vertices[i*3+2]=Float.valueOf(verticeLines.Item(indice*3+2));
if(!textureIndiceLines.Item(i).equals("")){
int textureIndice=Integer.valueOf(textureIndiceLines.ItemOrDefault(i, "0"))-1;
textures[i*2]=Float.valueOf(textureLines.ItemOrDefault(textureIndice*2,"0"));
textures[i*2+1]=Float.valueOf(textureLines.ItemOrDefault(textureIndice*2+1,"0"));
System.out.println(textureIndiceLines.Item(i));
}
//猭?秖畒夾
int normalIndice=Integer.valueOf(normalIndiceLines.Item(i))-1;
normals[i*3]=Float.valueOf(normalLines.Item(normalIndice*3));
normals[i*3+1]=Float.valueOf(normalLines.Item(normalIndice*3+1));
normals[i*3+2]=Float.valueOf(normalLines.Item(normalIndice*3+2));
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}。