我的C ++程序需要访问在3ds Max(2011)中构建的3D样条线。将这些样条曲线导出为XML文件的I have found a simple 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)。 / p>
答案 0 :(得分:1)
由于3ds Max已经在计算这些曲线,您可以按照您需要的分辨率将“烘焙”曲线导出到XML,我猜这将是每帧一个点。
如果您更喜欢评估应用程序中的曲线,那么Bézier曲线(我猜这些曲线)在没有外部库的帮助下非常容易计算。看看维基百科上的De Casteljau's algorithm,特别是描述几何解释的部分,这比公式更容易掌握。