サードパーティツールで3Dアセットを準備する

サポートされている形式

サードパーティツールで作成した3Dアセットを Kanzi Studio に持ち込みたい場合、アセットをインポートまたはマージする必要があります。以下の形式で3Dアセットをインポートまたはマージできます。

  • メッシュ、アニメーション、スキン、モーフのためのglTF 2.0 (gltf, glb)

  • メッシュ、アニメーション、スキン、およびモーフ用のCOLLADA (dae)

  • メッシュ、アニメーション、スキン、モーフ、スプライン用のFilmbox (fbx)

  • メッシュのジオメトリ定義 (obj)

サードパーティツールの異なるエクスポーターは、コンテンツを異なる方法で処理します。例えば、fbx形式を使用して期待される結果が得られない場合は、dae形式を試してみてください。

3Dアセットの準備

Kanzi Studio プロジェクトのために3Dアセットを準備する際には、次の点に注意してください。

  • 可能な限りマテリアルの切り替えを少なくするようにしてください。これを達成するには、同じマテリアルを使用するメッシュを統合し、メッシュに対して1つのマテリアルのみを使用します。これにより、メッシュとマテリアルの管理、およびレンダリングパフォーマンスが向上します。シェーダースイッチの削減 を参照してください。

  • シェーダーで使用されていないメッシュから頂点属性を削除します。頂点サイズが小さいほど、頂点データへのアクセスが効率的になり、メモリ消費が少なくなります。ほとんどの3Dモデリングソフトウェアでは、エクスポート時に不要な頂点属性を削除できます。エクスポート設定には、通常、法線や頂点カラーなど、エクスポートされる頂点属性のリストが含まれています。例えば、テクスチャ付きのマテリアルを使用せずにメッシュをレンダリングする場合、テクスチャ座標の頂点属性は不要であり、削除することができます。

  • 3Dアセットをfbxファイルからインポートすると、Kanzi Studio は自動的にディフューズスロットに割り当てたすべてのテクスチャをコピーし、各テクスチャを Single Texture に変換します。

  • 単一のオブジェクトは中心に配置し、ピボットの位置を適切に選ぶのがベストプラクティスです。例えば、椅子の場合、ピボットを椅子が地面に接する点に設定します。

    ピボットの配置が悪いと問題になります。なぜなら、Kanzi にオブジェクトを持ってきて、階層に追加したりアニメーションを付けたりすると、そのオブジェクトが期待通りに動作しない可能性が非常に高いからです。さらに、ピボットがインポートされたオブジェクトから遠く離れていると、オブジェクトの頂点バッファの精度が低すぎます。Kanzi Studio では、この問題を抱えたオブジェクトは低解像度のように見えます。

  • サードパーティの3Dモデリングソフトウェアとは異なり、Kanzi はマテリアルにOpenGLシェーダーを使用します。そのため、3Dアセットをインポートする際、Kanzi Studio は拡散、環境光、テクスチャなどの基本的なマテリアルパラメータのみをインポートします。また、Kanzi Studio はシェーディングモデルをインポートしません。

    マテリアルを割り当てない場合、Kanzi Studio はプロジェクトでデフォルトのマテリアルとして設定したものを割り当てます。デフォルトのマテリアルを割り当てた場合でも、インポートされた3Dコンテンツのマテリアル値が無効である場合、Kanzi Studio は明るい緑色のデバッグマテリアルを使用します。この問題を修正するには、3Dアセットをインポートした後に Kanzi Studio でマテリアルを割り当ててください。マテリアルを使用する (Using materials) を参照してください。

  • インポート時、Kanzi Studio はBlinn-Phongライティングモデルのみをサポートします。3Dモデリングツールで3Dアセットをエクスポートする前に、Blinn-Phongマテリアル(光沢値が1より大きい)を選択してください。

  • Kanzi Studio は、サポートするライトのみをインポートします。これには、シンプルなポイントライト、ディレクショナルライト、スポットライトが含まれます。スカイライト、物理ライト、エリアライト、Vrayライトの代わりに、Kanzi Studio はそれぞれに対して Empty Node 3D を作成します。

  • 可動式の透明な部品、例えば可動式のドアと透明な窓を持つ車を作成する場合、それらを別々のオブジェクトとして作成してください。Kanzi でこれを行うには、ソーティングフィルタを使用するか、窓を正しくレンダリングするために別のレンダーパスを作成する必要があります。Sorting Filter を使用する を参照してください。

  • 2つの可動部分が接近しているときに(例えば、車のドアが閉まっているとき)、目に見えないシームを作りたい場合は、サードパーティツールで法線を編集し、シームの法線を同じ方向に向けて結合します。これにより、シーム上の反射が滑らかに見えます。

  • あなたの3Dモデリングツールで使用される座標系の向きは、Kanzi Studio で使用されるものと異なる場合があり、これにより Kanzi Studio にインポートする際にアセットの向きが変わることがあります。アセットの向きを変更するには、モデリングツール内で行うか、Kanzi Studio で行うことができます。Kanzi Studio で3Dアセットの向きを変更するには:

    1. Library > Resource Files > 3D Assets でモデルを選択します。

      ../../_images/select-3d-asset-model.png
    2. Properties で、Import Axis Transform プロパティを座標系の向きの違いを表す値に設定します。

      ../../_images/import-axis-transform.png
    3. Library > Resource Files > 3D Assets でモデルを右クリックし、Clean Import 3D Asset File を選択します。Clean Import 3D Asset File は、Kanzi Studio で以前にインポートした3Dアセットとその3Dアセットに対して行ったすべての変更を最初に削除し、選択した3Dアセットをインポートします。

      ../../_images/clean-import-3d-asset-file.png
  • Kanzi Studio で非常にシンプルなアニメーションを作成するのは、Kanzi のアニメーションツールとステートマネージャー内のトランジションを使用する方が、サードパーティツールからインポートするよりも簡単です。例えば、階層を含む複雑なアニメーションを作成する場合は、サードパーティツールで作成し、Kanzi Studio にインポートしてください。

  • アニメーションコントローラーやコントローラースタックに複雑なコンテンツがある場合は、サードパーティツールでアニメーションをすでにベイクするか、エクスポートする前に行ってください。ピボットを中心に配置し、エンプティアニメーションコントローラーを設定して(Freeze Transformツールでアニメーションをゼロにする)、アニメーションを0から開始することで、データをクリーンに保つことができます。

  • スキニングを処理するシェーダーは、ボーンの数と単一の頂点に影響を与えることができるボーンの量を設定します。

    Kanzi Studio プロジェクトでスキンメッシュが意図した通りに動作しない場合は、

    • Log ウィンドウに表示されるメッセージをガイドラインとして使用し、サードパーティツールでメッシュを変更し、メッシュを再インポートしてください。

    • スキンを適用したいメッシュが複雑な場合は、簡略化を試みてください。

    • 頂点をボーンにマッピングする前に、コンテンツツールでボーンが反転行列を持っていないことを確認してください。反転行列は、オブジェクトをある軸で反転またはミラーリングするツールによって引き起こされることがよくあります。メッシュ内のボーンが反転行列を持っている場合、それらを削除し、頂点をボーンに再マッピングしてください。

  • 3Dアセットを Kanzi Studio にインポートした後にメッシュ、ポリゴン、法線、またはテクスチャ座標が反転している場合は、サードパーティツールでこれらの問題を修正するのがベストプラクティスです。しかし、サードパーティツールで問題を見つけられない、または修正できない場合は、Kanzi Studio でこれらの問題の一部を修正することができます。Kanzi Studio でメッシュ、ポリゴン、法線、またはテクスチャ座標を反転させるには、Library > Resource Files > 3D Assets でインポートした3Dモデルを右クリックし、Flip を選択して反転させたいコンテンツのタイプを選びます。

  • 複雑な階層を使用する場合、サードパーティツールでスクリプトを作成し、すべてのノードの親プロパティを保存してから、それらを切り離します。例えば、3ds MaxでReset X-Formツールをすべてに使用し、その後リンクを戻して保存し、回転を再適用します。

  • 非常に小さな量で全ての頂点をウェルドして、シェーディングエラーや余分な頂点を引き起こす未ウェルドの頂点がないことを確認してください。

  • デッド頂点を削除します。長方形選択を使用して1つの頂点を選択し、選択が頂点の数ではなく頂点の数を示していることを確認することで、重複したメッシュを見つけることができます。もし2つ以上の頂点が選択されていて、それらが同じ場所にあるように見える場合、重なっているメッシュがある可能性が高いです。3ds Maxでは、場合によってはWeld Selectedがそれを修正しないことがあります。なぜなら、エディタブルポリメッシュタイプクラスオブジェクトを使用している場合、オブジェクト自体がトポロジーに関するより多くのルールを持っており、頂点のマージが特定のケースに適用されないためです。

  • スケールに関する問題を避けるために、使用しているサードパーティツールで3Dコンテンツをエクスポートする前に、単位とスケールを正しく設定してください。

    Kanzi Studio にインポートした後、3Dアセットのスケールを調整できます。インポートされた3Dアセットのスケールを調整する を参照してください。

  • 3Dアセットを Kanzi Studio にインポートした後、アセットが正しく見えない場合:

    • アセットを Kanzi Studio がサポートする別の形式にエクスポートします。例えば、fbxファイルにエクスポートしてアセットが正しく表示されない場合は、代わりにdaeファイルにエクスポートしてください。インポートしています を参照してください。

    • エクスポートしたアセットを元のサードパーティツールにインポートします。アセットをfbxファイルにエクスポートした場合、コンテンツが正しく表示されているか確認するために、Autodesk fbxレビュー ツールを使用することもできます。

      サードパーティツールでアセットが正しく見えない場合は、エクスポーターの設定を変更してください。例えば、バイナリまたはASCII fbxとしてエクスポートします。しかし、エクスポーターの設定を変更しても問題が解決せず、サードパーティツールでアセットが正しく見える場合は、Rightware サポートに連絡してください。テクニカルサポート を参照してください。

3ds Maxで3Dアセットを準備する

3ds Maxで Kanzi Studio プロジェクトの3Dアセットを準備する際には、次の点に注意してください。

  • ディスプレイユニットスケールをジェネリックユニット以外の値に設定する場合、Kanzi Studio と 3ds Max のユニットスケールの違いを避けるために、3ds Max の Units Setup > System Unit Setup でシステムユニットスケールをディスプレイユニットスケールに合わせて設定してください。

  • アラインアップベクトルを設定すると、3DモデルをY軸アップまたはZ軸アップでエクスポートでき、Kanzi Studio が回転を修正します。

  • インポート中に、Kanzi はピボットをベイクして、モデルの原点にします。

  • 階層を持つ場合は、オフセットや非一様スケーリングの使用を避けてください。3ds Maxでは、オブジェクトが非一様スケールを持っていても、オブジェクトを階層にリンクすることができます。これにより、オブジェクトを追加した段階に関係なく、階層に同じ効果を持たせることができます。その情報はプロセスの中で失われ、リセットを通じて再構築することはできません。非一様スケールを使用する必要がある場合は、メッシュレベルでのみ行ってください。

  • UVを扱う際に:

    • UVスプリットとスムージンググループは二重頂点を作成します。ハードエッジを持つことが常にベストプラクティスではありませんが、UVスプリットがある場合、同じ場所でスムージンググループのハードエッジを使用しても追加のペナルティはありません。

    • 3Dメッシュを平坦な2D空間に展開し、その3Dメッシュにテクスチャを投影して、フローがメッシュの始まりから終わりまで流れるようにします。

    • ポリゴンの面をUV編集ウィンドウ上で平らに配置し、最適な結果を得るためにそのサイズを合わせてください。

    • UVレイアウトで頂点の位置を一致させるには、一致するポリゴンの頂点を水平および垂直に整列させます。

    • UVレイアウトスペースを最大化するために、ポリゴンをスケーリングしてUVレイアウトを埋めてください。

      UVレイアウトでオブジェクト全体のスペースが必要ない場合は、その空きスペースを他の用途に使用することができます。この方法で、同じテクスチャを複数のオブジェクトに使用することができます。

    UVを持つ3Dモデルの使用 を参照してください。

  • トポロジーとエッジの向き。3ds Maxで使用されるデフォルトの向きが正しくない場合、低ポリゴンモデルのシェーディングを改善するために、Edit polygons > Turnを使用してください。

  • 逆行列を避けるために、オブジェクトに対して逆スケールやミラーツールの使用を避けてください。ミラーツールはオフラインレンダリングには正しいコンテンツを作成しますが、リアルタイムレンダリングには無効な行列を生成します。逆行列を修正してみてください。

    1. オブジェクトを階層から削除し、Reset X-Form ツールを使用してください。

    2. 最近の向きを再適用します。

    3. オブジェクトを階層に戻します。

  • エクスポートする前に、不要なスケーリングや反転した面がないことを確認するために、Reset X-Forms ツールを使用してください。3ds Max の階層(スキーマティックビュー)でオブジェクトを持っている場合、親オブジェクトで Reset X-Forms ツールを使用すると、子オブジェクトも回転してしまい、3ds Max では元に戻せません。これを避けるためには、階層を作成する前に Reset X-Forms ツールを使用するか、リセットする際に一時的に階層を解除してください。これを解決するには MAXScript を使用することができますが、max のデフォルトではこのようになります。

  • 3ds Maxからアニメーションを取り込むには、fbxファイル形式を使用してください。Colladaを使用する必要がある場合は、Advanced Optionsで次のように設定します。

    • 軸変換 アップ軸をYアップに

    • コラーダシングルマトリックスを有効にする

    ../../_images/3ds-max-animation-export.png

Mayaで3Dアセットを準備する

Mayaで Kanzi Studio プロジェクトの3Dアセットを準備する際には、次の点に注意してください。

  • ビューポートのアスペクト比、カメラのアスペクト比、および解像度のわずかな違いでも、レイアウトに奇妙な影響を与える可能性があります。

  • カメラのFOVは現在、.fbxから Kanzi に反映されません。インポート中に Kanzi はFOV値40を割り当てます。これを修正するには、Mayaカメラから Kanzi Camera ノードにFOV値をコピーしてください。

関連項目

ベストプラクティス

3Dアセットのインポート

3Dアセットのマージ

インポートしています

UVを持つ3Dモデルの使用