999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

裝箱布局三維可視化控件開發*

2016-05-28 08:45:13楊淑德翟曉慶華順剛
港口裝卸 2016年2期
關鍵詞:可視化

楊淑德 翟曉慶 華順剛

(1 大連理工大學機械工程學院 2 山東理工大學機械工程學院)

?

裝箱布局三維可視化控件開發*

楊淑德21翟曉慶22華順剛21

(1 大連理工大學機械工程學院2 山東理工大學機械工程學院)

摘要:結合 OpenGL和ActiveX技術,研究了三維裝箱的可視化問題,在Visual Studio環境下,進行面向裝箱布局的三維顯示控件開發。通過接口方法獲得貨物配載信息,實現貨物配載結果的可視化;為了觀察集裝箱內貨物布局,根據用戶觀察方向與箱壁平面法線方向,判別集裝箱箱壁平面是否繪制。以線框形式顯示貨物,便于查看整體重心和集裝箱幾何中心的位置,從而判斷配載方案的穩定性??丶y試表明,該控件可以根據配載貨物的特征信息和位置信息,實現貨物配載整體效果顯示、貨物擺放方式和堆碼層數顯示、重心顯示和貨物高亮顯示等功能,直觀地展示裝箱配載結果,便于用戶調用、觀察、驗證和修改裝箱布局方案。

關鍵詞:ActiveX控件; 裝箱布局; OpenGL; 可視化

1引言

隨著物流業的快速發展,物流技術的應用和研究受到越來越多的重視。產品的配送效率成為影響物流成本和競爭力的重要因素。集裝箱配載優化布局作為物流配送過程中的一個關鍵性技術, 對提高

配送業務的自動化水平,提高配送業務的工作效率和規范業務流程等方面都有重要意義[1]。

國內外諸多學者對裝箱布局問題開展了研究,提出了利用遺傳算法、啟發式算法和模擬退火算法等進行配載的解決方案[2-3]。通過配載算法對貨物進行布局,快速地設計集裝箱裝箱方案,達到對集裝箱空間和載重能力的更好利用。裝箱布局結果的三維可視化可以直觀的顯示貨物的放置情況,有利于設計人員驗證配載結果的正確性,便于指導裝箱工人完成裝箱任務。與現有的多種配載算法相比,對裝載結果的可視化研究較為欠缺。Bortfeldt[4]對啟發式算法改進后沒有給出直觀的裝箱效果圖,沒有提供細節的顯示。Chien[5]結合三維裁剪提出配載算法并實現裝載結果的顯示,但是只繪制了集裝箱和貨物的輪廓,不容易區分外形尺寸相近的貨物。郭貝貝[6]開發的裝箱可視化系統可以顯示貨物給定角度的放置情況和某類貨物的放置情況,無法全方位的觀察貨物的放置情況。桂思怡等[7]開發的立體裝箱可視化系統雖然可以實現手動編輯,但是該系統是基于特定算法開發的。

基于此,本研究對圖形繪制顯示代碼進行封裝,開發裝箱布局三維可視化控件,便于用戶調用。用Visual Studio MFC 開發ActiveX控件,根據配載優化結果,利用圖形應用程序接口OpenGL,根據視線方向選擇性繪制集裝箱箱壁,完成貨物不同視角觀察結果的繪制,顯示整體重心和集裝箱幾何中心,高亮顯示用戶查詢的某一托盤單元或貨物。

2OpenGL和ActiveX技術

OpenGL是獨立于硬件設備、窗口系統和操作系統的開放式三維圖形庫,是圖形硬件的軟件接口。具有高度的可移植性和很快的渲染速度。在涉及圖形圖像顯示及處理的應用程序開發中得到了廣泛應用[8]。在三維實體建模、物體坐標變換以及紋理貼圖等方面具有強大功能。

組件對象模型(COM)是關于如何建立組件以及如何通過組件構建應用程序的一個規范。在軟件項目中,開發人員使用COM能快速地定制出新的應用程序,從而實現并行開發和真正意義上的軟件復用。ActiveX是基于COM技術基礎,實現對象鏈接與嵌入的技術集,包括ActiveX控件、ActiveX文檔和ActiveX腳本。其中ActiveX控件是最基本和最重要的,程序員可以在Basic、C#、C++以及Java等程序中調用ActiveX控件進行應用程序或web頁面開發。由于ActiveX控件結合了OLE功能而能在任何控件容器中正確工作,使其能夠為各種不同的編程語言系統和開發工具所兼容。Visual C++提供了兩種ActiveX控件的開發工具MFC和ATL。其中MFC封裝了OLE復雜的接口的特性,包括窗口對象特性和方法、屬性及事件等,無需深入了解COM對象原理和機制,開發過程中只需關注控件本身設計[9-10]。

3裝箱布局三維可視化控件接口

接口是控件與外部程序進行通信的協議。外部程序通過接口提供的屬性和方法來傳送消息給控件??丶膶傩砸话阌糜诿枋隹丶耐庥^??丶姆椒ㄊ强丶炔康膶崿F函數,從控件對象的外部調用對象的方法完成特定功能[9]。本文在可視化控件內部編寫接口實現函數,外部程序通過調用控件方法將配載結果數據傳遞到控件內部的。

裝箱配載結果數據由集裝箱和一定數量貨物的特征信息、位置信息組成。結合裝箱的實際情況,本文中認為長方體類貨物為規則形狀貨物,其他形狀貨物均為不規則貨物。體積大的規則貨物可以直接裝載,體積小較為零碎的規則貨物可以利用托盤進行裝載;不規則形狀貨物,用長方體紙箱或者木箱進行包裝后裝載。假設集裝箱箱體、托盤和打包后的貨物密度均勻,建立描述集裝箱、托盤和貨物信息的數據結構體。

本研究設計了若干結構體用于存放描述集裝箱、托盤和貨物的位置、外形和顏色的數據。用于描述集裝箱的CONTAINER結構體中包括表示集裝箱長寬高、集裝箱角件長寬高、角件中心的XYZ坐標等數據成員;用于描述貨物和托盤的CARGO結構體中包括表示貨物(或者托盤)中心XYZ坐標、貨物(或者托盤)長寬高和貨物(或者托盤)顏色的數據成員;用于描述整體重心和集裝箱幾何中心的SPHERE結構體中包括表示球心XYZ坐標、球體半徑和球體顏色的數據成員。

在Visual C++中,VARIANT 是一個支持跨語言訪問的結構體[11]。該結構體包括vt和union兩個域,其中vt指定union域中的數據類型。SAFEARRAY是Visual C++中的一種結構體,成員數據包括數組成員和說明數組的維數、長度、邊界、元素類型等信息的成員。

SAFEARRAY變量一般用于VARIANT中數組型參數的傳遞。VARIANT類型變量的成員vt = VT_ARRAY時,可以使用union域中的成員parray,使其指向存有數組數據的SAFEARRAY指針??梢岳肁PI函數SafeArrayCreate (VARTYPE v, unsigned int cDims, SAFE- ARRRAYBOUND FAR* rgsabound )在堆上創建一維數組和二維數組。其中,v指定SAFEARRAY中數組的數據類型;cDims指定SAFEARRAY中數組的維數;rgsabound指向描述SAFEARRAY中數組邊界的矢量。

本研究控件方法獲取的數據中包含結構體數組,不能作為ActiveX控件方法的參數。同時為保證用戶可以跨語言調用控件,因此需要將存放集裝箱、托盤和貨物的數據的結構體數組通過SAFEARRAY變量封裝到VARIANT變量中。繪制圖形所需的數據就存儲在SAFEARRAY數組數據成員pvData指針指向的內存中。

利用Visual Studio 2010創建MFC ActiveX 控件工程。在自動生成的_DGLActiveX類中中添加控件接口方法函數Display (VARIANT &Sphere, VARIANT &CargoSolid, VARI- ANT&CargoMesh, VARIANT &Contain,VARIANT_BOOL isShowSphere, VARIANT_BOOL MeshAndFill, LONG CargoMeshAmount, LONG CargoSolidAmount)。

其中,方法函數中各參數的含義如下:Sphere中存放整體重心和集裝箱幾何中心的數據;CargoSolid中存放需要以實體顯示的貨物數據;CargoMesh中存放需要以線框形式顯示的貨物的數據;Contain中存放集裝箱的數據;isShowSphere用來表示是否需要顯示整體重心和集裝箱的幾何中心;MeshAndFill表示貨物的顯示模式;CargoMeshAmount存放需要以線框形式顯示的貨物數量;CargoSolidAmount存放需要以實體顯示的貨物數量。

在控件中,調用SafeArrayCreate函數創建SAFEARRAY指針作為中間變量,使其指向接口方法中VARIANT類型參數的union中的parray數據成員。在CGLActiveX控件工程的CGLActiveXCtrl類定義中,聲明SAFEARRAY類型的全局指針變量pArraySp、pArrayCon、pArrayMesh和pArraySolid,在控件方法函數中調用SafeArrayCreate函數在堆上為它們分配存儲空間。將Sphere、Contain、CargoMesh和CargoSolid的成員parray分別賦值給上述四個SAFEARRAY指針變量。

控件方法函數中創建安全數組并賦值的代碼如下:

pArraySp = SafeArrayCreate(VT_I4,2, BoundSp);

//創建存儲重心數據的二維數組

pArraySp = Sphere.parray;

pArrayCon = SafeArrayCreate(VT_I4,1,BoundCon);

//創建存儲箱體數據的一維數組

pArrayCon = Contain.parray;

pArraySolid = SafeArrayCreate(VT_I4,2, BoundSolid);

//創建存儲實體貨物數據的二維數組

pArraySolid = CargoSolid.parray;

pArrayMesh = SafeArrayCreate(VT_I4,2, BoundMesh);

//創建存儲邊框貨物數據的二維數組

pArrayMesh = CargoMesh.parray;

4基于OpenGL的裝箱布局圖形繪制

OpenGL繪制幾何圖元的方法有立即模式、顯示列表和緩沖區對象。其中,立即模式是指定完圖元之后將所有數據發往渲染管線后立即被渲染。一次一個頂點地指定幾何對象,或者使用頂點數組,一次性的繪制大量圖元。顯示列表模式是利用預編譯的命令列表的渲染模式。把繪圖命令和數據先進行預處理,然后保存起來,以后調用的時候可以快速地拷貝到命令緩沖區然后執行。緩沖區對象多用于紋理貼圖與動畫制作中[8]。

顯示列表中不能存入傳遞參數或返回值的函數。索引頂點數組的頂點變換工作量也比立即模式和顯示列表少得多。在有較大平滑表面的模型或靜態圖形中,索引頂點數組的效率高于顯示列表[12]。

本研究中繪圖命令中包含返回值的函數,同時繪制的是表面光滑的靜態圖形,因此采用立即模式,使用索引頂點數組方式,完成幾何圖元繪制。

4.1OpenGL繪圖環境設置

OpenGL采用渲染上下文Render Context (RC) 的繪圖方式,繪圖前需要設置渲染環境[13-15]。為了獲得模型更全面的信息,需要對三維模型進行幾何變換。幾何變換包括模型變換和視點變換。模型變換時,固定觀察點的位置和方向,在觀察范圍內對模型進行旋轉、平移和縮放操作,獲得不同的觀察效果圖。視點變換是改變觀察點的位置和方向后對模型進行觀察,而不對模型進行變換。模型變換需要調用GL庫中的glTranslate函數和glScale函數配合使用完成。視點變換利用GLU函數庫中的gluLookAt函數設置觀察點的位置坐標、被觀察點的位置坐標和向上方向的向量完成。模型變換矩陣和視點變換矩陣共同構成模型視景矩陣。

本研究在控件工程自動生成的CGLActiveXCtrl類中添加設置OpenGL像素格式和渲染環境的成員函數,完成像素格式和渲染環境RC設置。通過視點變換指定觀察點的位置和方向,根據觀察點的位置和方向,選擇性繪制集裝箱的各個平面,通過模型變換在適當位置繪制出指定尺寸的貨物。通過視點變換和模型變換相結合實現集裝箱裝載的三維可視化,控件的繪圖流程如圖1所示。

圖1 ActiveX控件繪圖流程圖

4.2集裝箱面的顯示

OpenGL對三角形圖元和四邊形圖元均提供了加速處理。集裝箱和貨物均為長方體,因此本研究采用四邊形圖元繪制集裝箱箱壁。為了觀察集裝箱內貨物的放置情況,選擇性繪制箱壁,采用填充圖完成需要顯示箱壁的繪制。

如圖2(a)所示長方體代表集裝箱,給定8個頂點A(xa,ya,za)、B(xb,yb,zb) 、C(xc,yc,zc) 、D(xd,yd,zd) 、O(xo,yo,zo) 、E(xe,ye,ze) 、F(xf,yf,zf) 、G(xgyg,zg) 的坐標。矢量ɑ所示的方向代表視線方向。根據每個箱壁平面的三個頂點,計算對應箱壁的外法線方向。

以平面ABCD為例,根據點A、B、C坐標計算外法線方向

(1)

