AR シーンの定義

  • iPad

AR_configuration.json ファイルは、プレゼンテーションによって使用されるシーンとすべてのモデルを定義します。すべてのシーンには ID およびモデルのアレイがあります。

Copy

サンプルシーンコード

"scenes" : [
  {
    "id" : "scene.L001",
    "name" : "Veeva Codesign",
    "models" : [...]
  }
]

設定 JSON ファイルと 3D モデルを含む例全体を表示するには、Veeva のサンプル AR Zip ファイルをダウンロードしてください。

各モデルには、モデルの見た目と動作を定義する一連のメタデータタグが含まれます。使用可能なメタデータタグは以下の通りです。

タグ名

説明

ID

scene.L001

 

名前

Veeva コード署名

シーンのタイトルは画面上部に表示されます。

debug_mode

Copy
"debug_mode": "false"

True の場合、モデルのテストでデバッグオーバーレイが表示され、X、Y、Z 軸に色が付きます。

 

Veeva は、プロダクション環境に展開する前にこれを false に設定することをお勧めします。

edit_mode_animation

Copy
"edit_mode_animation": "false"

編集モードアニメーションを有効化するかどうかを決定します。True または False。True に初期設定されます。

モデル

Copy
"models":[
   {
      "id":"LogosCodesignVeeva",
      "name":"LogosCodesignVeeva",
      "path":"Models",
      "assets":"Logos",
      "file_extension":"dae"
   }
]

シーンで選択可能なモデルの一覧。各モデルに以下のパラメータを指定します。

 

  • ID
  • 名前
  • パス
  • アセット
  • File_extension – dae または obj のいずれか

ID

LogosCodesignVeeva

各モデルの固有 ID。これはシーンに複数のモデルを配置する場合に指定する必要があります。

パス

モデル

モデルのファイルのパス。シーン内の各モデルには独自のパスがあります。

アセット

ロゴ

モデルで使用されるアセットのパス。このパスはパス metadata タグ内にあります。この例での場所は ./Models/Logos/ となります。

file_extension

.dae または .obj

様々な種類の AR 互換ファイルに対応します。

normal_maps

Copy
"obj_name": "file3",
"texture_name" : "CodesignStudio.tga"

複数の通常マップをモデルに関連付けることができます。テクスチャ名と、関連付けられているオブジェクトの ID の両方を指定します。

スケール

0.025,

0.025,

0.025

オブジェクトの初期スケールの X、Y および Z の値

ロゴ

logo.png

オーバーレイ画像の名前。この画像には会社ロゴ、手順、安全情報などが入ります。この画像は常に中心に配置され、画面の解像度によっては縮小されることがありますが、拡大されることはありません。

 

Veeva は、この画像に透明な背景を設定して、画像によってアクションが見えなくなることがないかどうかテストすることをお勧めします。

animation_
control_panel

Copy
"animation_control_panel":{
   "type":"control_panel",
   "id":"control_panel.interactions",
   "buttons":[
      "..."
   ],
   "slider":{
      "type":"slider",
      "id":"slider.main",
      "animations":[
         "..."
      ]
   }
}

次へボタンおよび前へボタンを選択したときのアクションを定義します。各ボタンには複数のアクションを関連付けることができます。

touch_triggers

Copy
"touch_triggers":[
   {
      "type":"trigger",
      "id":"trigger.pupil",
      "obj_name":"Pupil",
      "fade_object":true,
      "fade_object_duration":1.0,
      "actions":[
         "..."
      ]
   }
]

モデルの特定のオブジェクトを選択したときに開始されるアクションを定義します。ID パラメータを、関連付けられているオブジェクトの ID に設定します。

 

フェードおよびフェードの時間 (秒) もこのメタデータタグで制御できます。

アンカー

Copy
"anchors":[
   {
      "type":"anchor",
      "id":"anchor.eyeball",
      "obj_name":"II__Eyeball",
      "position":[
         0,
         0,
         0
      ],
      "distance":0.4,
      "actions":[
         {
            "type":"label",
            "id":"label.eyeball"
         }
      ]
   }
]

近接トリガーの参照ポイント。カメラが指定された距離よりも被写体に近づくと、アクションが開始されます。各アンカーに以下のパラメータを定義する必要があります。

 

  • タイプ – 常にアンカーにする
  • ID
  • Obj_name – 適切なオブジェクトの ID
  • 位置 – オブジェクトの中心からのオフセット距離を指定します。これにより、有効化ポイントをモデルの周囲ではなく外側にすることができます。
  • 距離 – 有効化ポイントの半径 (メートル)
  • アクション – 複数のアクションを関連付けることができます

アニメーション

Copy
"animations":[
   {
      "type":"animation",
      "id":"Codesign-anim",
      "autoplay":true,
      "repeat_count":1
   }
]

モデルのすべてのアニメーションを定義します。

 

自動再生パラメータを true に設定すると、モデルが読み込まれたときにアニメーションが開始されます。

 

リピート回数を 0 (ゼロ) にすると、アニメーションが無限にループ再生されます。

オーディオ

Copy
"audios":[
   {
      "type":"audio",
      "id":"audio.shot",
      "file_name":"ArrowHit02.wav"
   }
]

アクションを開始したときに再生されるオーディオファイルを定義します。

ラベル

Copy
"labels":[
   {
      "type":"label",
      "id":"label.eyeball",
      "text":"The Eyeball"
   }
]

アクションを使用して表示されるラベルまたは説明を定義します。

 

このテキストブロックにフォーマット化は適用されません。ラベルは画面下部中央の同じ位置に常に表示されます。

 

reference_images

Copy
"reference_images":[
   {
      "name":"eyeball_marker.png",
      "width":0.08
   }
]

モデルを配置したときに画像認識ソフトウェアをトリガーするために使用される画像名。

reference_objects

Copy
"reference_objects":[
   {
      "name":"eyeball_marker_rounded_small.arobject"
   },
   {
      "name":"eyeball_marker_dark.arobject"
   }
]

モデルを配置したときにオブジェクト認識ソフトウェアをトリガーするために使用されるオブジェクト名。

マスク

Copy
"portal":{
   "type":"portal",
   "id":"portal.demo",
   "interior_name":"Entire_Scene",
   "mask_name":"Mask"
}

特定の角度から表示するときにモデルのすべてまたは一部を隠すことができます。interior_name パラメータは、非表示になるモデルの ID を定義します。mask_name パラメータはマスクするオブジェクトの ID を定義します。

シーンの例

Copy

サンプルシーンコード

{
   "scenes":[
      {
         "id":"scene.L001",
         "name":"Veeva Codesign",
         "debug_mode":false,
         "models":[
            {
               "id":"LogosCodesignVeeva",
               "name":"LogosCodesignVeeva",
               "path":"Models",
               "assets":"Logos",
               "file_extention":"dae",
               "scale":[
                  0.025,
                  0.025,
                  0.025
               ],
               "normal_maps":[
                  {
                     "obj_name":"file3",
                     "texture_name":"CodesignStudio.tga"
                  },
                  {
                     "obj_name":"file4",
                     "texture_name":"site.tga"
                  }
               ],
               "logo":"logo.png",
               "animation_control_panel":{
                  "type":"control_panel",
                  "id":"control_panel.interactions",
                  "buttons":[
                     "..."
                  ]
               }
            }
         ]
      }
   ]
}

インタラクショントリガーは、モデルに特定の変化を起こさせます。例えば、アニメーションの開始、ラベルの表示、オーディオファイルの再生などです。

3 種類のインタラクショントリガーがアクションを開始します。

  • タッチトリガー
  • 近接トリガー
  • アニメーションコントロールパネル – 以下の 2 つのいずれかの方法で制御されます。
  • スライダーコントロールバー
  • 次へボタンと前へボタン

各インタラクショントリガーにより、1 つまたは複数のアクションを実行できます。これらのトリガーは、JSON ファイル内のアレイに設定します。すべてのインタラクショントリガーに以下の情報を必ず指定してください。

  • タイプ
  • 関連付けられているオブジェクトの ID
  • 関連付けられているオブジェクトの名前
  • アクションのタイプ
  • 個別のアクションの ID

タッチトリガーの例

Copy

サンプルタッチトリガーコード

"touch_triggers":[
   {
      "type":"trigger",
      "id":"trigger.left.door",
      "obj_name":"NovaSeq_2_a_Left_Door",
      "actions":[
         {
            "type":"animation",
            "id":"NovaSeq_2_a_Right_Door-anim"
         },
         {
            "type":"audio",
            "id":"audio.right.door.start"
         }
      ]
   }
]

近接トリガーの例

Copy

サンプル近接トリガーコード

"anchors":[
   {
      "type":"anchor",
      "id":"anchor.lens",
      "obj_name":"Retina_front",
      "position":[
         0,
         0,
         0
      ],
      "distance":0.4,
      "actions":[
         {
            "type":"animation",
            "id":"Back-anim"
         },
         {
            "type":"label",
            "id":"label.eyeball"
         }
      ]
   }
]

コントロールパネルの例

アニメーションの各セットは、最初から最後まで自動的に再生する代わりに、アニメーションスライダーで制御することもできます。

Copy

サンプルアニメーションコントロールパネルコード

"animation_control_panel":{
   "type":"control_panel",
   "id":"control_panel.interactions",
   "slider":{
      "type":"slider",
      "id":"slider.main",
      "animations":[
         {
            "type":"animation",
            "id":"Codesign-anim"
         },
         {
            "type":"animation",
            "id":"group1-anim"
         }
      ]
   },
   "buttons":[
      {
         "actions":[
            {
               "type":"animation",
               "id":"Codesign-anim"
            },
            {
               "type":"animation",
               "id":"group1-anim"
            }
         ]
      }
   ]
},
//関連付けられているアクションがトリガーされると再生されるアニメーション
"animations":[
   {
      "type":"animation",
      "id":"NovaSeq_2_a_Left_Door-anim",
      "autoplay":false,
      "repeat_count":1
   }
],
//関連付けられているアクションがトリガーされると再生される音声ファイル
"audios":[
   {
      "type":"audio",
      "id":"audio.fgfr",
      "file_name":"Pipeline.mp3"
   }
],
//トリガーされたアクションに応じて表示されるラベル。
"labels":[
   {
      "type":"label",
      "id":"label.monitor",
      "text":"This is the MONITOR"
   }
]