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