給定觀察的視線方向a,計算視線方向與外法線夾角θ余弦

(2)

若cosθ,表示該平面為集裝箱的背面(遠離觀察者),應繪制平面;若cosθ≤ 0,不繪制該平面,便于觀察內部貨物。如圖2(a)所示視點位置和方向,通過公式(1)和(2)對集裝箱的六個平面分別進行判斷,只需繪制平面AOGD、平面ABEO和平面OEFG,箱體繪制結果示意圖如圖2(b)所示。

圖2  箱體繪制示意圖

為改善箱體的空間立體感,采用與填充面不同的顏色繪制箱體輪廓。箱體輪廓線與箱體填充面的邊界具有相同的深度值,發生像素重疊。由于在渲染環境設置中打開了深度檢測功能,后繪制的輪廓線無法遮擋前面繪制的圖形導致在重疊區域發生像素閃爍。在OpenGL渲染環境設置函數中啟用多邊形深度偏移量,并調用glPolygonOffset函數在深度緩存區中對多邊形的深度進行修正,解決填充面和邊框同時顯示區域的像素閃爍問題,從而得到清晰立體的集裝箱箱體圖。進行視點變換通過改變gluLookAt的參數改變觀察點的位置和方向,繪制不同的箱壁平面,繪制效果如圖3所示。在后續的貨物實體繪制工作中,采用與此相同的方式實現貨物不同視角觀察結果的圖形繪制。

圖3 不同視角觀察箱壁繪制效果圖

4.3貨物實體顯示

根據貨物的配載計算結果,利用OpenGL圖形庫在ActiveX控件上完成貨物三維實體顯示,實現了貨物在集裝箱內的布局情況的可視化和裝箱過程的透明化。

OpenGL在顯示物體的空間中定義一個始終固定不變的世界坐標系和一個以物體的中心為坐標原點的局部坐標系。物體的旋轉或平移等操作都是圍繞局部坐標系進行的。當物體模型進行旋轉或平移等操作時,局部坐標系也執行相應的旋轉或平移操作。對物體模型進行縮放則局部坐標系也進行相應的縮放[8]。先將局部坐標系移動到貨物中心位置處,然后再對各個坐標軸進行縮放,保證在目標位置將貨物繪出。

OpenGL創建三維實體對象時,利用提供的點、線、面等基本圖元在三維空間進行組合而實現。OpenGL的GLUT工具包中提供了圓錐體、四面體、正方體等三維實體對象,因此可以直接調用GLUT工具包中的函數繪制三維實體。利用glutSolidCube函數繪制正方體,通過一系列的移動和拉伸命令在任意位置繪制任意尺寸的長方體。

以表1所示貨物的裝載為例,完成全部貨物在集裝箱內放置情況的顯示。

表1 裝載任務信息列表

不同種類的貨物以不同RGB值描述的顏色來表示,承載不同貨物的托盤不予區分采用相同顏色繪制。調用glColor3f設置貨物實體顏色,調用glTranslatef將坐標系移動到指定位置,調用glScalef對XYZ坐標方向尺寸進行縮放。調用glutSolidCube繪制指定位置的實體貨物。此時繪制的三維實體均用當前繪圖色以填充面形式繪出。

在一次繪圖過程中可能要繪制許多的長方體模型,利用托盤裝載的貨物也需要體現在一個托盤上貨物的放置情況。為了顯示裝載細節,區分同類貨物的不同個體,清晰展示配載貨物的行數、列數、層數,因此需要在繪制的實體模型基礎上對每個貨物繪制黑色邊框來區分不同貨物單體。將繪圖色指定為黑色,然后使用glutWireCube命令繪制貨物邊框。繪制的線框圖與實體圖尺寸和位置均相同,兩者具有相同的深度偏移量,發生像素重疊,在OpenGL渲染環境設置函數中設置多邊形深度偏移量消除像素閃爍。如圖4所示為表1給定任務的用兩個集裝箱裝載結果圖,用兩個集裝箱完成裝載的放置結果實體圖。其中C1、C2、C3、C4、C5、C6所指的小長方體表示該類貨物的一個單元體。在裝載結果中可以根據需要高亮顯示集裝箱中任意一個托盤單元或者任意單個貨物,如圖5所示。

圖4  裝配結果

圖5 裝載貨物高亮顯示

4.4整體重心和集裝箱幾何中心的顯示

