• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天行健 君子當(dāng)自強(qiáng)而不息

            【ZT】3D中的OBJ文件格式詳解

            OBJ文件是Alias|Wavefront公司為它的一套基于工作站的3D建模和動(dòng)畫(huà)軟件"Advanced Visualizer"開(kāi)發(fā)的一種標(biāo)準(zhǔn)3D模型文件格式,很適合用于3D軟件模型之間的互導(dǎo),也可以通過(guò)Maya讀寫(xiě)。比如你在3dsMax或LightWave中建了一個(gè)模型,想把它調(diào)到Maya里面渲染或動(dòng)畫(huà),導(dǎo)出OBJ文件就是一種很好的選擇。目前幾乎所有知名的3D軟件都支持OBJ文件的讀寫(xiě),不過(guò)其中很多需要通過(guò)插件才能實(shí)現(xiàn)。

            OBJ文件是一種文本文件,可以直接用寫(xiě)字板打開(kāi)進(jìn)行查看和編輯修改。另外,有一種與此相關(guān)二進(jìn)制文件格式(*.MOD),其作為專利未公開(kāi),因此這里不作討論。

            1、OBJ文件的特點(diǎn)

            OBJ3.0文件格式支持直線(Line)、多邊形(Polygon)、表面(Surface)和自由形態(tài)曲線(Free-form Curve)。直線和多角形通過(guò)它們的點(diǎn)來(lái)描述,曲線和表面則根據(jù)它們的控制點(diǎn)和依附于曲線類型的額外信息來(lái)定義,這些信息支持規(guī)則和不規(guī)則的曲線,包括那些基于貝塞爾曲線(Bezier)、B樣條(B-spline)、基數(shù)(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲線。其他特點(diǎn)如下:

            (1)OBJ文件是一種3D模型文件。不包含動(dòng)畫(huà)、材質(zhì)特性、貼圖路徑、動(dòng)力學(xué)、粒子等信息。

            (2)OBJ文件主要支持多邊形(Polygons)模型。雖然也支持曲線(Curves)、表面(Surfaces)、點(diǎn)組材質(zhì)(Point Group Materials),但Maya導(dǎo)出的OBJ文件并不包括這些信息。

            (3)OBJ文件支持三個(gè)點(diǎn)以上的面,這一點(diǎn)很有用。很多其它的模型文件格式只支持三個(gè)點(diǎn)的面,所以導(dǎo)入Maya的模型經(jīng)常被三角化了,這對(duì)于我們對(duì)模型進(jìn)行再加工甚為不利。

            (4)OBJ文件支持法線和貼圖坐標(biāo)。在其它軟件中調(diào)整好貼圖后,貼圖坐標(biāo)信息可以存入OBJ文件中,這樣文件導(dǎo)入Maya后只需指定一下貼圖文件路徑就行了,不需要再調(diào)整貼圖坐標(biāo)。
             

            2、OBJ文件的基本結(jié)構(gòu)

            OBJ文件不需要任何種文件頭(File Header),盡管經(jīng)常使用幾行文件信息的注釋作為文件的開(kāi)頭。OBJ文件由一行行文本組成,注釋行以符號(hào)“#”為開(kāi)頭,空格和空行可以隨意加到文件中以增加文件的可讀性。有字的行都由一兩個(gè)標(biāo)記字母也就是關(guān)鍵字(Keyword)開(kāi)頭,關(guān)鍵字可以說(shuō)明這一行是什么樣的數(shù)據(jù)。多行可以邏輯地連接在一起表示一行,方法是在每一行最后添加一個(gè)連接符(\)。 注意連接符(\)后面不能出現(xiàn)空格或Tab格,否則將導(dǎo)致文件出錯(cuò)。

            下列關(guān)鍵字可以在OBJ文件使用。在這個(gè)列表中, 關(guān)鍵字根據(jù)數(shù)據(jù)類型排列,每個(gè)關(guān)鍵字有一段簡(jiǎn)短描述。

            頂點(diǎn)數(shù)據(jù)(Vertex data):
              v 幾何體頂點(diǎn)(Geometric vertices)
            vt 貼圖坐標(biāo)點(diǎn)(Texture vertices)
            vn 頂點(diǎn)法線(Vertex normals)
            vp 參數(shù)空格頂點(diǎn) (Parameter space vertices)

            自由形態(tài)曲線(Free-form curve)/表面屬性(surface attributes):
              deg 度(Degree)
            bmat 基礎(chǔ)矩陣(Basis matrix)
            step 步尺寸(Step size)
            cstype 曲線或表面類型 (Curve or surface type)

            元素(Elements):
              p 點(diǎn)(Point)
            l 線(Line)
            f 面(Face)
            curv 曲線(Curve)
            curv2 2D曲線(2D curve)
            surf 表面(Surface)

            自由形態(tài)曲線(Free-form curve)/表面主體陳述(surface body statements):
                  parm 參數(shù)值(Parameter values )
            trim 外部修剪循環(huán)(Outer trimming loop)
            hole 內(nèi)部整修循環(huán)(Inner trimming loop)
            scrv 特殊曲線(Special curve)
            sp 特殊的點(diǎn)(Special point)
            end 結(jié)束陳述(End statement)

            自由形態(tài)表面之間的連接(Connectivity between free-form surfaces):
                 
            con 連接 (Connect)

            成組(Grouping):
                  g 組名稱(Group name)
                  s 光滑組(Smoothing group)
                  mg 合并組(Merging group)
                 o 對(duì)象名稱(Object name)

            顯示(Display)/渲染屬性(render attributes):
              bevel 導(dǎo)角插值(Bevel interpolation)
            c_interp 顏色插值(Color interpolation)
            d_interp 溶解插值(Dissolve interpolation)
            lod 細(xì)節(jié)層次(Level of detail)
            usemtl 材質(zhì)名稱(Material name)
            mtllib 材質(zhì)庫(kù)(Material library)
            shadow_obj 投射陰影(Shadow casting)
            trace_obj 光線跟蹤(Ray tracing)
            ctech 曲線近似技術(shù)(Curve approximation technique)
            stech 表面近似技術(shù) (Surface approximation technique)

             

            3、OBJ文件實(shí)例

            的確挺難理解,下面通過(guò)實(shí)例來(lái)具體講解。讓我們來(lái)創(chuàng)建一個(gè)OBJ文件,內(nèi)容為一個(gè)四邊形,不過(guò)這一回我們不用3D軟件,而是用寫(xiě)字板來(lái)創(chuàng)建。打開(kāi)寫(xiě)字板,把下面的5行代碼寫(xiě)入,可以適當(dāng)加一點(diǎn)注釋。保存文件為文本格式,文件名為"myObj.obj"。

            v -0.58 0.84 0
            v 2.68 1.17 0
            v 2.84 -2.03 0
            v -1.92 -2.89 0
            f 1 2 3 4

            注意:代碼最后一定要按一下回車把光標(biāo)切換到下一行,就是說(shuō)加一個(gè)換行符(\n)。否則會(huì)看到如下錯(cuò)誤信息:
            // Error: line 1: OBJ file line 5: index out of range. //
            // Error: line 1: Error reading file. //

            在Maya中導(dǎo)入"myObj.obj"文件,看見(jiàn)了吧,導(dǎo)入了一個(gè)四邊形。這個(gè)四邊形的形狀是完全由前面的那5行代碼決定的。

            我們來(lái)分析一下這些代碼。v -0.58 0.84 0

            畫(huà)一個(gè)四邊形需要四個(gè)頂點(diǎn),這是第一個(gè)頂點(diǎn),"v"表示頂點(diǎn)(vertex),"-0.58"為這個(gè)頂點(diǎn)的X軸坐標(biāo)值,"0.84"為Y軸坐標(biāo)值,"0"為Z軸坐標(biāo)值。它的索引號(hào)是1。索引號(hào)是畫(huà)面時(shí)要用到的。
            v 2.68 1.17 0
            v 2.84 -2.03 0
            v -1.92 -2.89 0
            這分別是第二、三、四個(gè)頂點(diǎn),它們的索引號(hào)分別是2,3,4。

            f 1 2 3 4
            現(xiàn)在開(kāi)始畫(huà)面,"f"表示面(face),1,2,3,4是前面那四個(gè)頂點(diǎn)的索引號(hào)。請(qǐng)注意畫(huà)這個(gè)面連接點(diǎn)的順序,是從第一個(gè)點(diǎn)出發(fā),依次連接第二、三、四個(gè)點(diǎn)。

            如果連接的順序不同所生成的面也會(huì)截然不同,例如"f 1 2 4 3"會(huì)產(chǎn)生一個(gè)交迭的面,如上圖。

            面的連接點(diǎn)是按順時(shí)針排列或逆時(shí)針排列,將決定面的法線方向(面的反正)。例如:"f 1 2 3 4"面的法線向外,"f 4 3 2 1"面的法線向里。 面的連接點(diǎn)順序錯(cuò)誤,是導(dǎo)致導(dǎo)入模型產(chǎn)生碎面的一個(gè)重要原因。
            一個(gè)面不能出現(xiàn)兩個(gè)以上相同的頂點(diǎn),這也是檢查OBJ文件出錯(cuò)的一個(gè)要點(diǎn)。例如:"f 1 2 3 4 3",有兩個(gè)相同的頂點(diǎn),索引號(hào)是3。一個(gè)面出現(xiàn)兩個(gè)相同頂點(diǎn),可能造成程序的內(nèi)存分配錯(cuò)誤。


            下面來(lái)研究一下Maya導(dǎo)出的OBJ文件。

            在Maya中創(chuàng)建一個(gè)多邊形立方體,選中這個(gè)立方體,選擇菜單"File -> Export Selection..."導(dǎo)出格式為OBJ,文件名為"cube.obj",如果沒(méi)有此格式,請(qǐng)?jiān)赑lug-in Manager中載入"objExport.mll"。 用寫(xiě)字板打開(kāi)"cube.obj",可以看到如下代碼:

            # The units used in this file are centimeters.
            g default
            v -0.500000 -0.500000 0.500000
            v 0.500000 -0.500000 0.500000
            v -0.500000 0.500000 0.500000
            v 0.500000 0.500000 0.500000
            v -0.500000 0.500000 -0.500000
            v 0.500000 0.500000 -0.500000
            v -0.500000 -0.500000 -0.500000
            v 0.500000 -0.500000 -0.500000
            vt 0.000000 0.000000
            vt 1.000000 0.000000
            vt 0.000000 1.000000
            vt 1.000000 1.000000
            vt 0.000000 2.000000
            vt 1.000000 2.000000
            vt 0.000000 3.000000
            vt 1.000000 3.000000
            vt 0.000000 4.000000
            vt 1.000000 4.000000
            vt 2.000000 0.000000
            vt 2.000000 1.000000
            vt -1.000000 0.000000
            vt -1.000000 1.000000
            vn 0.000000 0.000000 1.000000
            vn 0.000000 0.000000 1.000000
            vn 0.000000 0.000000 1.000000
            vn 0.000000 0.000000 1.000000
            vn 0.000000 1.000000 0.000000
            vn 0.000000 1.000000 0.000000
            vn 0.000000 1.000000 0.000000
            vn 0.000000 1.000000 0.000000
            vn 0.000000 0.000000 -1.000000
            vn 0.000000 0.000000 -1.000000
            vn 0.000000 0.000000 -1.000000
            vn 0.000000 0.000000 -1.000000
            vn 0.000000 -1.000000 0.000000
            vn 0.000000 -1.000000 0.000000
            vn 0.000000 -1.000000 0.000000
            vn 0.000000 -1.000000 0.000000
            vn 1.000000 0.000000 0.000000
            vn 1.000000 0.000000 0.000000
            vn 1.000000 0.000000 0.000000
            vn 1.000000 0.000000 0.000000
            vn -1.000000 0.000000 0.000000
            vn -1.000000 0.000000 0.000000
            vn -1.000000 0.000000 0.000000
            vn -1.000000 0.000000 0.000000
            s off
            g pCube1
            usemtl initialShadingGroup
            f 1/1/1 2/2/2 4/4/3 3/3/4
            f 3/3/5 4/4/6 6/6/7 5/5/8
            f 5/5/9 6/6/10 8/8/11 7/7/12
            f 7/7/13 8/8/14 2/10/15 1/9/16
            f 2/2/17 8/11/18 6/12/19 4/4/20
            f 7/13/21 1/1/22 3/3/23 5/14/24
            這個(gè)文件看起來(lái)稍復(fù)雜一些,用到了許多關(guān)鍵詞,你可以對(duì)照前面的列表查看一下每個(gè)關(guān)鍵詞的意思。我來(lái)解釋一下:
            "vt 1.000000 0.000000"這句"vt"代表點(diǎn)的貼圖坐標(biāo)。
            "vn 0.000000 0.000000 -1.000000"這句"vn"代表點(diǎn)的法線。
            "s off"表示關(guān)閉光滑組。
            "usemtl initialShadingGroup"表示使用的材質(zhì)。
            "f 7/13/21"這時(shí)在面的數(shù)據(jù)中多了貼圖坐標(biāo)uv點(diǎn)和法線的索引號(hào),索引號(hào)分別用左斜線(/)隔開(kāi)。
            格式:"f 頂點(diǎn)索引/uv點(diǎn)索引/法線索引"。

            "g pCube1"表示組,這里的成組與Maya中的成組不一樣,這里的成組是指把"g pCube1"后出現(xiàn)的面都結(jié)合到一起,組成一個(gè)整的多邊形幾何體。

            把"cube.obj"文件修改一下就知道成組的意思了。把"s off"這句后面的代碼替換成以下代碼:
            usemtl initialShadingGroup
            g pCube_Face1
            f 1/1/1 2/2/2 4/4/3 3/3/4
            g pCube_Face2
            f 3/3/5 4/4/6 6/6/7 5/5/8
            g pCube_Face3
            f 5/5/9 6/6/10 8/8/11 7/7/12
            g pCube_Face4
            f 7/7/13 8/8/14 2/10/15 1/9/16
            g pCube_Face5
            f 2/2/17 8/11/18 6/12/19 4/4/20
            g pCube_Face6
            f 7/13/21 1/1/22 3/3/23 5/14/24
            導(dǎo)入Maya后可以看到,立方體的每個(gè)面是分離的,每個(gè)面的名稱分別是"pCube_Face(1~6)",可見(jiàn)組的名稱其實(shí)就是單獨(dú)幾何體的名稱。

            可不可以用中文命名幾何體(組)呢?試試就知道了,把前面的代碼改成:
            usemtl initialShadingGroup
            g 立方體面1
            f 1/1/1 2/2/2 4/4/3 3/3/4
            g 立方體面2
            f 3/3/5 4/4/6 6/6/7 5/5/8
            g 立方體面3
            f 5/5/9 6/6/10 8/8/11 7/7/12
            g 立方體面4
            f 7/7/13 8/8/14 2/10/15 1/9/16
            g 立方體面5
            f 2/2/17 8/11/18 6/12/19 4/4/20
            g 立方體面6
            f 7/13/21 1/1/22 3/3/23 5/14/24

            試一下,會(huì)發(fā)現(xiàn)模型順利的導(dǎo)入了。雖然物體的名稱都變亂碼了,可這并不是很嚴(yán)重的事。
            不過(guò)使用中文名并不總是這么順利,把"g 立方體面1"這行改為"g 選擇"再試試看,這回導(dǎo)入時(shí)模型根本無(wú)法出現(xiàn),只會(huì)出現(xiàn)如下的錯(cuò)誤信息:
            // Error: line 1: Your OBJ file contains a line which is too long to be parsed. Please edit your obj file. //
            // Error: line 1: Error reading file. //
            由此可見(jiàn),物體命名的不規(guī)范也是導(dǎo)致OBJ文件出錯(cuò)的原因之一。
            關(guān)于Maya的物體命名,英文名是很保險(xiǎn)的,標(biāo)點(diǎn)符號(hào)中只有下劃線(_)可用,數(shù)字不能用放到名稱的開(kāi)頭,盡量不要用中、日、韓等雙字節(jié)文字。
            OBJ文件不支持有孔的多邊形面。
            舉個(gè)例子說(shuō)明一下:
            選擇Maya的創(chuàng)建多邊形工具(Polygons -> Create Polyon Tool),在視圖中畫(huà)一個(gè)四邊形,不要按回車,按Ctrl在四邊形中間點(diǎn)一下,可以繼續(xù)在四邊形中挖一個(gè)洞。把這個(gè)有孔的多邊形存成OBJ格式,在導(dǎo)入Maya時(shí),會(huì)發(fā)現(xiàn)多邊形少了一塊。如果你把這也看成錯(cuò)誤,現(xiàn)在至少你已經(jīng)知道錯(cuò)誤的原因了,就是OBJ文件不支持有孔的多邊形面。


            4、OBJ文件的實(shí)際問(wèn)題:

            現(xiàn)在來(lái)討論一點(diǎn)比較實(shí)際的問(wèn)題吧,就是一旦你遇到了一個(gè)出錯(cuò)的OBJ文件,倒底該怎么辦?

            當(dāng)你打開(kāi)OBJ文件后,往往會(huì)看到有幾萬(wàn)行的代碼,你恐怕還沒(méi)本事情一眼看出錯(cuò)誤所在行,除非程序的錯(cuò)誤信息中已經(jīng)告訴你錯(cuò)誤行。如果你不知道錯(cuò)誤在哪里,可以用排除法,弄清楚肯定正確的代碼范圍,通過(guò)縮減錯(cuò)誤代碼范圍定位錯(cuò)誤。例如,你先新建一個(gè)空的OBJ文件,把有錯(cuò)的OBJ文件代碼粘貼一半過(guò)來(lái),然后把這個(gè)只有一半代碼的新OBJ文件導(dǎo)入Maya。如果這時(shí)沒(méi)有錯(cuò)誤信息,說(shuō)明錯(cuò)誤行是在另一半代碼中,可以從另一半代碼中再粘貼一部分代碼試試看;如果這時(shí)出現(xiàn)錯(cuò)誤,說(shuō)明錯(cuò)誤行就在粘貼的代碼中,可以把粘貼過(guò)來(lái)的代碼刪去一部分再試試看。就這樣,逐步縮減范圍直到找到錯(cuò)誤行為止。

            這種方法雖然很麻煩,不過(guò)頗為有效。如果你不會(huì)編程,又遇到非常緊急的情況,這種方法還是值得一試的。


            5、OBJ文件的更多細(xì)節(jié):

            簡(jiǎn)單的OBJ格式寫(xiě)法。
            # Simple Wavefront file
            v 0.0 0.0 0.0
            v 0.0 1.0 0.0
            v 1.0 0.0 0.0
            f 1 2 3

            面可以使用負(fù)值索引,有時(shí)用負(fù)值索引描述面更為簡(jiǎn)便。

            v -0.500000 0.000000 0.400000
            v -0.500000 0.000000 -0.800000
            v -0.500000 1.000000 -0.800000
            v -0.500000 1.000000 0.400000
            f -4 -3 -2 -1

            "f -4 -3 -2 -1"這句索引值"-3"表示從"f"這行往上數(shù)第3個(gè)頂點(diǎn),就是"v -0.500000 0.000000 -0.800000",其它的索引值以此類推。 因此與這一行等效的正值索引寫(xiě)法為:"f 1 2 3 4"

            OBJ文件不包含面的顏色定義信息,不過(guò)可以引用材質(zhì)庫(kù),材質(zhì)庫(kù)信息儲(chǔ)存在一個(gè)后綴是".mtl"的獨(dú)立文件中。關(guān)鍵字"mtllib"即材質(zhì)庫(kù)的意思。材質(zhì)庫(kù)中包含材質(zhì)的漫射(diffuse),環(huán)境(ambient),光澤(specular)的RGB(紅綠藍(lán))的定義值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。"usemtl"指定了材質(zhì)之后,以后的面都是使用這一材質(zhì),直到遇到下一個(gè)"usemtl"來(lái)指定新的材質(zhì)。

            指定材質(zhì)的方法:
            Cube with Materials:
            # This cube has a different material
            # applied to each of its faces.
            mtllib master.mtl
            v 0.000000 2.000000 2.000000
            v 0.000000 0.000000 2.000000
            v 2.000000 0.000000 2.000000
            v 2.000000 2.000000 2.000000
            v 0.000000 2.000000 0.000000
            v 0.000000 0.000000 0.000000
            v 2.000000 0.000000 0.000000
            v 2.000000 2.000000 0.000000
            # 8 vertices
            g front
            usemtl red
            f 1 2 3 4
            g back
            usemtl blue
            f 8 7 6 5
            g right
            usemtl green
            f 4 3 7 8
            g top
            usemtl gold
            f 5 1 4 8
            g left
            usemtl orange
            f 5 6 2 1
            g bottom
            usemtl purple
            f 2 6 7 3
            # 6 elements

            貝塞爾片面(Bezier Patch):
            Maya不能導(dǎo)出OBJ格式的貝塞爾片面,卻能夠?qū)胨?dǎo)入的貝塞爾片面自動(dòng)轉(zhuǎn)換為Nurbs表面。
            # 3.0 Bezier patch
            v -5.000000 -5.000000 0.000000
            v -5.000000 -1.666667 0.000000
            v -5.000000 1.666667 0.000000
            v -5.000000 5.000000 0.000000
            v -1.666667 -5.000000 0.000000
            v -1.666667 -1.666667 0.000000
            v -1.666667 1.666667 0.000000
            v -1.666667 5.000000 0.000000
            v 1.666667 -5.000000 0.000000
            v 1.666667 -1.666667 0.000000
            v 1.666667 1.666667 0.000000
            v 1.666667 5.000000 0.000000
            v 5.000000 -5.000000 0.000000
            v 5.000000 -1.666667 0.000000
            v 5.000000 1.666667 0.000000
            v 5.000000 5.000000 0.000000
            # 16 vertices
            cstype bezier
            deg 3 3
            # Example of line continuation
            surf 0.000000 1.000000 0.000000 1.000000 13 14 \
            15 16 9 10 11 12 5 6 7 8 1 2 3 4
            parm u 0.000000 1.000000
            parm v 0.000000 1.000000
            end  
            # 1 element

            基數(shù)曲線(Cardinal Curve):
            Maya好像不支持OBJ格式的曲線,導(dǎo)入時(shí)不會(huì)出現(xiàn)錯(cuò)誤信息,卻也不會(huì)出現(xiàn)曲線。
            # 3.0 Cardinal curve
            v 0.940000 1.340000 0.000000
            v -0.670000 0.820000 0.000000
            v -0.770000 -0.940000 0.000000
            v 1.030000 -1.350000 0.000000
            v 3.070000 -1.310000 0.000000
            # 6 vertices
            cstype cardinal
            deg 3
            curv 0.000000 3.000000 1 2 3 4 5 6
            parm u 0.000000 1.000000 2.000000 3.000000 end
            # 1 element

            貼圖映射(Texture-Mapped):
            # A 2 x 2 square mapped with a 1 x 1 square
            # texture stretched to fit the square exactly.
            mtllib master.mtl
            v 0.000000 2.000000 0.000000
            v 0.000000 0.000000 0.000000
            v 2.000000 0.000000 0.000000
            v 2.000000 2.000000 0.000000
            vt 0.000000 1.000000 0.000000
            vt 0.000000 0.000000 0.000000
            vt 1.000000 0.000000 0.000000
            vt 1.000000 1.000000 0.000000
            # 4 vertices
            usemtl wood
            # The first number is the point,
            # then the slash,
            # and the second is the texture point
            f 1/1 2/2 3/3 4/4
            # 1 element


            posted on 2008-06-13 17:12 lovedday 閱讀(38690) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ■ 3D Graphics And Software Engine

            公告

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關(guān)鏈接

            搜索

            最新評(píng)論

            久久精品国产色蜜蜜麻豆| 97久久国产亚洲精品超碰热| 亚洲精品无码久久久久久| 国内精品人妻无码久久久影院 | 久久精品无码免费不卡| 久久久久亚洲国产| 久久久精品国产sm调教网站 | 中文字幕亚洲综合久久| 狠狠色丁香婷婷久久综合五月| 大伊人青草狠狠久久| 亚洲一区精品伊人久久伊人 | 国产精品久久久亚洲| 亚洲?V乱码久久精品蜜桃| 国产情侣久久久久aⅴ免费| 久久亚洲中文字幕精品一区| 久久99精品久久久久久久久久| 人人狠狠综合久久亚洲| 久久免费线看线看| 久久人妻无码中文字幕| 国产成人无码精品久久久免费| 久久久久人妻一区精品色| 午夜精品久久久久成人| 91久久精品国产91性色也| 青青草原精品99久久精品66| 日日狠狠久久偷偷色综合免费 | 久久这里的只有是精品23| 久久综合九色综合欧美狠狠| 精品多毛少妇人妻AV免费久久| 99久久精品免费国产大片| 久久久久99精品成人片欧美 | 亚洲欧美一级久久精品| 成人国内精品久久久久影院VR| 日本欧美久久久久免费播放网| 伊人久久大香线蕉无码麻豆| 99久久99久久精品国产| 77777亚洲午夜久久多喷| 99久久精品国产一区二区| 一级A毛片免费观看久久精品| 精品久久久久久无码人妻蜜桃| 久久国产成人精品麻豆| 久久久久久久久久久久中文字幕|