サンプルプログラムのビルドや開発環境については前の記事
前回:http://taku-note.blogspot.jp/2014/10/eclipsevuforia.html
まず、サンプルプログラムの中に入っている「VideoPlayback.java」を編集します。
「VideoPlayback.java」
VideoPlayback 65行目辺り
「NUM_TARGETS」に動画の数を入力
今回は追加する動画を「HYOUSHI」とします。
// Movie for the Targets: public static final int NUM_TARGETS = 3; //追加コード public static final int STONES = 0; public static final int CHIPS = 1; public static final int HYOUSHI = 2; //追加コード
VideoPlayback 156行目辺り
「mMovieName」に新しい動画のファイル名を指定します。
mMovieName[STONES] = "VideoPlayback/VuforiaSizzleReel_1.m4v"; mMovieName[CHIPS] = "VideoPlayback/VuforiaSizzleReel_2.m4v"; mMovieName[HYOUSHI] = "VideoPlayback/Hyoushi.wmv"; //追加コード
VideoPlayback 256行目辺り
サムネイルテクスチャを追加します。これは動画が再生される前に画面に表示する画像です。
// We want to load specific textures from the APK, which we will later // use for rendering. private void loadTextures() { mTextures.add(Texture.loadTextureFromApk( "VideoPlayback/VuforiaSizzleReel_1.png", getAssets())); mTextures.add(Texture.loadTextureFromApk( "VideoPlayback/VuforiaSizzleReel_2.png", getAssets())); mTextures.add(Texture.loadTextureFromApk( "VideoPlayback/Hyoushi.png", getAssets())); //追加コード mTextures.add(Texture.loadTextureFromApk("VideoPlayback/play.png", getAssets())); mTextures.add(Texture.loadTextureFromApk("VideoPlayback/busy.png", getAssets())); mTextures.add(Texture.loadTextureFromApk("VideoPlayback/error.png", getAssets())); }
次に「VideoPlaybackRenderer.java」を編集します。
「VideoPlaybackRenderer.java」
VideoPlaybackRenderer 73行目辺り
private float videoQuadTextureCoordsTransformedStones[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, }; private float videoQuadTextureCoordsTransformedChips[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, }; private float videoQuadTextureCoordsTransformedHyoushi[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, }; //追加コード
VideoPlaybackRenderer 531行目辺り
if (imageTarget.getName().compareTo("stones") == 0) currentTarget = VideoPlayback.STONES; else if (imageTarget.getName().compareTo("chips") == 0) currentTarget = VideoPlayback.CHIPS; else if (imageTarget.getName().compareTo("動画を移したいモデルビュー名") == 0) currentTarget = VideoPlayback.HYOUSHI;
VideoPlaybackRenderer 647行目辺り
if (imageTarget.getName().compareTo("stones") == 0) GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle, 2, GLES20.GL_FLOAT, false, 0, fillBuffer(videoQuadTextureCoordsTransformedStones)); else if (imageTarget.getName().compareTo("chips") == 0) GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle, 2, GLES20.GL_FLOAT, false, 0, fillBuffer(videoQuadTextureCoordsTransformedChips)); else if (imageTarget.getName().compareTo("動画を移したいモデルビュー名") == 0) GLES20.glVertexAttribPointer(videoPlaybackTexCoordHandle, 2, GLES20.GL_FLOAT, false, 0, fillBuffer(videoQuadTextureCoordsTransformedHyoushi));
VideoPlaybackRenderer 862行目辺り
if (target == VideoPlayback.STONES) { tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedStones[0], videoQuadTextureCoordsTransformedStones[1], videoQuadTextureCoords[0], videoQuadTextureCoords[1], mtx); videoQuadTextureCoordsTransformedStones[0] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedStones[1] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedStones[2], videoQuadTextureCoordsTransformedStones[3], videoQuadTextureCoords[2], videoQuadTextureCoords[3], mtx); videoQuadTextureCoordsTransformedStones[2] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedStones[3] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedStones[4], videoQuadTextureCoordsTransformedStones[5], videoQuadTextureCoords[4], videoQuadTextureCoords[5], mtx); videoQuadTextureCoordsTransformedStones[4] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedStones[5] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedStones[6], videoQuadTextureCoordsTransformedStones[7], videoQuadTextureCoords[6], videoQuadTextureCoords[7], mtx); videoQuadTextureCoordsTransformedStones[6] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedStones[7] = tempUVMultRes[1]; } else if (target == VideoPlayback.CHIPS) { tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedChips[0], videoQuadTextureCoordsTransformedChips[1], videoQuadTextureCoords[0], videoQuadTextureCoords[1], mtx); videoQuadTextureCoordsTransformedChips[0] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedChips[1] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedChips[2], videoQuadTextureCoordsTransformedChips[3], videoQuadTextureCoords[2], videoQuadTextureCoords[3], mtx); videoQuadTextureCoordsTransformedChips[2] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedChips[3] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedChips[4], videoQuadTextureCoordsTransformedChips[5], videoQuadTextureCoords[4], videoQuadTextureCoords[5], mtx); videoQuadTextureCoordsTransformedChips[4] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedChips[5] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedChips[6], videoQuadTextureCoordsTransformedChips[7], videoQuadTextureCoords[6], videoQuadTextureCoords[7], mtx); videoQuadTextureCoordsTransformedChips[6] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedChips[7] = tempUVMultRes[1]; } else if (target == VideoPlayback.HYOUSHI) //追加コード { tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedHyoushi[0], videoQuadTextureCoordsTransformedHyoushi[1], videoQuadTextureCoords[0], videoQuadTextureCoords[1], mtx); videoQuadTextureCoordsTransformedHyoushi[0] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedHyoushi[1] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedHyoushi[2], videoQuadTextureCoordsTransformedHyoushi[3], videoQuadTextureCoords[2], videoQuadTextureCoords[3], mtx); videoQuadTextureCoordsTransformedHyoushi[2] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedHyoushi[3] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedHyoushi[4], videoQuadTextureCoordsTransformedHyoushi[5], videoQuadTextureCoords[4], videoQuadTextureCoords[5], mtx); videoQuadTextureCoordsTransformedHyoushi[4] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedHyoushi[5] = tempUVMultRes[1]; tempUVMultRes = uvMultMat4f( videoQuadTextureCoordsTransformedHyoushi[6], videoQuadTextureCoordsTransformedHyoushi[7], videoQuadTextureCoords[6], videoQuadTextureCoords[7], mtx); videoQuadTextureCoordsTransformedHyoushi[6] = tempUVMultRes[0]; videoQuadTextureCoordsTransformedHyoushi[7] = tempUVMultRes[1]; }
これで動画の追加は完了です。
モデルデータセットを変更したい場合は以下のコードを編集、追加します。
VideoPlayback 632行目辺り
// データセットをロード: if (!dataSetFITPamph.load("追加したいデータセット名.xml", STORAGE_TYPE.STORAGE_APPRESOURCE)) //編集箇所 {
サンプルプログラムのビルドや開発環境については前の記事で
前回:http://taku-note.blogspot.jp/2014/10/eclipsevuforia.html
参考:https://developer.vuforia.com/forum/faq/android-how-do-i-add-another-target-video-playback-sample
0 コメント: