2017-05-05 115 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是全局參數或結值。您可以指定多個 值。至少需要兩個參數值。參數 值必須單調遞增。表面類型和程度 指示所需值的數量。

我希望這有助於!