Что означает RiBasis, который описан в RenderMan?

Я работаю над плагином 3ds Max. В этом плагине я экспортирую информацию о геометрии в файл.rib, который может быть визуализирован рендерером RenderMan. Когда я экспортирую данные кривой Nubrs в файл.rib, описанный RiBasis и RiCurve. Я использую RtBsplineBasis в RiBasis, но я получаю неправильный результат, что визуализированная кривая короче, чем результат рендерера 3ds Max. Затем я перепечатываю первую и последнюю контрольную вершину, кривая достаточно длинная, но ее форма немного отличается. Кто подскажет, как я получаю неправильный результат или что означает RiBasis? Как правильно получить RiBasis? Большое спасибо!

1 ответ

RiCurve рисует кубический сплайн. Контрольные точки не однозначно определяют кривую; вам также нужен базис, который выражается в виде матрицы 4x4 - одна матрица дает коэффициенты, необходимые для B-сплайна, Безье, Катмулла-Рома и т. д., и, конечно, вы также можете сами поставить матрицу для некоторых тип гибридного интерполанта, который не совсем один из стандартных 3 или 4. Базис определяет характер сплайна - гарантированно ли кривая пройдет через контрольные точки или является просто аппроксимирующей, степень непрерывности, " напряжение "и так далее.

В одном из приложений "Компаньона RenderMan" идет большая дискуссия, в том числе числовые примеры того, как различные базовые матрицы влияют на интерполяцию.

Похоже, вы запросили базис B-сплайна, который является аппроксимирующим (не интерполирующим) и непрерывным в 1-й и 2-й производных. Может быть, это не то, что вы имели в виду. Трудно сказать, так как вы не описали свойства сплайна, на которые надеялись.

Кроме того, приближение произвольной кривой NURBS с нерациональной кубикой не всегда даст вам точное совпадение. Что-то еще, чтобы иметь в виду.

Другие вопросы по тегам