3

私の C++ プログラムでは、3ds Max (2011) で作成された 3D スプラインにアクセスする必要があります。これらのスプラインを XML ファイルとしてエクスポートする単純な maxscriptを見つけました。以下に例を示します。

<spline name='Line001' knots='5' closed='true'>
<knot x='-4.67297e-005' y='0.0' z='0.0'>
    <invec x='-0.000144482' y='-600.0' z='-1.52588e-005' />
    <outvec x='5.10227e-005' y='600.0' z='1.52588e-005' />
</knot>
<knot x='6.17511e-005' y='800.0' z='500.0'>
    <invec x='7.92357e-005' y='800.0' z='100.0' />
    <outvec x='4.42666e-005' y='800.0' z='900.0' />
</knot>
<knot x='-66.0574' y='1000.0' z='900.0'>
    <invec x='-66.0574' y='700.0' z='900.0' />
    <outvec x='-66.0573' y='1300.0' z='900.0' />
</knot>
<knot x='323.651' y='1300.0' z='4.57764e-005'>
    <invec x='323.651' y='1600.0' z='200.0' />
    <outvec x='323.651' y='1000.0' z='-200.0' />
</knot>
<knot x='-0.000152032' y='-700.0' z='-200.0'>
    <invec x='-0.00014329' y='-700.0' z='-400.0' />
    <outvec x='-0.000160774' y='-700.0' z='-1.52588e-005' />
</knot>
</spline>

私の質問は、C++ プログラムでこのスプラインにアクセスして評価するための最も簡単な (そして最も軽量な) アプローチは何でしょうか? データの XML を解析する方法は知っていますが、それ以降は現在迷っています。a)この 3D スプラインに沿った点を評価し、b)この点での接線を表すベクトルを計算できる必要があります(可能であれば)。この種のものに利用できるライブラリがあることは理解していますが、特に上記の形式(ノット、それぞれに invec と outvec がある)に関して、どれが最も適切かはわかりません。

4

1 に答える 1

1

3ds Max は既にこれらの曲線を計算しているので、必要な解像度で「焼き付けられた」曲線を XML にエクスポートできます。これはフレームごとに 1 ポイントになると思います。

アプリケーションで曲線を評価したい場合は、外部ライブラリの助けを借りずに、ベジエ曲線 (私が推測している) を計算するのは非常に簡単です。ウィキペディアの De Casteljau のアルゴリズム、特に幾何学的解釈について説明しているセクションを見てください。これは、数式よりもはるかに把握しやすいものです。

于 2011-11-29T07:09:25.313 に答える