圖片來源:http://tw.freeimages.com/photo/3d-glasses-1424688

圖片來源:http://tw.freeimages.com/photo/3d-glasses-1424688

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。

 

下載需要的檔案

這裡 下載需要的檔案,要注意的是找有 3ds 格式的以及下載下來之後,texture 的圖片大小一定要是 2 的次方,否則載入 texture 的時候會出現錯誤。選桶子的原因是 texture 較為簡單,先試成功一個之後,再去載入複雜一點的模型。

 

載入 3DS 模型

附上載入程式碼,基本上沒有什麼不同,差別只有在於需不需要設定 texture,例如:載入 obj 跟 mtl 的時候,由於 mtl 已經有 texture 資訊,因此不需要呼叫 setTexture 方法,而 3DS 需要加入此方法,否則會看到赤裸裸的模型。另外有些模型太小,不放大會看不到 (就小小的),但是放大之後偏差跟位移也會明顯放大,各位可以試試看 …

public ImageTargetRenderer(ImageTargets activity, SampleApplicationSession session) {
    mActivity = activity;
    vuforiaAppSession = session;
    world = new World();
    world.setAmbientLight(150, 150, 150);
    // set the following value according to your need, so the object won't be disappeared.
    world.setClippingPlanes(2.0f, 3000.0f);
    sun = new Light(world);
    sun.setIntensity(250, 250, 250);

    try{
        // 載入 texture 並且取名為 ton2.jpg,之後可以直接用 setTexture(name) 來設定 texture
        TextureManager.getInstance().addTexture("ton2.jpg",
                new Texture(mActivity.getAssets().open("ton2.jpg"))
        );
        try{
            // 載入 3ds 模型,放大 100 倍 
            Object3D[] tmp = Loader.load3DS(mActivity.getAssets().open("ton3_low.3ds"), 100);
            if(tmp != null && tmp.length >= 1){
                cylinder = tmp[0];
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        cylinder.strip();
        cylinder.build();
        // 讓桶子躺下
        cylinder.rotateX(1.5f);
        // 設定 texture,讓桶子有衣服穿 XD
        cylinder.setTexture("ton2.jpg");
        cylinder.translate(0, 0, 0);
        world.addObject(cylinder);
        cam = world.getCamera();

        SimpleVector sv = new SimpleVector();
        sv.set(cylinder.getTransformedCenter());
        sv.y -= 100;
        sv.z -= 100;
        sun.setPosition(sv);
    }catch(Exception e){
        e.printStackTrace();
    }
    MemoryHelper.compact();
}

 

結果

載入 3ds 測試

載入 3ds 測試

Loader 部份文章就到這邊,下一篇將記錄如何遇到不同 image target 的時候可以動態載入不同的模型。

 

Android Vuforia with jPCT-AE 系列文章

Android Vuforia with jPCT-AE (1) – 基本範例
Android Vuforia with jPCT-AE (2) – 載入 obj 測試
Android Vuforia with jPCT-AE (3) – 載入 md2 測試
Android Vuforia with jPCT-AE (4) – 載入 3ds 測試
Android Vuforia with jPCT-AE (5) – 多重模型載入

參考資料:

  1. TF3DM
    http://tf3dm.com/
相關文章

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

18

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

18

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

18

Android Vuforia with jPCT-AE (1) – 基本範例

說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 ... 現在已經更新到 Vu
2016-07-06 07:57:58
hans

8

ClickForce (MobiForce) 當機問題

這真是個浪費時間又漫長的過程,CF 推出新版後台以及新版 SDK 的時候,小蛙就下載來測試,一開始小蛙直接套在「我的股票精算師」上,但只要一套上去就當機 ...
2015-09-02 10:32:51
hans

8

我的股票精算師備份功能

常遇到使用者詢問「我的股票精算師」要怎麼備份,這篇記錄一下,需要寫怎麼備份表示軟體設計上有很大的問題,造成使用者使用上的困難,但小蛙最近沒有時間去做修改 ... 只好委屈精算師的使用者了 ><
2015-02-06 18:32:07
hans

8

第一次從淘寶買小米盒子3

最近阿咕有在大螢幕上看韓劇的需求,剛好搭上 Chromecast 的上市,survey 了一些 Android 電視棒。這篇記錄這幾天的經過。

2015-01-04 23:36:33
hans

8

Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h

終於來到 Vuforia 記錄的最後一篇了,這篇參考到網路上神人的做法,怎麼把一個 3D model 轉換成 Vuforia 可以使用的 .h 檔,這邊之後都直接使用 An
2014-12-10 11:25:50
hans

8

Qualcomm Vuforia 教學 (5) – 替換茶壺 – Android JNI 版本

前面的文章提到為什麼要用 Android NDK 來開發,既然已經有了 Android 版本替換茶壺的文章,這邊記錄 Android NDK 版本的替換茶壺。
2014-12-09 17:54:17
hans

8




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha