Оценка трехмерных сплайнов, экспортируемых с MAX в программе C ++

StackOverflow https://stackoverflow.com/questions/8307015

  •  25-10-2019
  •  | 
  •  

Вопрос

Моя программа C ++ требует доступа к 3D сплайнам, которые были построены в 3DS Max (2011). Я нашел простой максиптри что экспортирует эти сплайны в виде файлов 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 для данных, но с тех пор я в настоящее время потерян. Мне нужно быть в состоянии а) оценить точку вдоль этого 3D -сплайна и б) Рассчитайте вектор, описывающий касательную на этой точке (если возможно). Я понимаю, что есть библиотеки, доступные для такого рода вещей, но я не уверен, что наиболее подходит, особенно с точки зрения формата, описанного выше (узлы, каждый с Invec и OutVec).

Это было полезно?

Решение

Поскольку 3DS Max уже вычисляет эти кривые, вы можете экспортировать «запеченные» кривые в XML при разрешении, в которой они вам нужны, что, я полагаю, будет одной точкой на кадр.

Если вы предпочитаете оценивать кривые в вашем приложении, то кривые Bézier (которые, я полагаю, они есть) довольно легко вычислить без помощи внешней библиотеки. Взглянуть на Алгоритм де Кастельжау В Википедии, в частности, раздел, который описывает геометрическую интерпретацию, которую гораздо легче понять, чем формулы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top