プログレッシブメッシュの新しい自動詳細レベル選択 (2/2)

これは、自動詳細レベル (LOD) 選択に関するシリーズの2番目の記事です。シリーズの最初の記事については、パート1を参照してください。

Visualize SDK 21.4 は、OdTvProgressiveMeshData の自動詳細レベル選択をサポートしています。これを有効にするには、次を呼び出します。

virtual OdTvResult setAutoLODSelection( LODAutoSelectType autoSelectType ) = 0;

ここで、autoSelectType は LODAutoSelectType の値のいずれかです。

  • OdTvProgressiveMeshData::kAutoLOD_None は自動 LOD 選択を無効にします。
  • OdTvProgressiveMeshData::kAutoLOD_SqrInterpolation は OdGiProgressiveMesh::kSqrInterpolation LOD 選択を有効にします。
  • OdTvProgressiveMeshData::kAutoLOD_SqrtInterpolation は OdGiProgressiveMesh::kSqrtInterpolation LOD 選択を有効にします。
  • OdTvProgressiveMeshData::kAutoLOD_CustomInterpolation は OdGiProgressiveMesh::kCustom LOD 選択を有効にします。

補間パラメータは、以下のメソッドを使用して指定できます。

virtual OdTvResult setAutoLODSelectMaxInterpolationThreshold( OdUInt32 nMax ) = 0;
virtual OdTvResult setAutoLODSelectMinInterpolationThreshold( OdUInt32 nMin ) = 0;

Visualize SDK カスタム LOD 補間例

OdTvCustomInterpolation クラスは、詳細レベルのカスタム補間を提供するために使用されます。Visualize SDK は詳細レベルの線形補間を提供しないため、これはカスタム実装です。

class LinearInterpolation : public OdTvCustomInterpolation
{
public:
  virtual OdUInt32 interpolate( OdUInt32 minX, OdUInt32 minY, OdUInt32 maxX, OdUInt32 maxY, OdUInt32 x ) const
  {
    //interpolation: Y = A * x + B, where minY = A * minX + B and maxY = A * maxX + B
    double A = ( (double)( maxY - minY ) ) / ( (double)( maxX - minX ) );
    double B = maxY - A * maxX;
    return OdUInt32( A * x + B );
  }
};
…
LinearInterpolation* interp = new LinearInterpolation();
pPM->setAutoLODCustomInterpolation( interp );
pPM->setAutoLODSelection ( OdTvProgressiveMeshData::kAutoLOD_CustomInterpolation );

OdTvProgressiveMeshData オブジェクトのすべてのプロパティは .vsf ファイルに保存されます。ただし、OdTvCustomInterpolation へのポインタは保存できません。そのため、保存中に OdTvProgressiveMeshData は getAutoLODSelectInterpolationThresholds() によって返される間隔内の各値に対して OdTvCustomInterpolation::interpolate() メソッドを呼び出します。ロード後、OdTvProgressiveMeshData オブジェクトは、OdTvCustomInterpolation オブジェクトへの新しいポインタが指定されるまで、このデータを使用してカスタム補間を実行します。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す