プラットフォームAPI:イメージ・ターゲット
8th Wall Image Target Management APIにより、開発者は、8th Wallによって動作しているWebARプロジェクトに関連する イメージ・ターゲットライブラリ を動的に管理することができます。 このAPIと付属のドキュメントは、Web開発 & 8th Wallイメージ・ターゲットに精通した開発者向けに設計されています。
始める前に Image Target API の使用を開始する前に、ワークスペースを*Enterpriseの課金プランに設定する必要があります。 アップグレードをご希望の方は、営業担当までご連絡ください。
認証
認証は秘密鍵によって行われます。 Enterpriseプランのワークスペースは、API Keyをリクエストすることができます。 リクエストが承認されていることを確認するために、各リクエストにこの秘密鍵を含めることになります。 キーはワークスペースにスコープされているので、キーはそ のワークスペース内の全アプリの、すべてのイメージ・ターゲットにアクセスできます。
キーはアカウントページで確認することができます。
重要
Image Target APIキーは、ワークスペースに関連付けられたB2Bキーです。 APIキーを公開すると、意図しない利用や不正アクセスにつながる可能性があるため、ベストプラクティスに従ってAPIキーを保護してください。 以下の点を特に避けてください。
- ユーザーの端末で実行されるコードや、一般に公開されるコードにImage Target API Keyを埋め込むこと
- アプリケーションのソースツリー内にImage Target API Keyを格納すること
制限とクォータ
- 1分間に25リクエスト、バースト許容量は500リクエストです。つまり、1分間に500リクエストした後、1分間に25リクエストすることができます。20分後、再び500リクエストすることができます。
- 1日あたりのリクエスト上限は10,000です。
注: これらの制 限は、Image Target Management API にのみ適用され、開発者は 8th Wallプロジェクトに関連する画像のライブラリを動的に管理することができます。 これらの制限は、Web AR体験のエンドユーザーによるアクティベーションには、 適用されません。
ワークスペース内のプロジェクトに対するImage Target APIのクォータ制限の増加を希望する場合は、サポートにリクエストを送信してください。
エンドポイント
イメージ・ターゲットの作成
アプリのイメージ・ターゲットリストに、新しいターゲットをアップロー ドします。
リクエスト
curl -X POST "https://api.8thwall.com/v1/apps/$APP_KEY/targets" \
-H "X-Api-Key:$SECRET_KEY" \
-F "name=my-target-name" \
-F "image=@image.png"\
-F "geometry.top=0"\
-F "geometry.left=0"\
-F "geometry.width=480"\
-F "geometry.height=640"\
-F "metadata={\"customFlag\":true}"
-F "loadAutomatically=true"
フィールド | タイプ | デフォルト値 | 説明 |
---|---|---|---|
image | Binary data | PNGまたはJPEG形式で、480x640以上、2048x2048未満、10MB未満である必要があります。 | |
name | String | アプリ内で一意である必要があり、チルダ(~)を含めることはできません。255文字を超えることはできません。 | |
type [Optional] | String | 'PLANAR' | 'PLANAR' , 'CYLINDER' , または 'CONICAL' のいずれかです。 |
metadata [Optional] | String | null | metadataIsJson がtrueの場合、有効なJSONである必 要があり、2048 文字を超えることはできません。 |
metadataIsJson [Optional] | Boolean | true | メタデータプロパティを生の文字列として使用する場合は、falseを設定することができます。 |
loadAutomatically [Optional] | Boolean | false | 各アプリは、loadAutomatically: true で、5つのイメージ・ターゲットに制限されています。 |
geometry.isRotated [Optional] | Boolean | false | 画像が横向きから縦向きにあらかじめ回転している場合、trueに設定します。 |
geometry.top | integer | これらのプロパティは、画像に適用するクロップを指定します。 アスペクト比は3:4で、少なくとも480x640でなければなりません。 | |
geometry.left | integer | ||
geometry.width | integer | ||
geometry.height | integer | ||
geometry.topRadius | integer | type: 'CONICAL' でのみ必要です。 | |
geometry.bottomRadius | integer | type: 'CONICAL' でのみ必要です。 |
平面/曲面のジオメトリをアップロードする
このダイアグラムは、アップロードされた画像に対して、imageUrl
とthumbnailImageUrl
を生成するために、指定したクロップがどのように適用されるかを示しています。 幅:高さの比率は常に3:4です。
横長のクロップは、画像を時計回りに90度回転させた状態でアップロードし、geometry.isRotated: true
を設定して、回転させた画像に対してクロップを指定します。
円錐のジオメトリをアップロードする
この図は、アップロードされた画像が、パラメータに基づいてどのように平坦化され、クロップされるかを示しています。 アップロードされた画像は、コンテンツの上端と下端が2つの同心円に揃う「レインボー」形式になっています。 ターゲットの上部が下部より狭い場合、外側の半径(マイナス)としてtopRadius
を、内側の半径(プラス)としてbottomRadius
を指定してください。 縦長のクロップは、geometry.isRotated: true
を設定し、クロップ適用前に平坦化された画像を回転させます。
レスポンス
これはイメージ・ターゲットの標準的なJSON応答フォーマットです。
{
"name": "...",
"uuid": "...",
"type": "PLANAR",
"loadAutomatically": true,
"status": "AVAILABLE",
"appKey": "...",
"geometry": {
"top": 842,
"left": 392,
"width": 851,
"height": 1135,
"isRotated": true,
"originalWidth": 2000,
"originalHeight": 2000
},
"metadata": null,
"metadataIsJson": true,
"originalImageUrl": "https://cdn.8thwall.com/image-target/...",
"imageUrl": "https://cdn.8thwall.com/image-target/...",
"thumbnailImageUrl": "https://cdn.8thwall.com/image-target/...",
"geometryTextureUrl": "https://cdn.8thwall.com/image-target/...",
"created": 1613508074845,
"updated": 1613683291310
}
プロパティ | タイプ | 説明 |
---|---|---|
name | String | |
uuid | String | このイメージ・ターゲットのユニークIDです。 |
type | String | 'PLANAR' , 'CYLINDER' , または 'CONICAL' のいずれかです。 |
loadAutomatically | Boolean | |
status | String | 'AVAILABLE' または'TAKEN_DOWN' のいずれかです。 |
appKey | String | ターゲットが属するアプリです。 |
geometry | Object | 以下を参照してください。 |
metadata | String | |
metadataIsJson | Boolean | |
originalImageUrl | String | アップロードされたソース画像ののCDN URLです。 |
imageUrl | String | geometryTextureUrl のクロップされたバージョンです。 |
thumbnailImageUrl | String | サムネイルで使用するための、高さ350px版のimageUrl です。 |
geometryTextureUrl | String | 円錐の場合は、元画像を平らにしたもので、平面と曲面の場合は、originalImageUrl と同じものです。 |
created | integer | UNIXエポックからのミリ秒単位の作成日です。 |
updated | integer | UNIXエポックからのミリ秒単位の最終更新日です。 |
平面ジオメトリ
プロパティ | タイプ | 説明 |
---|---|---|
top | integer | |
left | integer | |
width | integer | |
height | integer | |
isRotated | Boolean | |
originalWidth | integer | アップロードされた画像の幅です。 |
originalHeight | integer | アップロードされた画像の高さです。 |
曲面または円錐ジオメトリ
originalWidth
とoriginalHeight
がgeometryTextureUrlに格納されている平坦化された画像の寸法を指すように変更された、平面ジオメトリプロパティを拡張します。
プロパティ | タイプ | 説明 |
---|---|---|
topRadius | float | |
bottom Radius | float | |
coniness | float | type: CYLINDER の場合は常に0です。 type: CONICAL の場合はtopRadius /bottomRadius より得られます。 |
cylinderCircumferenceTop | float | ターゲットの上辺がなぞる完全な円の外周です。 |
targetCircumferenceTop | float | クロップ適用前のターゲットの上辺に沿っ た長さです。 |
cylinderCircumferenceBottom | float | cylinderCircumferenceTop およびtopRadius /bottomRadius より得られます。 |
cylinderSideLength | float | targetCircumferenceTop と元画像の寸法より得られます。 |
arcAngle | float | cylinderCircumferenceTop およびtargetCircumferenceTop より得られます。 |
inputMode | String | 'BASIC' または'ADVANCED' のいずれかです。 8th Wallコンソールで、スライダーまたは数値入力ボックスのいずれを表示するかを制御します。 |
イメージ・ターゲットの一覧
アプリに属するイメージ・ターゲットの一覧をクエリします。 結果はページ分割されます。つまりアプリに1回のレスポンスで返せる以上のイメージ・ターゲットが含まれている場合、イメージ・ターゲットの全リストを列挙するために、複数のリクエストを実行する必要があります。