2017-05-05 90 views
0

我想写一个包含3D曲线(不是曲面)的wavefront .OBJ file。我发现以下链接描述了如何在.OBJ文件中正确格式化曲线和曲面:http://www.martinreddy.net/gfx/3d/OBJ.spec如何正确格式化波形.OBJ文件格式的NURBS曲线?

有理有理的b样条曲线没有例子,并且从文档中我不清楚结矢量是如何格式在parm u部分。任何帮助,将不胜感激。

相关代码示例如下。在上面的链接,有一个有理B样条曲面的描述:用于Bezier曲线

v -1.3 -1.0 0.0 
v 0.1 -1.0 0.4 7.6 
v 1.4 -1.0 0.0 2.3 
v -1.4 0.0 0.2 
v 0.1 0.0 0.9 0.5 
v 1.3 0.0 0.4 1.5 
v -1.4 1.0 0.0 2.3 
v 0.1 1.0 0.3 6.1 
v 1.1 1.0 0.0 3.3 
vt 0.0 0.0 
vt 0.5 0.0 
vt 1.0 0.0 
vt 0.0 0.5 
vt 0.5 0.5 
vt 1.0 0.5 
vt 0.0 1.0 
vt 0.5 1.0 
vt 1.0 1.0 
cstype rat bspline 
deg 2 2 
surf 0.0 1.0 0.0 1.0 1/1 2/2 3/3 4/4 5/5 6/6 \ 
7/7 8/8 9/9 
parm u 0.0 0.0 0.0 1.0 1.0 1.0 
parm v 0.0 0.0 0.0 1.0 1.0 1.0 
end 

和另一个例子:

v -2.300000 1.950000 0.000000 
v -2.200000 0.790000 0.000000 
v -2.340000 -1.510000 0.000000 
v -1.530000 -1.490000 0.000000 
v -0.720000 -1.470000 0.000000 
v -0.780000 0.230000 0.000000 
v 0.070000 0.250000 0.000000 
v 0.920000 0.270000 0.000000 
v 0.800000 -1.610000 0.000000 
v 1.620000 -1.590000 0.000000 
v 2.440000 -1.570000 0.000000 
v 2.690000 0.670000 0.000000 
v 2.900000 1.980000 0.000000 
# 13 vertices 

cstype bezier 
ctech cparm 1.000000 
deg 3 
curv 0.000000 4.000000 1 2 3 4 5 6 7 8 9 10 \ 
11 12 13 
parm u 0.000000 1.000000 2.000000 3.000000 \ 
4.000000 
end 
# 1 element 

回答

0

有存储一个NURBS的信息的多种方式波前.obj文件中的曲线。

下面是一个例子:

v -2.300000 1.950000 1.000000 1.000000 
v -2.200000 0.790000 2.000000 1.000000 
v -2.340000 -1.510000 0.000000 1.000000 
v -1.530000 -1.490000 0.000000 1.000000 
v -0.720000 -1.470000 0.000000 1.000000 
v -0.780000 0.230000 0.000000 1.000000 

cstype rat bspline 
deg 2 
curv 0.00 1.00 1 2 3 4 5 6 
parm u 0.00 0.00 0.00 0.25 0.50 0.75 1.00 1.00 1.00 
end 

现在让我们仔细看看。我们有笛卡尔坐标中的6个顶点,并附加重量坐标(x,y,z,w)。到具有一定程度的2我们必须设置

cstype rat bspline 
deg 2 

下一值限定CURV限定有理B样条(NURBS)。语法是:

curv [u-start] [u-end] [first-cp] [second-cp] [...] 

http://www.martinreddy.net/gfx/3d/OBJ.spec,行788:

CURV U0 U1 V1 V2。 。 。

自由形式几何的元素声明。

指定曲线,其参数范围及其控制顶点。 虽然曲线不能着色或渲染,但其他 高级可视化程序将使用这些曲线。

u0是曲线的起始参数值。这是一个浮点数 。

u1是曲线的结束参数值。这是一个浮点数 。

v是控制点的顶点参考号。您可以指定 多个控制点。对于曲线,最少需要两个控制点 。

对于非有理曲线,控制点必须是3D。对于 有理曲线,控制点是3D或4D。如果省略,第四个坐标 (权重)默认为1.0。

现在我们定义u矢量/序列。这些值当然取决于您的几何形状。

parm u [knot1] [knot2] [...] 

http://www.martinreddy.net/gfx/3d/OBJ.spec,线路1107:

PARMüP1 P2 P3。 。 。

parm v p1 p2 p3。 。 。

自由形式几何体表述。

指定全局参数值。对于B样条曲线和曲面, 这指定了结矢量。

u是参数值的u方向。

v是参数值的v方向。

要设置u和v值,请使用单独的命令行。

p是全局参数或结值。您可以指定多个 值。至少需要两个参数值。参数 值必须单调递增。表面类型和程度 指示所需值的数量。

我希望这有助于!