Vuforia Studio 3D活用備忘録:3D内のプロパティ(メタデータ)値を利用 その2


はじめに

Vuforia Studioでは、3DCADで作成した3DをARとして表示できるが、さらに、3Dデータ内のプロパティ値(メタデータ)を扱う事ができる。プロパティ値を利用する例を備忘録としておく。

前提

Vuforia Studio バージョン 8.5.13 以降。
この備忘録は、Vuforia Studioで、3DデータをAR表示させ、同時に2D画面上に2Dウィジェットを表示させ、さらにホームJSにJavaScriptコードを追加するARの作成経験がある人が対象。
また、以下の備忘録その1を試し済みの人が対象。
Vuforia Studio 3D活用備忘録:3D内のプロパティ(メタデータ)値を利用 その1

3Dデータについて

本備忘録では、3DCADのSolidWorxsの3Dデータを使った。Vuforia Studioは様々な3DCADデータに対応しているので、他の3DCADデータでも本例と同様の事が出来る。

3D内のプロパティ(メタデータ)値を表示する例

その1では、下図のようにパーツとアセンブリのデータを取得して、一覧表示を試した。

今回は、その1に対して、一覧表示の内容を変更してみる。

名前でフィルタする例

一覧表示された名前を見ると、「M_8」「M_14」などのネジ類が多い。「_M_」を含む名前を除外して、一覧表示にネジが含まれないようにしてみる。

// モデルウィジェット名を指定して、3Dデータのプロパティ(メタデータ)を扱う
PTC.Metadata.fromId(modelName).then( (metadata) => {
  // 「Part Name」に値があるデータを取り出す
  var whereFunc = function(idpath) {
    const name  = metadata.get(idpath, 'Part Name')
    //return name && name.length>0;
    return name && name.length>0 && name.search('_M_')<0;
  }

return の条件に、&& name.search('_M_')<0 を追加して保存し、プレビューする。

ネジは一覧表示されなくなった。出来た!

この備忘録では「_M_」でフィルタしたが、試してみる3Dデータに応じて、他の文字列でのフィルタを試してみるとよい。

構造の深さでフィルタする例

ここまでの例では、構造の深さに関係なくすべてを展開表示している。そこで、構造の深さでフィルタしてみる。構造の深さのデータは、「Part Depth」の値を使えそう。

// モデルウィジェット名を指定して、3Dデータのプロパティ(メタデータ)を扱う
PTC.Metadata.fromId(modelName).then( (metadata) => {
  // 「Part Name」に値があるデータを取り出す
  var whereFunc = function(idpath) {
    const name  = metadata.get(idpath, 'Part Name');
    const depth  = parseInt(metadata.get(idpath, 'Part Depth'));
    //return name && name.length>0;
    return name && name.length>0 && name.search('_M_')<0 && depth<=2;
  }

return の条件に、さらに && depth<=2 を追加して保存し、プレビューする。
構造の深さが1と2だけになった。出来た!

下位構造があるサブアセンブリをフィルタして除外する例

構造を表示するにあたり、下位構造があるサブアセンブリを含めて表示していたが、それをフィルタして除外してみる。
下位構造があるかは、「Child Count」の値を使えそう。

// モデルウィジェット名を指定して、3Dデータのプロパティ(メタデータ)を扱う
PTC.Metadata.fromId(modelName).then( (metadata) => {
  // 「Part Name」に値があるデータを取り出す
  var whereFunc = function(idpath) {
    const name  = metadata.get(idpath, 'Part Name');
    //const depth  = parseInt(metadata.get(idpath, 'Part Depth'));
    const count  = metadata.get(idpath, 'Child Count');
    //return name && name.length>0;
    //return name && name.length>0 && name.search('_M_')<0 && depth<=2;
    return name && name.length>0 && count && count==='0';
  }

return の条件として、&& name.search('_M_')<0 && depth<=2 は除外し、&& count && count==='0' を追加して保存し、プレビューする。
サブアセンブリが表示されなくなった。出来た!

おわりに

3DCADデータには、製造に必要なデータ、保守に必要なデータなどを、プロパティ値(メタデータ)として含める事も多い。そのデータをARでも利用すれば、製造、保守に簡単に活用できる。積極利用すべきだと思う。
本備忘録では、その2として、パーツとアセンブリのデータの一覧表示をフィルタすることを試した。

注意

3DCADデータのアセンブリやパーツ名(構造名)に日本語を使っている場合、jsonファイルでは日本語部分が文字化けするようなので注意。

参考

Vuforia Studio 3D活用備忘録:3D内のプロパティ(メタデータ)値を利用 その1

Vuforia Studio 3D活用備忘録:3D内のプロパティ(メタデータ)値を利用 その3 色などを変更する

エクスペリエンスへの CAD メタデータの組み込み @ Vuforia Studioヘルプ

Incorporate CAD Metadata Into an Experience ( version 8.5.13 and later) @ ptc community

Vuforia Studio - introduction to MetaData Video @ ptc community