在c++程序中评估从max导出的3d样条曲线
Evaluating 3d splines exported from max in a C++ program
我的c++程序需要访问在3ds Max(2011)中构建的3D样条。我发现了一个简单的maxscript,可以将这些样条曲线导出为XML文件—示例如下:
<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)。
因为3ds Max已经在计算这些曲线了,你可以将"烘烤"曲线导出为XML格式,你需要它们的分辨率,我猜将是每帧一个点。
如果您更喜欢评估应用程序中的曲线,那么bsamzier曲线(我猜这些是)非常容易计算,而无需外部库的帮助。看看维基百科上的De Casteljau算法,特别是描述几何解释的部分,这比公式更容易掌握。
相关文章:
- 使用 GSL 库制作样条曲线并使用它们进行集成
- 扩充矩阵的行缩减-三维样条曲线计算
- 向心Catmull-Rom样条曲线插值alpha参数
- C++ 来自 ALGLIB 的样条示例未在 MacOS 上编译
- 在QGraphicsView上实现交互式样条曲线的最佳方法是什么?
- C 特征:样条衍生物()给出奇怪的衍生物
- 薄板样条形状转换运行时错误 [使用代码 -1073741819 退出]
- 任意数量控制点的B样条曲线
- 特征样条插值 - 如何在任意点 x 处获取样条曲线 y 值
- 生成Catmull-Rom样条曲线并返回垃圾
- 在二维中计算具有3个给定点的精确样条曲线.C++
- 字体轮廓贝齐尔样条轮廓和直接写入
- C++ 中的插值样条曲线
- 对 3D 空间中的样条插值感到困惑
- b样条曲线
- 三次样条:开始/结束段插值
- 在c++程序中评估从max导出的3d样条曲线
- 结点(b样条)到底是什么
- 点数组的C++样条曲线插值
- 应该重新绘制B样条曲线,而不删除窗口的所有其余部分