集裝箱的裝載貨物時要滿足運輸穩定性約束,要求配載完成后整體的重心盡量接近于集裝箱的幾何中心。為了觀察配載完成后的箱體幾何中心和綜合重心之間的位置關系,可以繪制貨物的輪廓。兩者的位置關系通過在相應位置處繪制球體示意,貨物輪廓的顏色與實體顏色一致以區分不同種類的貨物。

將整體重心和集裝箱幾何中心的數據分別讀取到SPHERE結構體變量MultiCenter和GeoCenter中。使用glLineWidth函數和glColor3f函數設置線條寬度和當前繪圖顏色。調用GLUT工具包函數glutWireCube完成貨物輪廓的繪制。整體重心和集裝箱幾何中心以實體的形式通過glutSolidSphere函數完成顯示。程序默認的初始輸出結果是三維實體狀態,此時不進行重心繪制。在顯示模式下拉列表中將當前模式設置為重心顯示,繪制貨物輪廓、整體重心和集裝箱幾何中心,圖6所示為整體重心和集裝箱幾何中心不重合情況的顯示效果圖。圖中A點為集裝箱幾何中心,B點為整體重心。

圖6 顯示整體重心和集裝箱幾何中心

4.5裝箱布局可視化控件測試

將控件工程拷貝到貨物配載解決方案目錄下,打開貨物配載解決方案。在解決方案管理器中配載解決方案上右鍵選擇add->existing project,完成控件工程的添加。在add existing project對話框中選擇貨物配載解決方案目錄下的控件工程,將控件工程添加到貨物配載解決方案中。在需要調用控件的項目中添加控件工程的引用,這樣就可以在工程中使用該控件了。

對表1所示任務進行優化配載后,第一個集裝箱的輸出結果如圖7所示。

圖7 程序運行結果圖

5結語

本研究在Visual Studio2010環境下,用MFC實現了基于OpenGL的三維圖形顯示ActiveX控件開發。該控件圍繞裝箱布局三維可視化進行開發,讀取并顯示裝箱布局結果??梢愿鶕脩粜枰吡溜@示部分貨物或者從不同角度觀察集裝箱內貨物的布局情況,使裝箱配載方案變得清晰直觀。本研究對裝箱布局優化的顯示模塊進行封裝,在需要進行三維顯示的地方只需調用控件即可,降低了程序的復雜度,便于程序的升級維護??梢灾庇^地查看幾何中心和綜合重心的位置關系,便于配載設計人員對裝箱配載結果的穩定性進行初步判斷。

參 考 文 獻

[1]薛蓮. 同一規格貨物集裝箱裝載問題研究及其在物流行業的應用[D]. 天津: 天津大學, 2008.

[2]翟鈺. 三維裝箱問題的混合遺傳算法[D].上海: 上海交通大學, 2007.

[3]趙鐘榮. 基于改進遺傳算法的集裝箱裝載優化方法研究[D].上海: 上海交通大學, 2010.

[4]BORTFELDT A,MACK D. A Heuristic for the Three-dimensional Strip Packing Problem[J].European Journal of Operational Research,2007,183(3):1267- 1279.

[5]CHIEN C F,DENG J F.A Container Packing Support System for Determining and Visualizing Container Packing Patterns[J].Decision Support Systems,2004,37(1):23-34.

[6]郭貝貝. 復雜集裝箱裝載問題研究及可視化實現[D].大連:大連海事大學, 2009.

[7]桂思怡. 基于DirectX的立體裝箱系統3D可視化技術研究[D]. 大連: 大連海事大學, 2014.

[8]WRIGHT R S,LIPCHAK B,HAEMEL N.OpenGL超級寶典[M].張琪, 付飛, 譯. 4版. 北京: 人民郵電出版社, 2010:18-409.

[9]孫鑫, 余安萍. VC++深入詳解[M]. 北京: 電子工業出版社, 2006: 660-699.

[10]KRUGLINSKI D,WINGO S,SHEPHERD G.Programming Visual C++6.0技術內幕[M]. 希望圖書創作室,譯. 5版. 北京: 北京希望電子出版社, 2002:550-666.

[11]MICROSOFT. Development Tools and Languages[EB/OL]. https://msdn.microsoft.com/en-us/library/aa187916.aspx, [2015-06-22].

[12]曹洪軍, 原英. 利用OpenGL實現三維繪圖[J]. 內蒙古農業大學學報(自然科學版), 2002,23(3):98-102.

[13]匡天君,滕遠道,王乘等.基于MFC和OpenGL三維圖形的開發[J]. 微計算機信息:測控儀表自動化, 2004, 20(6):115-116,119.

[14]萬浩.基于OpenGL的虛擬儀器三維控件設計[D].武漢: 華中科技大學, 2008.

[15]黃常標, 江開勇, 林俊義. 基于OpenGL視景體的三維CAD模型交互顯示研究[J]. 機械設計與制造, 2011,10:74-76.

Development of the 3D Visualization Control for Containers' Loading Layout

Yang Shude1Zhai Xiaoqing2Hua Shungang1

(1 School of Mechanical Engineering Dalian University of Technology 2 School of Machinery Engineering Shandong University of Technology)

Abstract:3D visualization of the container loading layout is researched by using ActiveX and OpenGL in this paper. A visualization control is developed based on cargoes' shape and location under Visual Studio environment. The stowage data is obtained using the interface function to render the cargoes in the container. In order to observe the cargoes conveniently, surfaces of the container near observer are not rendered according to the relationship between the eye-gaze direction and the normal of surface. The gravity of cargoes is displayed and then we can predict the stability of entire container. The test results show that the control facilitates users to display the cargoes' layout involving placement mode, stack number, gravity center, as well as validate and modify the stowage scheme.

Key words:activeX control; container loading layout; OpenGL; visualization

DOI:10.3963/j.issn.1000-8969.2016.02.003

收稿日期:2015-09-23

基金項目:國家部委科研項目(104010103)

楊淑德: 116024, 遼寧省大連市甘井子區凌工路2號

猜你喜歡
可視化
無錫市“三項舉措”探索執法可視化新路徑
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
三維可視化信息管理系統在選煤生產中的應用
選煤技術(2022年2期)2022-06-06 09:13:12
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
基于CGAL和OpenGL的海底地形三維可視化
可視化閱讀:新媒體語境下信息可視化新趨勢
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 91丝袜在线观看| 国产屁屁影院| a网站在线观看| 久久性妇女精品免费| 人妻免费无码不卡视频| 亚洲色欲色欲www网| 91九色视频网| 高潮毛片无遮挡高清视频播放| 久操中文在线| 熟妇丰满人妻| 99激情网| 国产一区二区三区日韩精品| 欧美劲爆第一页| 91偷拍一区| 91香蕉国产亚洲一二三区| 国产网站一区二区三区| 狠狠做深爱婷婷久久一区| 香蕉久久国产超碰青草| 欧美乱妇高清无乱码免费| 丁香婷婷激情综合激情| 免费人成网站在线观看欧美| 国产精品女同一区三区五区| 伊人色天堂| 青青青视频91在线 | 欧美人人干| 五月天天天色| 国产精品久久精品| 在线观看视频99| 国产精品手机视频| 精品人妻系列无码专区久久| 性69交片免费看| 亚洲成a人片在线观看88| 白浆免费视频国产精品视频| 亚洲福利视频一区二区| 国产农村精品一级毛片视频| 欧美97欧美综合色伦图| 国产乱人伦AV在线A| 无码有码中文字幕| 欧美成人影院亚洲综合图| 国产成人久视频免费| 国产精品美女在线| 欧美一区二区福利视频| 亚洲国产天堂久久综合| 无码久看视频| 国产人妖视频一区在线观看| 中文字幕欧美日韩| 制服丝袜一区二区三区在线| 美美女高清毛片视频免费观看| 久久影院一区二区h| 色婷婷亚洲综合五月| 欧美激情首页| 亚洲清纯自偷自拍另类专区| 久久男人视频| 国产激情在线视频| 毛片a级毛片免费观看免下载| 欧美精品亚洲精品日韩专| 久久久久久久97| 自慰网址在线观看| 在线国产欧美| 直接黄91麻豆网站| 国产精品自在线拍国产电影| 久久中文字幕2021精品| 乱人伦99久久| 亚洲男人的天堂久久香蕉| 国产成人精品免费视频大全五级| 国产高清无码第一十页在线观看| 欧美国产中文| 亚欧乱色视频网站大全| 免费无码网站| 亚洲一级无毛片无码在线免费视频| 国产成人亚洲毛片| 九色综合伊人久久富二代| 免费视频在线2021入口| 国产网友愉拍精品| 国产xx在线观看| 亚洲国产成人久久精品软件| 亚洲第一福利视频导航| 欧美激情伊人| 十八禁美女裸体网站| 国产高清在线丝袜精品一区| 伊人天堂网| 伊人久综合|