SATCHのスナップショットを使うと、デバイスの画面をオブジェクトもろ共、スクリーンキャプチャできます。

まあ、なんかの記念に使えるんじゃないかと.....。



使ってみる

サンプルTESTSのtestSnapshotのコードを使います。

ここでは、メニュのハードキーをクリックしてスナップショットします。

ファイルは、SDカードの以下のフォルダーに格納されます。

/SDカード/ti

こんな感じ。

顔を検出して、バラを表示します(FacetrackingSnapshot for Girls)。





メニュキーを押せば、キャプチャ画像が保存されます。

同時に、保存先とファイル名が表示されます。





野郎にバラってのもなんなんで、こういうバージョンも...(FacetrackingSnapshot for Boys)。





Androidのファイルマネージャーで見ると、こんな感じ。





因みに画像のファイラーは以下を使ってます。

ファイルマネージャ

両方いけるバージョンも追加...(FacetrackingSnapshot for Both)。

今年は、Stones結成50周年っちゅうことで...。





ここはひとつ、ミック・ジャガーご本人さんにもご登場いただきましょう。





このスナップショットの画像

しかし、こんな事言うと怒られるかもしれませんが....
ミック・ジャガーの口元って結構下品な感じなんで、こういう図って何気にフィットしてるって感じるのは私だけかなあ...なんて。



両方行けるバージョンを、もう1つ追加(FacetrackingSnapshot for Both2)。

ビートルズも今年は結成50周年。

でも、特別シンボルっぽいものもなかったので、こういうやつにしました。

「レノンのめがね」





顔を検出すると....





このスナップショットの画像

インストール

FacetrackingSnapshot for Girls



FacetrackingSnapshot for Boys



FacetrackingSnapshot for Both



FacetrackingSnapshot for Both2



アプリをQRコードからインストールする方法はコチラを参照




【Luaコード】

local componentInterface = getComponentInterface()
local text = Text2D(getCurrentScene():getObjectByName("text"))

local MLTPlugin = getMLTPluginManager()
local scene = getCurrentScene()
local camera = Object3D(scene:getObjectByName("camera"))
local ref = Object3D(scene:getObjectByName("Ref"))
local inputManager = getInputManager()
local keyboard = Keyboard(inputManager:getDevice(TIINPUT_KEYBOARDDEVICE))
local vidcap = VideoCapture(scene:getObjectByName("vidCap"))


local position = Vector3()
local positionInit = Vector3()
local orientation = Quaternion()
local orientationInit = Quaternion()

local err_ret = eOk
local trackingindex = -1
local isObjectRegistered = 0

local lEOSType = getOSType()
LOG("OS Type = " .. lEOSType)
local id = vidcap:getVidCapID()
LOG("Vidcap id = " .. id)


--
local targetDirectory = ""
if (getOSType() == "android") then 
    targetDirectory = "/sdcard"
else
    targetDirectory = getUserAppDataDirectory()   
end

local targetJpg = ""
--targetBmp = targetDirectory .. "/testSnapshot.bmp"
--targetJpg = targetDirectory .. "/testSnapshot.jpg"

local mainView = RenderTarget(scene:getMainView())
--mainView:dump(targetBmp);
--mainView:dump(targetJpg);

--
snapname = ""


err_ret, trackingindex = MLTPlugin:startTracking("facetrackerAutoinit/FaceTrackingAutoinit_tracker.xml", id, camera)

-- Initial State

positionInit:setX(0)
positionInit:setY(0)
positionInit:setZ(-1)

-- MLTPlugin:setTargetPosition(trackingindex, 0, positionInit)
ref:setPosition(positionInit, camera)
-- ref:setVisible(true) -- you can decomment this to be able to see the mask at the default position

coroutine.yield()

repeat
        err_ret,status = MLTPlugin:getTrackingStatus(trackingindex)

        local targetstatus = -1
        err_ret, targetstatus = MLTPlugin:getTargetStatus(trackingindex, 0)

        if (err_ret == eOk) and (targetstatus > 0) then
            
            
            if snapname ~= "" then
                
                targetJpg = targetDirectory .. "Satch_" .. snapname .. ".jpg"
                    
                mainView:dump(targetJpg);
                
                snapname = ""
                
                text:setText(targetJpg)
                
                
            
            end
                    
            ref:setVisible(true)
            err_ret = MLTPlugin:getTargetPos(trackingindex, 0, position, orientation)
            
            ref:setPosition(position, camera)
            ref:setOrientation(orientation, camera)      
        else
            
            ref:setVisible(false)
        end
        
        
        isCommand, command = componentInterface:pullCommand()
            if isCommand then
                if command["CommandName"] == "snapshot" then
                    --
                    --componentInterface:executeAppFunc("sendLog","receive command")
                    
                    
                    snapname = command["arg0"]
                    
                    
                    
                end
            end
        
        
        
        
        
until coroutine.yield()


【Javaコード】

@Override
    public boolean onKeyDown(int keyCode, KeyEvent msg){
        switch(keyCode){
            case android.view.KeyEvent.KEYCODE_MENU :
                
                
                args[0] = "12345";
                
            _kddiComponent.enqueueCommand("snapshot", args);
                //
                return true;
        
            
            case android.view.KeyEvent.KEYCODE_BACK :
                showDialog( DIALOG_EXIT );
                return true;
            
            
            
            
        }
        return false;
    }


TOP

リソース

サンプル・アプリで使っているリソースの件。

バラの3Dオブジェクトや3Dザク、ストーンズの3Dシンボルなどは、apkをリバースエンジニアリングすれば、

assets/Scenario/Scenario_facetracking/mediaフォルダーに入っています。



TOP





トップページ| サイトマップ|