2013-03-19 8 views
0

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

ответ

1

RiCurve рисует кубический сплайн. Контрольные точки не однозначно определяют кривую; вам также нужен , который выражается как матрица 4x4 - одна матрица дает коэффициенты, необходимые для B-сплайна, Bezier, Catmull-Rom и т. д., и, конечно, вы также можете сами поставить матрицу для некоторого гибридного интерполянта, который не является одним из стандартных 3 или 4. Основа определяет характер сплайна - независимо от того, проходит ли кривая через контрольные точки или просто аппроксимирует, степень непрерывности, «напряжение» и т. д.

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

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

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

+0

Большое спасибо, и мне очень жаль, что так поздно. Теперь я решил проблему, и вы мне очень помогли. Пожалуйста, позвольте мне еще раз поблагодарить вас. – mhsj