サンプルプログラムのビルドや開発環境については前の記事
前回: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


![[VuforiaでARアプリ] VideoPlaybackSampleをeclipseでビルド [Androidアプリ]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRBoFu-6ZnxKIGuaQWQFgu_d5n9XUS6gP67U3xHQZJuEUjMuwhNZMCYyGH4dIoX6aoMqcauczn7pPfMxS1P0i6qB3dsC5DX1dO3lqN6nv2TdaXSkOgrYQunZvAzAPVSX9kAXTAQV7KqzWt/w129/VideoPlaybackSample.png)
![[簡単Androidアプリ] 背景にグラデーションを与える方法](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwgRajUv5KuRWHd3gdB4BBfMRv4ONvTPAi5fCjbM5mHO63WRO2v0wVN1kOgF1-eC-M3NXt_1kk8bxMjt02FLyeEugBXxDJKRGgU8F1rZQnLlrViLxzod36NagqeVYppwhyOQxtnsWb2Vx7/w129/android.jpg)
0 コメント: