本社群由Nantou.py使用者社群以及國立虎尾科技大學電機資訊學院負責維護,它是一群熱愛智慧生活科技以及Python的專業教師所組成,大家一同快樂地研究有關數位生活中人工智慧、大數據、物聯網、雲端服務、APPS、福祉科技、感知網路服務、車載網路服務、及網際網路等資通訊技術,並運用這些資通訊以及Python技術來提升我們的日常生活品質,建立更好的生活環境。
2014年6月1日 星期日
2014年4月17日 星期四
[ Android Blender] 把Blender 3D 物件輸出成AndAR格式
Blender是一套很強3D Model的工具,AndAR則是Android上的擴增實境的軟體,我們可以從Google Play下載。
1.Write Normals
2.Write Materials
3.Taiangulate Faces
4.Material Group
5.Keep Vertex Order
按下Export Obj,在儲存目檔下即可以看到mtl及obj檔。
把mtl及obj檔複製到手機上
選擇Play商店,輸入AndAR,就可以下載AndAR Model Viewer APP,下圖是已經下載完成。
執行AndAR Model Viewer APP。
你可以選擇內建的 3D Model來進行測試
由於AndAR是有標籤的擴充實境,你需要先準備好AR標籤,如下圖,你可以在Google上輸入AndAR Marker即可以找到。
當你選擇其中一個Model執行後,把手機攝像頭對著標籤即可看到3D MODEL站在AR標籤上。
接下來打開Blender,進行模型繪製,如下圖。
選擇File->Export->Wavefront(obj),並依圖參數進行設定(在圖的左邊)
把下列5種參數打勾1.Write Normals
2.Write Materials
3.Taiangulate Faces
4.Material Group
5.Keep Vertex Order
按下Export Obj,在儲存目檔下即可以看到mtl及obj檔。
把mtl及obj檔複製到手機上
回到AndAR APP選擇Select a model file選項
找到download目錄
選擇obj檔。
執行結果
2014年4月13日 星期日
2014年3月9日 星期日
[ Android AR ] AndAR 基本架構
AndAR架構圖如下:
首先您必須要新增CustomActivity並繼承AndARActivity,在CustomActivity類別中新增CustomRenderer物件,這個物件會交由setNonARRenderer函式來設定。
利用getArtoolkit來取得ARToolkit。
接下來建立CustomObject物件,並呼叫registerARObject來注冊。
首先您必須要新增CustomActivity並繼承AndARActivity,在CustomActivity類別中新增CustomRenderer物件,這個物件會交由setNonARRenderer函式來設定。
利用getArtoolkit來取得ARToolkit。
接下來建立CustomObject物件,並呼叫registerARObject來注冊。
[Android AR] 準備工作
先到Google Play 市場下載APP來玩玩。
一個很不錯的標籤式擴增實境開放式源始碼:
AndAR - Android Augmented Reality
一本介紹AndAR的專業書籍
Pro Android Augmented Reality
https://github.com/RaghavSood/ProAndroidAugmentedReality
開發工具:
Android SDK http://developer.android.com/sdk/index.html
2014年1月5日 星期日
[ mixare ] 在擴增實境上繪製縮放的捲軸
如果想安裝設mixare Android可以參考下列文章:
[ mixare ] 一套開放式源始碼擴增實境瀏覽器資源分享
因有讀者問到如何在鏡頭畫面中加上一些繪圖的功能,敏哥花了一些時間研究其原始碼。
當程式執行時,其畫面如下:
按下功能表鍵,就可以看到功能表單。選擇Zoom/level功能表,就可以看到捲軸了。
當讀者把程式滙入後,在org.mixare可以找到MixView.java打開程式後,可以在1146行找到AugmentedView類別,在該類別下有onDraw(Canvas canvas)重繪事件程序,在1185~1207行就是捲軸的繪製程式,程式碼如下:
if (app.isZoombarVisible()) {
zoomPaint.setColor(Color.WHITE);
zoomPaint.setTextSize(14);
String startKM, endKM;
endKM = "80km";
startKM = "0km";
/*
* if(MixListView.getDataSource().equals("Twitter")){ startKM =
* "1km"; }
*/
canvas.drawText(startKM, canvas.getWidth() / 100 * 4,
canvas.getHeight() / 100 * 85, zoomPaint);
canvas.drawText(endKM, canvas.getWidth() / 100 * 99 + 25,
canvas.getHeight() / 100 * 85, zoomPaint);
int height = canvas.getHeight() / 100 * 85;
int zoomProgress = app.getZoomProgress();
if (zoomProgress > 92 || zoomProgress < 6) {
height = canvas.getHeight() / 100 * 80;
}
canvas.drawText(app.getZoomLevel(), (canvas.getWidth()) / 100
* zoomProgress + 20, height, zoomPaint);
}
2013年7月25日 星期四
2011年11月27日 星期日
訂閱:
文章 (Atom)