我正在开发一个3ds Max插件。在这个插件中,我将几何信息导出到.rib文件中,该文件可以由RenderMan渲染器渲染。当我将nubrs曲线的数据导出到RiBasis和RiCurve描述的.rib文件时。我在RiBasis中使用了RtBsplineBasis,但是我得到的错误结果是渲染曲线比3ds Max渲染器的结果短。然后我重新打印第一个和最后一个控制顶点,曲线足够长,但它的形状有点不同。谁能告诉我如何得到错误的结果或RiBasis是什么意思?如何才能获得正确的RiBasis?非常感谢你!
答案 0 :(得分:1)
RiCurve绘制三次样条。控制点不能唯一地确定曲线;你还需要基础,它表示为4x4矩阵 - 一个矩阵给出了B样条,Bezier,Catmull-Rom等所需的系数,当然你也可以也为某种混合插值提供矩阵,这种插值不是标准的3或4之一。基础决定了样条的特征 - 曲线是保证通过控制点还是仅仅是近似,连续性程度,“紧张”等等。
在“RenderMan Companion”的附录中有一个很好的讨论,包括不同基矩阵如何影响插值的数字例子。
听起来你要求一个B样条基,它在第一和第二导数中近似(非插值)和连续。也许这不是你的想法。很难说,因为您没有描述您希望的样条曲线的属性。
另外,使用非理性立方近似任意NURBS曲线并不总能给出完全匹配。要记住的其他事情。