国产自产第一-国产自产对白一区-国产自产精品-国产自产区44页-国产自产在线-国产自产自拍-国产自产自拍视频-国产自精品

金喜正规买球

3D格式轉換神器HOOPS Exchange使用教程(二):檢索可視化工作流的圖形數據

原創|3D產品功能介紹|編輯:何家巧|2022-08-31 11:45:40.093|閱讀 228 次

概述:本教程將說明如何使用 HOOPS Exchange 檢索可視化工作流的圖形數據。完成本教程后,您將對 HOOPS Exchange 如何提供對零件三角形網格的訪問、如何在 3D 空間中正確定位以及如何確定每個零件的基本顏色有一個基本的了解。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

相關鏈接:

HOOPS Exchange是什么?

 是一組軟件庫,可以幫助開發人員在開發應用程序時讀取和寫入主流的 2D 和 3D 格式。HOOPS Exchange 支持在主流的3D 文件格式中讀取 CAD 數據,并支持將 3D 數據轉換為 PRC 數據格式,這是一種高度可壓縮和開放的文件格式,并已通過國際標準化組織 (ISO 14739-1:2014) 的認證。PRC 也是 Adobe PDF 中用于 3D 的格式之一。HOOPS Exchange 持續優化讀取各種 3D 數據的功能,尤其是對于來自計算機輔助設計 (CAD) 系統的數據。


本章我們學習創建一個使用 加載文件并使用 Qt3D 將其可視化的跨平臺應用程序。

介紹
本教程將向大家說明如何使用 檢索可視化工作流的圖形數據。學習完本教程后,您將對 HOOPS Exchange 如何提供對零件三角形網格的訪問、如何在 3D 空間中正確定位它們以及如何確定每個零件的基本顏色有一個基本的了解。
本教程有一些先決條件。首先,您應該已經完成了“打印裝配結構”教程,該教程涵蓋了文件加載和數據檢索等幾個基本概念,這些話題在此不再贅述。
HOOPS Exchange 是一個支持 Windows、macOS 和 Linux 的 SDK。我們將使用最流行的跨平臺 GUI 工具包 Qt,具體來說,我們將依賴 Qt3D 來實現跨平臺的圖形功能。我們將盡一切努力將工具包所需的專業知識降至最低,但是,您必須在計算機上安裝 Qt 6才能完成本教程。
像許多跨平臺開發社區一樣,Qt 已經開始向使用 CMake 作為默認構建系統的方向遷移。可以在此處找到有關使用 CMake 構建 Qt 應用程序的信息。本教程包括基于這些概念的完整 CMakeLists.txt 文件。Qt 的最新發行版包括 bin/qt-cmake,如果您尚未安裝 CMake,則可以使用它們。
不需要深入了解 Qt 和 CMake,但兩者都必須安裝并準備好使用。
第 0 步:項目設置
克隆項目
我們提供了一個 git 存儲庫來支持本教程。克隆主分支以建立項目的起點。
git 克隆 //github.com/techsoft3d/he_qt_basic_view.git
配置
使用您喜歡的文本編輯器打開文件CMakeLists.txt。在文件的頂部,您將看到HOOPS_EXCHANGE_DIR已設置變量。更新分配給此變量的值以反映您的特定安裝位置。
建造
由于本教程的目標是提供對 HOOPS Exchange 的理解,因此我們不會花太多時間在如何構建和運行 Qt 應用程序或 IDE 選擇和配置的主題上。但以防萬一您不熟悉它是如何完成的,我們將在此處提供一些提示。
視覺工作室代碼
Visual Studio Code 是跨平臺開發的絕佳選擇。它支持 C/C++ 開發和 CMake 作為構建配置系統。Microsoft在此處提供了此用例的出色概述。
編輯文件 _.vscode/settings.json_ 并更新 Qt 路徑以反映您本地安裝的 Qt。安裝 CMake Tools 擴展后,您可以使用狀態欄上的按鈕來配置、構建和運行應用程序。
Windows 上的 Visual C++
打開 Visual Studio 命令提示符并執行位于 Qt 安裝的 bin 文件夾中的 qtenv2.bat。接下來,在項目目錄中創建一個名為build的子文件夾并更改為它。運行qt-cmake ..以生成所需的文件。這將創建qt_he_viewer.sln,您可以使用命令evenv qt_he_viewer.sln 打開它。
開始運作
構建項目后,您就可以運行應用程序了。當您運行二進制文件時,您將看到一個標準的文件打開對話框。對話框的默認位置是包含 HOOPS Exchange 附帶的示例數據的文件夾。導航到 PRC 子文件夾并選擇helloworld.prc。該文件加載迅速,并出現空的 3D 視圖。
查看main.cpp的實現以熟悉程序流程。您會注意到 HOOPS Exchange 已初始化,并提示用戶輸入一個輸入文件,然后加載該文件。加載文件后,代碼繼續調用createScene,配置視圖、相機和光源。
我們將從創建場景開始,以一種有點抽象的方式。
第 1 步:創建場景
要創建場景,我們必須實現Scene.cppcreateScene中定義的函數。在編輯器中打開文件。你會注意到它被存根返回一個空對象。
在 HOOPS Exchange 數據模型中,曲面細分存在于表示項級別。這意味著我們將需要實現遍歷裝配結構、輸入每個零件定義并提取其中包含的表示項的功能。對于我們遇到的每個表示項目,我們需要做一些事情:
  1. 確定是否應顯示表示項。
  2. 生成我們可以輕松渲染的細分數據。
  3. Qt3D從 細分創建網格。
  4. Qt3D從HOOPS Exchange 樣式定義創建材質。
  5. Qt3D從世界位置創建一個變換。
我們剛剛列出的所有功能都已在您克隆的項目中被刪除,因此我們可以編寫完整的 createScene 主體,而無需過多關注每個步驟的實現方式。
首先,我們將聲明并初始化一個結構來控制如何為表示項生成鑲嵌。創建后添加以下代碼行rootEntity.
// 創建曲面細分參數來控制行為
A3DRWParamsTessellationData tess_params;
A3D_INITIALIZE_DATA(A3DRWParamsTessellationData, tess_params);
// 使用“預設”選項獲得中等詳細程度
tess_params.m_eTessellationLevelOfDetail = kA3DTessLODMedium;
為簡單起見,我們在 options 結構中使用詳細級別枚舉,它控制一組特定的細分選項。這適用于基本的查看工作流程。我們將很快使用這個選項對象。
forEach_RepresentationItem接下來,我們將使用稍后實現的函數來迭代每個表示項。現在,讓我們假設它存在并且做我們想做的事——也就是說,它遍歷裝配結構,并且對于它遇到的每個零件,它都提取表示項。對于每個表示項,調用提供的 lambda。設置細分參數后添加以下代碼行。
// 遍歷每個表示項
forEach_RepresentationItem(model_file, [&](EntityArray const &path) {
});
lambda 的參數是 an EntityArray,,它是 的類型別名QVector<A3DEntity*>。它包含指向程序集層次結構中每個節點的有序指針列表。數組中的第一項是模型文件,然后是一系列產品,然后是零件。最后,數組以遇到的表示項結束。
對于這一步的其余部分,我們將按順序將代碼添加到 lambda 的主體中。
有時不應繪制表示項。為了確定這一點,我們將使用一種稱為級聯屬性的機制。級聯屬性允許我們在實例化它的組件的上下文中計算零件的屬性。特定裝配可以覆蓋特定零件的顏色或可見性。我們將把我們對級聯屬性的使用封裝在一個名為的簡單結構CascadedAttributes中,稍后我們將實現該結構。它被淘汰了,所以現在讓我們假設它的行為符合我們的需要。
在 lambda 的主體中添加以下代碼行:
CascadedAttributes ca( 路徑 );
// 確定是否應該跳過此項
如果( ca->m_bRemoved || !ca->m_bShow ) {
  返回
}
CascadedAttributes重載,提供對其中包含的結構operator->的直接訪問。A3DMiscCascadedAttributesData如果表示項目的這個實例被刪除或不應該顯示,我們會提前退出。
如果我們不及早退出,下一步就是在 Exchange 中生成曲面細分。為此,我們添加以下代碼行:
A3DRiRepresentationItem *ri = path.back();
// 使用我們上面聲明的選項生成曲面細分
A3DRiRepresentationItemComputeTessellation(ri, &tess_params);
現在我們已經對表示項進行了細分,我們可以訪問數據。
// 獲取此表示項的數據
A3DRiRepresentationItemData擺脫;
A3D_INITIALIZE_DATA(A3DRiRepresentationItemData,擺脫);
if ( A3D_SUCCESS != A3DRiRepresentationItemGet( ri, &;rid ) ) {
  返回
}
// 曲面細分存儲在 m_pTessBase 中
自動tess_base = rid.m_pTessBase;
您應該非常熟悉上面介紹的模式,它使用不透明的對象句柄 ( ri) 將其關聯數據讀入結構。然后從結構中獲得鑲嵌句柄,我們就可以使用它了。
使用曲面細分的句柄,我們接下來嘗試創建一個Qt3D網格。如果我們成功了,我們就會創造并應用它的材料并進行轉換。這是通過以下方式完成的,使用了一些已經被刪除的附加函數:
// 創建網格
如果(自動網格= createMesh(tess_base)){
  自動節點 =新Qt3DCore::QEntity(rootEntity);
  節點->添加組件(網格);
  // 創建材質
  如果自動材料= createMaterial(ca->m_sStyle)){
    節點->添加組件(材料);
  }
  // 創建變換
  如果自動變換 = createTransform(路徑)){
    節點->添加組件(變換);
  }
}
如果獲得了網格,我們將創建一個節點來保存它,以及材質和變換。該節點是rootEntity.
仍然在 lambda 的主體內工作,我們還有最后一項任務。回想一下,每當您從 Exchange 讀取數據時,您必須確保通過第二次調用 getter 并提供空句柄來釋放任何關聯的內存。
使用 lambda 主體內的以下(也是最終)代碼行釋放表示項數據:
A3DRiRepresentationItemGet( nullptr , &rid);
這樣就完成了構建場景的高層實現。我們顯然為以后的步驟留下了許多實現細節,但我們已經完成了構成渲染模型所需的基本場景圖的任務。
第 2 步:程序集遍歷
從上一步來看,應該有點清楚還剩下什么要做。我們將以系統的方式攻擊每個任務,首先通過實現 ForEach_RepresentationItem 遍歷程序集層次結構。
讓我們從函數必須如何運行的簡短描述開始。在您的編輯器中打開文件 ForEachRepresentationItem.cpp,您將找到代碼的存根版本:
命名空間{
  void forEach_Impl( EntityArray const &path, std::function< void (EntityArray
  常量&)>常量&fcn ) {
    Q_UNUSED(路徑);
    Q_UNUSED(fcn);
  }
}
無效forEach_RepresentationItem(A3DAsmModelFile *model_file,
std::function< void (EntityArray const &)> const &fcn ) {
  forEach_Impl( { model_file }, fcn );
}
該函數有兩個參數。第一個是模型文件的不透明句柄。第二個參數是作為回調調用的函數對象。并且,正如我們在第 1 步中所討論的,實現預計將遍歷裝配結構并為遇到的每個表示項調用回調。
回調函數使用單個參數調用:一個EntityArray包含 Exchange 對象的不透明句柄的有序列表。該列表是順序的,從A3DAsmModelFile句柄開始,然后是一個或多個A3DAsmProductOccurrence句柄。句柄代表通向零件的裝配層次。當然,接下來就是A3DAsmPartDefinition手柄了。最后,路徑包含A3DRiRepresentationItem遇到的句柄。如果部件定義包含A3DRiSet對象(表示項集),則路徑中將有多個A3DRiRepresentationItem句柄。
公共函數立即調用一個匿名實現,該實現采用一個EntityArray而不是一個A3DAsmModelFile句柄。這樣做的用處很快就會變得清晰。該實現將只關心提供的路徑中的最后一個句柄。
一個很好的起點是一開始。所以,讓我們實現我們已經知道的情況——當這個函數被路徑中的單個對象調用時,它是一個A3DAsmModelFile句柄。在這種情況下,我們希望將每個子A3DAsmProductOccurrence句柄添加到路徑并再次調用該函數以進行更深入的挖掘。它應該看起來像這樣:
auto  const ntt = path.back();
自動類型 = kA3DTypeUnknown;
if (A3D_SUCCESS != A3DEntityGetType(ntt, &type) ) {
  返回
}
EntityArray children;
如果(kA3DTypeAsmModelFile == 類型){
  A3DAsmModelFileData mfd;
  A3D_INITIALIZE_DATA(A3DAsmModelFileData, mfd);
  如果(A3D_SUCCESS!= A3DAsmModelFileGet(ntt,&mfd)){
    返回
  }
  children = EntityArray(mfd.m_ppPOOccurrences,mfd.m_ppPOOccurrences +
  mfd.m_uiPOOccurrencesSize);
  A3DAsmModelFileGet( nullptr , &mfd);
}
對于(auto child : children ){
  自動child_path = 路徑;
  child_path.push_back(children auto child : children);
  forEach_Impl(child_path, fcn);
}
A3DAsmProductOccurrence此實現是遞歸的,并使用句柄作為 的值調用自身path.back()。讓我們通過添加 if 子句來擴充處理這種情況的代碼。

否則 if ( kA3DTypeAsmProductOccurrence == type ) {
  A3DAsmProductOccurrenceData 吊艙;
  A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData, pod);
  if (A3D_SUCCESS != A3DAsmProductOccurrenceGet(ntt, &pod) ) {
    返回;
  }
 child = EntityArray( pod.m_ppPOccurrences, pod.m_ppPOccurrences +
  pod.m_uiPOOccurrencesSize );
  A3DAsmProductOccurrenceGet( nullptr , &amp;pod);
}
從這里去哪里?這將處理整個裝配層次結構,直至節點包含零件。所以,除了上面實現中所示的處理children外,我們還必須檢查an是否A3DAsmProductOccurrence包含一個part。
確定零件是否存在有時就像檢查m_pPart產品出現結構中的字段一樣簡單。但這并沒有捕捉到共享部件實例化的常見情況。零件實例化是通過使用m_pPrototype句柄來實現的,該句柄引用了裝配節點的共享定義。如果一個節點有一個空m_pPart句柄,你還必須遞歸檢查它的原型,如果它有一個。要實現此邏輯,請在匿名命名空間的頂部添加 getPart 函數。
A3DAsmPartDefinition *getPart( A3DAsmProductOccurrence *po ) {
  if ( nullptr == po ) {
    返回 空指針;
  }
  A3DAsmProductOccurrenceData 吊艙;
  A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData, pod);
  if (A3D_SUCCESS != A3DAsmProductOccurrenceGet( po, &pod ) ) {
    返回 空指針
  }
 ; 汽車零件 = pod.m_pPart ?pod.m_pPart : getPart( pod.m_pPrototype );
  A3DAsmProductOccurrenceGet( nullptr , &pod);
  返回部分;
  }
現在,我們可以在剛剛添加的處理A3DAsmPartDefinition對象的子句中使用這個函數:
否則 if ( kA3DTypeAsmProductOccurrence == type ) {
  A3DAsmProductOccurrenceData 吊艙;
  A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData, pod);
&nbsp; if (A3D_SUCCESS != A3DAsmProductOccurrenceGet(ntt, &pod) ) {
    返回;
  }
  孩子 = EntityArray( pod.m_ppPOccurrences, pod.m_ppPOccurrences +
  pod.m_uiPOOccurrencesSize );
  如果(汽車零件= pod.m_pPart?pod.m_pPart:getPart(pod.m_pPrototype)){
    children.insert(children.begin(), part);
  }
  A3DAsmProductOccurrenceGet( nullptr , &pod);
}
我們已經完成了零件定義!所以讓我們在子句中添加部分定義遍歷:
} else  if ( kA3DTypeAsmPartDefinition == type ) {
  A3DAsmPartDefinitionData pdd;
  A3D_INITIALIZE_DATA(A3DAsmPartDefinitionData, pdd);
  if (A3D_SUCCESS != A3DAsmPartDefinitionGet(ntt, &pdd) ) {
    返回
  }
 children = EntityArray(pdd.m_ppRepItems,pdd.m_ppRepItems +
  pdd.m_uiRepItemsSize );
  A3DAsmPartDefinitionGet( nullptr , &pdd);
將我們帶到表示項目上,我們應該在其中調用回調函數,提供用于將我們帶到這里的路徑。但在我們這樣做之前,我們不能忘記作為集合的特定表示項類型。如果遇到這種對象類型,我們必須進一步遍歷。
處理所有這些細節應該看起來像這樣,作為條件的最后一個 else 子句:
 否則{
  如果(kA3DTypeRiSet == 類型){
    A3DRiSetData risd;
    A3D_INITIALIZE_DATA(A3DRiSetData, risd);
    if (A3D_SUCCESS != A3DRiSetGet(ntt, &risd) ) {
      返回
    }
    children = EntityArray(risd.m_ppRepItems, risd.m_ppRepItems + risd.m_uiRepItemsSize);
    A3DRiSetGet( nullptr , &risd);
  }其他{
    fcn(路徑);
  }
}
如果您現在感覺有點頭暈,請不要擔心,這是完全正常的。我們一起成功地實現了一個行為良好的函數,用于以對我們非常有用的方式遍歷 Exchange 產品結構。通過使用函數對象,我們將遍歷與構建場景圖的工作分開。在此過程中,您可能已經對 Exchange 的數據結構有所了解。
第 3 步:級聯屬性
讓我們繼續實現我們在步驟 1 中創建場景時使用的每個函數。我們遇到的下一個存根函數是 lambda 內部的CascadedAttributes結構。此結構在文件CascadedAddtributes.h中實現。打開它看看。您將找到一個空的構造函數和析構函數,我們現在將實現它們。
構造函數有一個參數,你現在應該很熟悉了。它是一個 EntityArray,表示從模型文件到我們感興趣的表示項的 Exchange 對象的路徑。我們的構造函數的工作是計算A3DMiscCascadedAttributesData與該路徑對應的對象。我們將按照此處的編程指南關于級聯屬性的部分提供的指導來執行此操作。
實現構造函數如下:
// 創建一個向量來保存級聯屬性句柄
QVector<A3DMiscCascadedAttributes*> cascaded_attribs;
// 創建“根”級聯屬性句柄
cascaded_attribs.push_back( nullptr );
A3DMiscCascadedAttributesCreate( &amp;cascaded_attribs.back() );
// 對于路徑中的每個實體
對于(自動ntt:路徑){
  如果(A3DEntityIsBaseWithGraphicsType(ntt)){
    // 獲取之前級聯屬性的句柄
    自動父親 = cascaded_attribs.back();

// 為這個實體創建一個新的級聯屬性句柄

    cascaded_attribs.push_back( nullptr );
    A3DMiscCascadedAttributesCreate( &cascaded_attribs.back() );

    // 將此句柄壓入堆棧
    A3DMiscCascadedAttributesPush( cascaded_attribs.back(), ntt, 父親);
  }
}
// 計算級聯屬性數據
A3D_INITIALIZE_DATA(A3DMiscCascadedAttributesData, d);
A3DMiscCascadedAttributesGet( cascaded_attribs.back(), &d );
對于自動屬性:cascaded_attribs){
    A3DMiscCascadedAttributesDelete(attrib);
}
代碼中的注釋應該合理地解釋方法是什么。
一旦構造了這個對象,我們就適當地填充了數據字段。剩下要做的就是釋放析構函數中的對象。將這行代碼添加到析構函數中:
A3DMiscCascadedAttributesGet( nullptr , &d);
僅此而已。
完成此步驟意味著您已經創建了一個簡單的結構來管理任意 EntityArray 的級聯屬性。這與我們工作流程的其余部分很好地結合在一起,并直接利用了我們實現的方法來遍歷產品結構。
第 4 步:創建網格
在下一步中,我們將介紹從 HOOPS Exchange 讀取曲面細分所需的代碼,并創建Qt3D適合渲染的相應對象。這項工作將在文件中完成Mesh.cpp。現在在你的編輯器中打開它,你會發現熟悉的 stubbed out 實現。
要開始這項任務,我們應該對傳入的句柄執行一些健全性檢查。具體來說,我們要確保它是我們要為這個基本查看工作流處理的正確的具體對象類型。
A3DEEntityType tess_type = kA3DTypeUnknown;
if (A3D_SUCCESS != A3DEntityGetType( tess_base, &tess_type ) ) {
  返回 空指針
}
// 確保我們只處理我們關心的類型
如果(苔絲類型!= kA3DTypeTess3D){
  返回 空指針
}
傳遞給函數的句柄是一個名為的基類型A3DTessBase.對于這個基本的查看工作流,我們將只處理具體類型A3DTess3D.如果傳入一個空句柄,此代碼將正確處理它并退出。
基本鑲嵌類型包含我們需要的所有派生類型共有的信息,特別是坐標數組。添加代碼以從 HOOPS Exchange 讀取基礎數據。
// 從 tess 基礎數據中讀取坐標數組
A3DTessBaseData 待定;
A3D_INITIALIZE_DATA(A3DTessBaseData,待定);
if ( A3D_SUCCESS != A3DTessBaseGet( tess_base, &tbd ) ) {
  返回 空指針;
}
A3DDouble const *coords = tbd.m_pdCoords;
A3DUns32 const n_coords = tbd.m_uiCoordSize;
坐標數據以 C 樣式數組的形式提供 - 也就是說,它是一個指向指定長度的雙精度數組的指針。大小總是能被 3 整除。
下一個任務是獲取與具體細分類型相關的數據。我們將從獲取法線向量的 C 樣式數組開始。
3DTess3D數據 t3dd;
A3D_INITIALIZE_DATA(A3DTess3DData, t3dd);
if ( A3D_SUCCESS != A3DTess3DGet( tess_base, &t3dd ) ) {
A3DTessBaseGet( nullptr , &tbd);
  返回 空指針;
}
A3DDouble const *normals = t3dd.m_pdNormals;
A3DUns32 const n_normals = t3dd.m_uiNormalSize;
還存儲在對象A3DTess3DData數組中A3DTessFaceData,每個拓撲面在精確幾何表示中一個。現在我們有了坐標和法線向量的數組,我們可以遍歷面部數據并解釋其中引用的鑲嵌。當我們遍歷面時,我們將構建一個包含位置和法線向量的單個 Qt 緩沖區,以及一個簡單的“扁平化”索引數組。
每個實例都A3DTessFaceData包含一個位標志字段,用于描述三角形數據的存儲方式。通過使用 HOOPS Exchange 生成曲面細分,我們可以合理地確保只有基本三角形存在,因此我們不必擔心在從輸入文件本身。我們通過生成曲面細分對性能造成了影響,但好處是用于讀取生成的數據的簡化代碼塊。
這是從 HOOPS Exchange 讀取三角形數據的循環。它交錯三角形頂點位置及其法線向量,這通常在可視化工作流程中使用的頂點緩沖區對象中完成。
QVector<quint32> q_indices;
QByteArray 緩沖區字節;
quint32 const stride = sizeof (float) * 6; // 3 表示頂點 + 3 表示法線
對于(自動tess_face_idx = 0u; tess_face_idx < t3dd.m_uiFaceTessSize; ++tess_face_idx ) { A3DTessFaceData const &d = t3dd.m_psFaceTessData[tess_face_idx];
  自動sz_tri_idx = 0u;
  自動ti_index = d.m_uiStartTriangulated;
  if (kA3DTessFaceDataTriangle & d.m_usUsedEntitiesFlags) {
    auto  const num_tris = d.m_puiSizesTriangulated[sz_tri_idx++];
    自動 常量pt_count = num_tris * 3; // 每個三角形 3 分
    auto  const old_sz = bufferBytes.size();
    bufferBytes.resize(bufferBytes.size() + stride * pt_count);
    auto fptr = reinterpret_cast< float * > (bufferBytes.data() + old_sz);
    對于(自動三= 0u;三<num_tris;三++){
    對于(自動垂直= 0u;垂直<3u;垂直++){
      自動 常量&normal_index =
    &nbsp; t3dd.m_puiTriangulatedIndexes[ti_index++];
      自動 常量&coord_index =
      t3dd.m_puiTriangulatedIndexes[ti_index++];
      *fptr++ = coords[coord_index];
      *fptr++ = coords[coord_index+1];
      *fptr++ = coords[coord_index+2];
&nbsp;     *fptr++ = normals[normal_index];
      *fptr++ = normals[normal_index+1];
   ;   *fptr++ = normals[normal_index+2];
      q_indices.push_back(q_indices.size());
      }
    }
  }
}
當這個循環結束時,我們留下一個原始緩沖區,其中包含身體中每個三角形的浮點頂點位置和法線向量。它們按順序存儲,不考慮共享索引值的可能性。這導致緩沖區可能比需要的更大,但簡化了我們呈現的代碼。
我們從 Exchange 獲得了我們需要的所有數據,所以讓我們自己清理一下。
A3DTess3DGet( nullptr , &t3dd);
A3DTessBaseGet( nullptr , &tbd);
我們必須通過創建Qt3D渲染剛剛捕獲的數據所需的原語來完成該功能。正如本教程開頭所提到的,我們不會花太多時間來描述細節,Qt3D,而是根據需要呈現代碼:
auto buf = new Qt3DCore::QBuffer();
buf->setData(bufferBytes);
自動幾何=新的QGeometry;
auto position_attribute = new QAttribute(buf,
QAttribute::defaultPositionAttributeName(), QAttribute::Float, 3, q_indices.size(), 0, stride);
幾何->addAttribute(位置屬性);
auto normal_attribute = new QAttribute( buf,
QAttribute::defaultNormalAttributeName(), QAttribute::Float, 3, q_indices.size(), sizeof (float) * 3, stride );
幾何->addAttribute( normal_attribute );
QByteArray indexBytes;
QAttribute::VertexBaseType ty;
如果(q_indices.size() < 65536) {
  // 我們可以使用 USHORT
  ty = QAttribute::UnsignedShort;
  indexBytes.resize(q_indices.size() * sizeof (quint16));
  quint16 *usptr = reinterpret_cast< quint16* > (indexBytes.data());
  for ( int i = 0; i < int(q_indices.size()); ++i)
    *usptr++ = static_cast<quint16>(q_indices.at(i));
}其他{
  // 使用 UINT - 不需要轉換,但讓我們確保 int 是 32 位的!
  ty = QAttribute::UnsignedInt;
  Q_ASSERT( sizeof ( int ) == sizeof (quint32));
  indexBytes.resize(q_indices.size() * sizeof (quint32));
  memcpy(indexBytes.data(), reinterpret_cast< const char * > (q_indices.data()), indexBytes.size());
}
自動*indexBuffer = new Qt3DCore::QBuffer(); indexBuffer->setData(indexBytes);
QAttribute *indexAttribute = new QAttribute(indexBuffer, ty, 1, q_indices.size());
indexAttribute->setAttributeType(QAttribute::IndexAttribute);
幾何->addAttribute(indexAttribute);
自動渲染器 =新Qt3DRender::QGeometryRenderer();
渲染器->setGeometry(幾何);
返回渲染器
完成此步驟后,您已達到一個重要里程碑。現在,您可以加載單個零件并查看它。它將以默認顏色(紅色)顯示,但應該是可見的。程序集無法正確顯示,因為我們尚未處理轉換,但加載示例文件 samples/data/prc/Flange287. prc,您應該看到以下內容:
接下來,我們將專注于使轉換正確,以便我們可以正確地可視化程序集。
第 5 步:創建轉換
現在我們在屏幕上有了一些東西,讓我們添加在世界中正確定位對象所需的代碼。完成后,我們將能夠加載和查看程序集。
在程序集文件中,程序集樹的各個節點包含本地轉換。每個變換都相對于其父級應用。這意味著,要計算每個零件的世界變換,我們必須在通向零件實例的路徑中累積每個裝配節點的變換。
根據這個描述,我們可以開始編寫 createTransform(在 Transform.cpp 中找到)的實現,如下所示:
QMatrix4x4 網絡矩陣;
對于(自動 常量ntt:路徑){
  A3DMiscTransformation *xform = getTransform(ntt);
  net_matrix *= toMatrix( xform );
}
自動xform =新Qt3DCore::QTransform();
xform->setMatrix(net_matrix);
返回xform;
這個實現完全按照我們所描述的方便的事實來描述,路徑包括指向表示項的程序集層次結構中每個對象的順序句柄列表。它使用了兩個我們仍然必須定義的函數,getTransform我們toMatrix.將在上面的匿名命名空間中實現它們createTransform.
我們getTransform.將從它的用法開始,這個函數接受一個實體句柄并返回一個A3DMiscTransformation句柄。我們必須實現這個函數來確定傳入的實體的類型,并從它返回轉換(如果存在)。
在從模型文件到表示項的路徑中,唯一可能包含轉換的對象類型是A3DAsmProductOccurrence和A3DRiRepresentationItem.我們的代碼必須處理這兩種情況。實現getTransform功能如下:
命名空間{
    A3DMiscTransformation *getTransform( A3DEntity *ntt ) {

       ; A3DMiscTransformation *result = nullptr ;

        A3DEEntityType ntt_type = kA3DTypeUnknown;
      &nbsp; A3DEntityGetType(ntt, &ntt_type );
        if ( kA3DTypeAsmProductOccurrence == ntt_type ) {
            A3DAsmProductOccurrenceData d;
            A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData, d);
            A3DAsmProductOccurrenceGet(ntt, &d);
&nbsp;           結果 = d.m_pLocation ?d.m_pLocation:getTransform(d.m_pPrototype);
            A3DAsmProductOccurrenceGet( nullptr , &amp;d);
        } else  if (ntt_type > kA3DTypeRi && ntt_type <= kA3DTypeRiCoordinateSystemItem) {
      &nbsp;     A3DRiRepresentationItemData d;
 ;           A3D_INITIALIZE_DATA(A3DRiRepresentationItemData, d);
            A3DRiRepresentationItemGet(ntt, &d);
          &nbsp; 如果(自動ti_cs = d.m_pCoordinateSystem){
             ;   A3DRiCoordinateSystemData cs_d;
  &nbsp;      ;       A3D_INITIALIZE_DATA(A3DRiCoordinateSystemData, cs_d);
              &nbsp; A3DRiCoordinateSystemGet(d.m_pCoordinateSystem, &cs_d);
  &nbsp;             結果 = cs_d.m_pTransformation;
                A3DRiCoordinateSystemGet( nullptr , &cs_d);
            }
            A3DRiRepresentationItemGet( nullptr , &d);
        }
        返回結果;
    }
}
在這個實現中有兩個值得注意的地方。也許你已經發現了它們。
首先,在 if 子句中,kA3DTypeAsmProductOccurrence,您可能已經注意到選項結果的三元運算符。如果為空,getTransform則使用原型指針遞歸調用。m_pLocation這是因為裝配節點在未被覆蓋時會從其原型“繼承”位置字段。
第二個注釋在 else if 條件本身中。因為A3DEntityGetType返回提供的實體的具體類型,所以我們必須使用這里介紹的邏輯來查看實體是否是所有可能的表示項類型中的任何一種。不幸的是,它依賴于枚舉值。我愿意接受有關處理此問題的更好方法的建議(ExchangeToolkit.h有一個名為 的函數isRepresentationItem)。
有了A3DMiscTransformation句柄,我們現在準備實現 toMatrix,它必須將句柄轉換為 aQMatrix4x4. A3DMiscTranformation是具有兩種可能的具體類型的基類句柄:A3DMiscCartesianTransformation我們A3DMiscGeneralTransformation.必須處理這兩種情況。為此,請使用以下代碼在匿名命名空間的頂部創建函數:
QMatrix4x4 toMatrix(A3DMiscTransformation *xfrm){
  如果(xfrm){
  &nbsp; A3DEEntityType xfrm_type = kA3DTypeUnknown;
    A3DEntityGetType(xfrm, &xfrm_type);
    開關(xfrm_type){
      案例kA3DTypeMiscCartesianTransformation:
        返回getMatrixFromCartesian(xfrm);
        休息;
&nbsp;     案例kA3DTypeMiscGeneralTransformation:
&nbsp;       返回getMatrixFromGeneralTransformation(xfrm);
        休息;
      默認:
  &nbsp;     throw std::invalid_argument( "意外類型。" );
        休息;
    }
  }
  返回QMatrix4x4();
}
一般變換將其矩陣表示為代表 4x4 矩陣的 16 元素雙精度數組。QMatrix4x4將這些值復制到對象中很簡單。在匿名命名空間的頂部創建以下函數來處理這種情況。
QMatrix4x4 getMatrixFromGeneralTransformation(A3DMiscGeneralTransformation *xform){
  A3DMiscGeneralTransformationData d;
  A3D_INITIALIZE_DATA(A3DMiscGeneralTransformationData, d);
  A3DMiscGeneralTransformationGet(xform, &amp;d);

  自動 常數系數 = d.m_adCoeff;
  QMatrix4x4 結果;
  for (自動行 = 0u; 行 < 4u; ++row ) {
    對于(自動col = 0u;col < 4u;++col){
&nbsp;     結果(row,col) = static_cast< float > (coeff[row + col * 4]);
    }
  }
返回結果;
處理笛卡爾變換的情況要復雜一些。我們必須讀取基本數據并執行一些元素代數來計算矩陣的值。將此代碼添加到匿名命名空間以提取笛卡爾變換數據。
QMatrix4x4 getMatrixFromCartesian(A3DMiscCartesianTransformation *xform){
  A3DMiscCartesianTransformationData d;
&nbsp; A3D_INITIALIZE_DATA(A3DMiscCartesianTransformationData, d);
  A3DMiscCartesianTransformationGet(xform, &d);
  auto  const mirror = (d.m_ucBehaviour & kA3DTransformationMirror) ?-1。: 1.;
  auto&nbsp; const s = toQVector3D(d.m_sScale);
  auto  const o = toQVector3D(d.m_sOrigin);
&nbsp; auto&nbsp; const x = toQVector3D(d.m_sXVector);
  auto  const y = toQVector3D(d.m_sYVector);
  auto  const z = QVector3D::crossProduct( x, y ) * mirror;
&nbsp; A3DMiscCartesianTransformationGet( nullptr , &d);
  返回QMatrix4x4(
&nbsp;   xx() * sx(), yx() * sy(), zx() * sz(), ox(),
    xy() * xx(), yy() * sy(), zy() * sz(), oy(),
    xz() * sx(), yz() * sy(), zz() * sz(), oz(),
    0.f, 0.f, 0.f, 1.f
  );
}
此代碼使用從對象toQVector3D創建 a的函數。它在Transform.h中實現。QVector3DA3DVector3DData
添加此功能后,您將擁有一個完整的實現以供測試。運行您的應用程序并加載一個程序集文件,例如data/prc/_micro engine.prc。
第 6 步:創建材料
本教程的最后一步是創建代表我們從 Exchange 讀取的樣式數據的 Qt3D 材質。要確定零件的外觀,我們必須依賴從第 3 步的級聯屬性助手中檢索到的數據。回想一下,可見性是由通過裝配的特定路徑決定的。應以相同的方式計算應繪制的部分樣式。在createScene,我們調用函數的主體中,createMaterial并從我們的級聯屬性助手中傳遞樣式數據。

打開文件材料。cpp 這樣我們就可以開始實現該功能了。您將看到創建了默認材質,這就是所有部件都顯示為紅色的原因。傳入此函數的樣式數據對象可以通過 3 種不同的方式指定材質信息。最簡單的情況是單色。讓我們從處理那個案例開始。
更新函數如下:
Qt3DCore::QComponent *createMaterial( A3DGraphStyleData const &amp;style_data ) {
  自動材質 =新Qt3DExtras::QDiffuseSpecularMaterial();
  材料->setDiffuse(QColor(“紅色”));
  如果(!style_data.m_bMaterial){
  &nbsp; auto&nbsp; const a = style_data.m_bIsTransparencyDefined ?style_data.m_ucTransparency:255u;
    材料->setDiffuse(getColor(style_data.m_uiRgbColorIndex, a));
  }
  退回材料;
}
在這里,我們使用了一個我們仍然必須實現的getColor.函數,這個函數接受一個 RGB 顏色索引(和 alpha)并在上面的匿名命名空間中返回一個QColor.實現getColorcreateMaterial.

命名空間{
  QColor getColor(A3DUns32 const &color_idx, int  const &a) {
    如果(A3D_DEFAULT_COLOR_INDEX == color_idx){
      返回QColor( 255, 0, 0 );
    }
    A3DGraphRgbColorData rgb_color_data;
    A3D_INITIALIZE_DATA(A3DGraphRgbColorData, rgb_color_data);
    A3DGlobalGetGraphRgbColorData(color_idx, &rgb_color_data);
    自動 常量&r = rgb_color_data.m_dRed;
   ; 自動 常數&g = rgb_color_data.m_dGreen;
    自動 常量&b = rgb_color_data.m_dBlue;
    返回QColor( static_cast<int>(r * 255), static_cast&lt;int>(g * 255), static_cast<int>(b * 255), a);
  }
}
顏色數據通過整數索引存儲在 中。這個實現首先檢查索引是否等于A3D_DEFAULT_COLOR_INDEX,表示沒有分配顏色。在這種情況下,我們返回紅色,你會認為這是我最喜歡的顏色,但你錯了。從 Exchange 的雙精度定義創建QColor對象是一件簡單的事情,自然而然。
通過此實現,您會發現許多部件現在將加載并以正確的顏色顯示。
讓我們添加一個額外的案例來處理樣式數據可以采用的兩種或三種形式。使用以下 else 塊更新 createMaterial 中的 if 子句。
否則{
  A3DBool is_textuture = false ;
  A3DGlobalIsMaterialTexture(style_data.m_uiRgbColorIndex, &is_texuture);
  如果(!is_textuture){
    A3DGraphMaterialData material_data;
&nbsp;   A3D_INITIALIZE_DATA(A3DGraphMaterialData, material_data);
    A3DGlobalGetGraphMaterialData(style_data.m_uiRgbColorIndex, &material_data);
    auto  constambient_color = getColor(material_data.m_uiAmbient, static_cast<int>(255 * material_data.m_dAmbientAlpha));
    auto  constdiffuse_color = getColor(material_data.m_uiDiffuse, static_cast<int>(255 * material_data.m_dDiffuseAlpha));
    if (ambient_color.alpha() == 255 &&diffuse_color.alpha() == 0) {
    材料->setDiffuse(ambient_color);
    }否則 if (ambient_color.alpha() == 0 &&diffuse_color.alpha() == 255) {
&nbsp;     &nbsp; 材料->setDiffuse(diffuse_color);
    }
    材質->setSpecular(getColor(material_data.m_uiSpecular,material_data.m_dSpecularAlpha));
  }
}
這可以處理稍微復雜的材質定義。處理紋理超出了本基本查看教程的范圍。我們已經處理了兩種最常見的樣式定義情況,并且我們正在返回一個合理的 Qt3D 材料。
結論

恭喜!您已經完成了涵蓋基本查看工作流程的非常詳細的教程。在此過程中,您了解了 裝配結構及其對零件顯示方式的影響。您學習了如何閱讀曲面細分的基本形式并將其解釋為一種常見的基于緩沖區的查看技術。我們通過讀取變換數據將對象放置在正確的位置和方向上,最后為每個部分應用合理的材料,使它們看起來像預期的那樣。

了解HOOPS技術詳情歡迎進入


慧都科技是中國地區的指定經銷商,提供售賣、HOOPS 60天的免費試用、中文技術支持,同時提供工業3D解決方案如果您對此感興趣,歡迎電話咨詢:023-68661681

↓ ↓ 關注“HOOPS技術”微信公眾號,了解HOOPS技術的真實應用 ↓ ↓



標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
相關產品
控件
  • 產品功能:三維矢量圖處理
  • 源 碼:非開源
  • 產品編號:14225
  • 當前版本:V2025.5.0 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Tech Soft 3D 正式授權
  • ">HOOPS Exchange

    更快、更準確的CAD數據轉換工具包,3D數據格式轉換首選解決方案。

    控件
  • 產品功能:三維矢量圖處理
  • 源 碼:非開源
  • 產品編號:14227
  • 當前版本:V2025.5.0 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Tech Soft 3D 正式授權
  • ">HOOPS Communicator

    工業級高性能3D渲染引擎,專注于Web端工程圖形渲染。

    控件
  • 產品功能:三維矢量圖處理
  • 源 碼:非開源
  • 產品編號:12161
  • 當前版本:V2025.5.0 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Tech Soft 3D 正式授權
  • ">HOOPS Visualize

    強大的工業級3D渲染引擎,為您打造出眾的工程應用程序

    控件
  • 產品功能:三維矢量圖處理
  • 源 碼:非開源
  • 產品編號:14230
  • 當前版本:V2025.5.0 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Tech Soft 3D 正式授權
  • ">HOOPS Publish

    讓您的應用可將3D數據以原生3D PDF、HTML和標準CAD格式進行發布。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    主站蜘蛛池模板: 日韩电影精品 | 丝袜在线视频 | 在线观看三级片国产 | 成人一二区 | 狼人干视频| 天堂网在线免费资源 | 日本高清www | 成人国产片在线观看 | 狼友视频网 | 午夜福利国产 | 天天干天天日天天 | 成人免费一区二区三区 | 玉足一区| 国产夜精品 | 日韩欧美奸 | 日韩日韩日韩日韩 | 日韩精品在线第二页 | 在线一区欧美 | 夜趣福利视频导航 | 国产三级片大全免费 | 人人干人人摸 | 老湿影院免费 | 麻豆视频在线观看 | 国产资源网 | 午夜成年| 国产精品自拍视频一区 | 欧美福利| 欧美在线视频91 | 日韩精品 | 日韩欧美亚洲国产ay | 欧美性爱第七页 | 午夜韩日 | 日韩欧美伦理三级 | 日韩欧美视频免费看 | 日韩福利视颁精品专区 | 在线色网 | 日韩一二三区免费视频 | 日韩巨乳自微片 | 日韩欧美二 | 久久这里只有精品9 | 午夜免费成人电影 | 天天干天天日天天射 | 偷拍自拍在线观看 | 三级片无码视频 | 欧美性爱www | 亚洲综合瑟瑟 | 日韩一区二区三区av | 国产精品wwww | 97色色最新 | 无码av网| 国产成人国产三级 | 日韩无码不卡 | 日韩精品在线免费观看 | 日韩视频欧美在线 | 午夜男女网站 | 日韩高清在线视频 | 国产精品美女www | 日韩在线视频 | 性国产在线观看 | 日韩大片在线观看 | 日韩不卡在线观看 | 欧美成人免费观看 | 久久不卡影院 | 人人操人人干超碰 | 国产人妻人伦精品九色 | 在线欧美一区 | 99自拍视频在线 | 国产jk白丝在线观 | 97色色网| 玖玖精品电影 | 亚洲综合一二三 | 日韩精品片 | 日韩亚州欧美中 | 亚洲国产免费AV | 日韩国产综合在线 | 麻豆网站在线观看 | 成人毛片网站 | 丰满少妇一区二区 | 欧美丝袜性爱 | 午夜国产 | 午夜福利成人视频 | 精品处破女学生 | 国产情侣片 | 欧美精品精品一区在线 | 午夜福利在线视频 | 人妖国语成人网 | 成人三级影片 | 91自拍在线 | 国产在线视频网站 | 成人午夜A片| 欧美另类自拍 | 五月婷婷六月丁香在线 | 日韩v欧美v中文在线 | 在线观看午夜福利 | 日韩电影二区 | 日韩伦理视频 | 91丝袜在线观看 | 三级无码在线观看视频 | 午夜成人精品不卡影院 | 一区日韩电影网站电影 | 都市激情亚洲欧美 | 高清无码专区 | 91人人干 | 午夜伦理电影院 | 97色蜜桃 | 欧美性网| 一夜七次郎首页视频 | 日韩电影高清 | 精品国产成人 | 久久不卡网 | 日韩成年人电影 | 日韩精品视频免费网址 | 日韩在线中文 | www.欧美精品 | 午夜成人福利片 | 又粗又大又黄又爽 | 日韩欧美啪啪操 | www.偷偷撸 | 成人无码18在线观看 | 日韩成年人 | 成人精品第一区国产 | 成人大全在线观看 | 强奸乱伦小视频 | 久久资源综合 | 国产尤物视频在线观看 | 日韩三级 | 韩国理论午夜 | 95在线视频 | 国内精品福利视频 | 岛国大片在线一 | 日韩另类国产 | 91页性爱| 另类视频专区 | 欧美日韩一二区 | 日韩视频在线观看免费 | 97色色色 | 日韩国产欧美一区 | 日韩性爱免费视频 | 国产在线国产 | 黑丝后入91 | 日韩在线人成电影大全 | 麻豆传媒操逼 | 日逼视频网站 | 污网站在线观看 | 国产在线拍 | 日韩免费视频 | 国产精品美女 | 囯产精品一品二区三区 | 激情文学综合网 | 天天日天天干天天摸 | 精品久久久久性 | 美女一区| 黄色成人大片色 | 玖玖玖玖玖精品网站 | 91手机自拍 | 日韩成片 | 国产大片a| 日韩三夜精品在线播放 | 日本在线www | 成人午夜免费福利 | 日韩精品一线二线 | 成人黄色免费观看 | 午夜涩涩网 | 国产91色| 日韩欧美国产传媒 | 天堂视频免费在线观看 | 日韩欧美一级大片 | 国产精品激情综 | 国产裸体美女免费 | 国产高潮白浆 | 一区不卡在线观看 | 国产21区| 一区二区视频在线观看 | 日日干日日操 | 中日韩三级片 | 97超碰资源总站 | 日韩欧美高清 | 午夜成人在线视频观看 | 成人在线精品 | 日韩欧美亚洲免费在线 | 日韩成人精品在线 | 国产在线不| 午夜成人福利视频 | 强奸乱伦小说视频 | A片免费网址 | 成人午夜福利在线看 | 成人开心网 | 日韩美女国产a人成片 | 亚洲无码卡一卡二 | 成人亚洲精品一区二区 | 国产三级资源 | 日本特级a毛 | A级毛片一区二区三区 | 亚洲成人影片在线观看 | 成人免费黃色大片 | 变态乱伦 | 黄色成人免费观看 | 日韩精品亚洲每日更新 | 三级网站免费 | 激情另类综合 | 鲁鲁久久| 最新自拍视频 | 日韩福利在线 | 本道久久| 日韩AV一二三 | 国产精品乱码高 | 成人国产精品免费视频 | 日本三级免费看 | 超碰成人电影 | 日韩欧美在线网址 | 成人午夜二级一区二区 | 97人人操人人 | 无码在线我们 | 午夜福利在线观看网站 | 毛片A级成人片 | 加勒比无码人妻 | 日韩在线永久免费播放 | 日韩欧美综合一区 | 国产性爱在线观看 | 色五月激情综合网 | 91在线视频免费观看 | 超碰91人人 | 日韩视频免费在线 | 日韩欧美丝袜 | 日韩精品一二三 | 成人毛片在线观看 | 亚洲激情综合网 | 91丝袜国产在线观看 | 日韩美欧高 | 国产美女精品一区 | 日韩伦理在线免费观看 | 日韩桃色激情综合 | 成人福利美女观看视频 | 玖玖爱在线免费视频 | 国产高清网站 | 麻豆网页| 国产片在线观看 | 成人日韩欧美在线 | 激情图片小说在线视频 | 日韩一级在线播放 | 夜夜夜欧美 | 夜色福利在线视频 | 国产激情一区二 | 日韩视频免费在线 | 日韩福利视频网 | 国产精品探花 | 日韩亚亚洲一区二区师 | 国产夫妻在线视频 | www.日| 日韩论理 | 日韩欧美亚洲 | 男女爱爱麻豆 | 国产99久一区二 | 日韩视频高 | 午夜福利88| 六月婷婷五月天 | 激情小说图片亚洲 | 日韩有码在线视频 | 三级毛卡片免费看 | 91影院网| 97涩涩的网站 | 国产97资源| 色情午夜码一区二区 | 日韩精品视频免费 | 午夜理伦三级做爰电影 | 成人做爰黄片免费观看 | 国产日产欧产美 | 偷拍自拍视频网站 | 91岛国| 日韩高清在线中 | 国产片在线播放 | 国产成年女 | 波多野结超 | 日韩国a级片 | 日本乱伦三级片 | 成人瑟瑟在线观看 | 91视频高清| 日韩电影天堂 | 日韩大乳视频中文字幕 | 成年人拍拍拍 | 日本中文字乱码字幕 | 三级精品乱伦高清 | 国产aⅴ自拍 | 日本1234区| 成人国产视频网站 | 国产精品无码在线观看 | 国产午夜高清无 | 成人涩涩小片 | 国产热综合 | www.日本在线观看 | 国产对白刺激 | 日韩欧美一页综合区 | 中国成人三级片 | 亚洲国产成人精 | 精品日韩av | 国产高潮做爱在线观看 | 欧美日韩一区二区不卡 | 久久这里精品 | 三级黃色男人的天堂 | 国产精品自拍露脸视频 | 超碰人人超碰人人 | www,东京热| 日韩深夜视频 | 激情小说图片区 | 九九九热精品 | 日韩国产中文综合 | 91视频综合 | 激情小说亚洲 | 深夜福利在线观看视频 | 成人国内精 | 日韩欧美亚洲免费 | 欧美操人| 国产91福利在线精 | 三级在线观看亚 | 日韩欧美电影网 | 狠狠干天天| 爱豆视频在线看 | 变态丝袜另类在 | 玖玖爱精品| 国产91精 | 成人A级毛片免费网站 | 三级网站网址 | 五月天婷婷丁香 | 国产精品美女一区 | 成人国产观看 | 中国三级片国产网站 | 天天操夜夜干 | 免费视频福利导航 | 国产人妖在线免费观看 | 日韩成人一区二区 | 国产av大全| 亚州精品无码A | 国产浓毛大泬熟妇视频 | 精品这里只有精品 | 草草孚力医院 | 亚洲日韩精品国产 | 亲子伦一区二区三区 | 久久中国 | 五月天婷婷影院 | 五月婷婷六月丁香在线 | 日韩aⅴ精品国内在线 | 日本草莓视频免费 | 色网在线| 国产性爱影院 | 毛片毛片| 国产αv无 | 亚洲激情综合网 | 福利姬下载 | 国产精品自拍视频 | 成人三级在线观看视频 | 日韩亚洲电影 | 日韩伦理无码 | 玖玖爱网站 | 国产91素人搭讪系 | 日韩在线入口 | 欧美精品二区三区 | 91社区网| 日韩人体| 精东AV| 成人免费午夜 | 人妻精品一区二区 | 欧美精品午夜 | 日韩伦理网 | 日韩aⅴ在线观看国 | 亚洲啪啪网 | 日韩经典亚洲专区 | 五月婷婷六月丁香花 | 国产区第一页 | 日韩亚洲制服丝袜 | 三级国产免费 | 日韩中文亚洲 | 91视频人人看 | 韩日精品视频 | 足交网站在线观看 | 欧美在线视频精品 | 欧美日韩www | 精品男女在线观看 | 国产乱伦中文字幕 | 日韩v码视频| 国产精品成人精品 | 国产美女免费观看 | 日韩视频手机在线 | 成人精品欧美日韩 | 日韩成人影院在线观看 | 国产91原| 午夜肏屄网 | 成人亚洲性情 | 深夜福利免费在线观看 | 日韩精品高清 | 日韩午夜福利 | 国产成a | 国产ts视频 | 午夜精品成人无码 | 激情文学图片小说视频 | 天堂毛片在线观看 | 久草资源在线观看 | 日韩成人一级视频 | 成人潮片视频网站 | 深夜福利片 | 三级高清视频 | 午夜成人视频免费观看 | 91中文精品| 日韩喷朝 | 成人理伦A级A片 | 91在线网| 日韩理论在线视频 | 久久99国 | 蜜桃传媒网址 | 日日夜夜爽 | 日韩亚洲欧美专区 | 日韩理论电影 | 午夜黄色福利视频 | 国产91福利在线精 | 国产激情图区 | 六月丁香五月 | 国产成人三级视频 | 97超操| 视频一区二区欧美 | 玖玖爱网站| 国产黄色大全 | www内射| 日韩综合在线一区二区 | 国产a∨免费精品视频 | 国产精品水多 | 精品国产三级网址 | 欧美视频一区在线 | 福利姬喷水在线观看 | 日韩免费视频一区二区 | 尤物网站在线观看 | 成人福利午夜A片 | 国产三级视频在线播放 | 色欧美视频| 日韩精品高清无码 | 97超碰资源总站 | 福利视频午夜 | 午夜影院私人 | 国产日本韩国 | 美女爱爱网 | 国产v亚洲v天堂无 | 午夜福利视频网 | 国产四虎 | 国产sm重口| 午夜免费电影 | 91熟女资源 | 美女视频黄全免费 | 深夜成人免费福利 | 国产性关系在线观看 | 午夜在线XYZ| 日韩草莓天堂在线观看 | 日韩国三级 | 日韩免费在线中文字幕 | 日本午夜视频在线观看 | 高潮国产喷水白网站 | 日韩电影播放 | 国产va免费精品观看 | 国产播放 | 五月亚洲 | 欧美性爱第2页 | 国产宅男网 | 国产妖精视频 | 欧美国产日韩一区二区 | 成人小说视频图片 | 无码高清不卡在线 | 亚洲国产网站在线观看 | 国产二区视频 | 午夜家庭影院 | 国产又黄又爽视频 | 日韩综合鲁一 | 国产色三线免费 | 国久久久 | 东京热大交乱在线观看 | 久久不射视频 | 操欧洲女人 | 成人免费网 | 午夜福利影院在线观看 | 成人精品一区 | 欧美在线精品一区 | 福利导航在线 | 成人国产精品高清在线 | 成人高清免费国产网站 | 成人无码视频 | 国产精品wwwww | 国产大片线上免费看 | 综合视频久久 | 久久er| 日韩乱码中文字幕 | 成人午夜福利网 | 福利精品| 在线一区二区视频 | 日逼视频网 | 日韩视频 | 麻豆免费网站 | 网站久久 | 成人午夜精品在线观看 | 国产福利在线视频 | 性做久久久久免费观看 | 日韩aⅴ在线观看 | 日韩精品射 | 人妻精品一区二区 | 性爱在线观看网站 | 日韩亚洲欧美a∨ | 成人午夜国产福利 | 成人免费AAA片 | 免着一級a一片 | 日韩欧美国产高清蜜月 | 国产cd视频在线播放 | 91视频免费观看 | 成人福利 | 一夜七次郎首页视频 | 国产在线资源站 | 97久久国产| 午夜激情成人 | 国产性爱网站 | 国产久青| 国产成人在线免费观看 | 日韩动漫在线一区二区 | 国产91成人在 | 国产一区视频在线播放 | 老湿影院免费观看 | 91网入口| 午夜日韩影院 | 第一福利精品导航 | 九九色播| 国产三级三级三级 | 人人摸人人操人人干 | 黑人精品| 日韩欧美综合一区 | 午夜成人福利初夜 | 精品国产成人XXXX | 亚洲激情| 午夜精品成人无码 | 这里都是精品 | 欧美成人精品AAA | 高清无码毛片 | 午夜无码在线观看视频 | 深夜成人视频在线观看 | 国产又爽又黄A片 | 日韩精品一区五区九区 | 激情小说另类图片 | 蜜桃麻豆视频 | 日韩精品免费观看 | 国产三级三级三级 | 欧美精品熟女孕妇交 | 亚洲日本三级 | 福利深夜免费导航 | 自拍偷拍国产精品 | 午夜视频www | 岛国av网址 | 久草网站| 国产色护士 | 无码不卡一区 | 亚洲精品国产精品国自 | 国产精品4 | 深夜福利av | 日韩一区二区在线电影 | 国产人妖兮 | 日韩精品一区国产精品 | 三级黄色网址 | 激情小说图片综合网 | 日本黄色小说网站 | 国产主播网 | 国产专区第一页 | 成人动漫免费视频 | 午夜成人免费视频 | 国产资源站 | 国产肥乱精 | 欧美另类自拍 | 刘亦菲换脸性做爰A片 | 美女毛片AV | 欧美性爱视频网站 | 激情婷婷网 | 国产宅男网 | 精品动漫一区 | 日韩欧美另类精品在线 | 欧美在线网| 密桃成人无码 | 老湿机网站在线观看 | 亚洲国产精品免费 | 高潮久久久久久久不卡 | 私拍在线 | 青青青草视频 | 国产熟女 | 久久国产精品影院 | 国产视频高清 | 一区二区在线视频 | 尹人国产| 中国三级片完整版 | 国产美女| 国产午夜在线视频 | A级视频| 中国三级片完整版 | 在线无码不卡免费 | 午夜专区 | 精品处破女学生 | 福利姬视频免费观看 | 激情综合网五月婷婷 | 亚洲国产成人无码 | 国产午夜| 黄色天堂网 | 日韩大片高清播放器大 | 欧美三级网站 | www.黄色av| 成人动漫一区 | 日韩中文字幕无线码 | 日韩a视频 | 日韩精品第30页 | 91影院在线观看 | 日韩一中文字幕 | 69国产精品成人无码 | 午夜美女影院 | 天美mv观看在线完整 | 国产成人不卡 | 国产三级片在线观看 | 日韩欧美色 | 日韩欧美综合一二三区 | 日韩电影区 | 色婷婷一区二区三区 | 综合国产欧美 | 激情文学区 | 午夜AV电影| 夜夜操夜夜 | 日韩中文有码高清 | 国产在线国产 | 深夜福利视频看看 | 久久国产一区 | 五月婷婷丁香综合 | www天堂在线观看 | 国产午夜伦理 | 亚洲综合另类 | 国产无码网 | 四房综合五月丁香 | 中文字幕第42页 | 国产在线美女 | 可以看毛片的网址 | 日韩精品欧美在线成人 | 日韩精品欧美在线成人 | 国产亚洲高清在线 | 国产ts人妖网站 | 另类中文字幕 | 无码免费不卡 | 国产精品蜜臀 | 三级视频在线观看播放 | 午夜男女爽爽爽 | 在线欧美日韩 | 天天摸天天操 | 午夜成人精品视频在线 | 日韩在线小视频 | 午夜在线成人 | 六月婷婷五月天 | 在线麻豆 | 超碰97在线资源站 | 人人草人人爱 | 成人片0371电影 | 国产精品v一区 | 日韩精品一区高清视频 | 天天干夜夜橾 | 国产又大又黄又猛又爽 | 城中村嫖妓正在播放 | 屁屁国产第一页 | 囯产精品一品二区三区 | 日韩免费特黄一二三区 | 国产精品成熟老女人 | 欧美精品首页 | 午夜艹逼 | 91精品综合 | 三级网站在线免费观看 | 任我操在线视频 | 欧美在线性爱视频 | 久热久热 | 国产精品在| 日韩一二三区 | 五月婷婷综合网 | 69免费福利视频 | 日韩美女一区二区三区 | 成人福利在线 | 日韩国产欧美在线 | 日韩免费成人网站 | 国产cd视频在线播放 | 日韩欧美亚洲三级在线 | 午夜成人视频 | 成人免费软件 | 91影视免费版| 成人无码涩 | 自拍偷拍第八页 | 男女啪啪啪网站 | 日韩一二三区 | 欧美视频色 | 黄色网址播放 | 精品国偷自产国产一区 | 强奸乱伦首页 | 丁香激情网 | 三级在线观看免费播放 | 成人免费观看男女 | 日韩欧美一区二区尤物 | 国产精品成 | 另类激情文学 | 国产精品禁 | 日韩欧美在线观看免费 | 久操香蕉 | 日韩最新国产精品网站 | 国产办公 | 麻豆精品在线免费观看 | 日韩日产欧美亚洲综合 | 天天看天天操 | 白丝制服| 国产激情视 | 自拍偷拍第25页 | 午夜利视频 | 三级强奸网站 | 国产九九成人 | 欧美乱妇高清无乱码 | 日韩成人深夜在 | 成人无码大片在线观看 | 成人一区二区三区 | 国产网站三级片 | 午夜国产精品AV | 久久骚网 | 99精品视频在线观看 | 日韩美女舔大棒 | 深夜福利在线免费 | 福利1区 | 岛国无码av| 国产无码久久久 | 涩涩在线观看视频 | 午夜色福利 | 午夜无码在线观看 | 日韩国产毛片 | 最新东京热网站 | 综合网中文字幕 | 成人午夜精品在线观看 | 精品一区二区三区人妻 | 日韩小视频在线播放 | 尤物网址 | 国产传媒自拍 | 一区二区在线视频 | 国产黄色av| 日韩一级性生活片 | 北条麻妃一区二区三区 | 97欧美在线 | 午夜成人网站在线观看 | 人人摸人人干 | 日韩制服乱伦影片 | 日韩成人国产精品视频 | 午夜成人精品视频 | 三级视频院 | 日韩区一区二区三区四 | 97青青草 | 成人一区二区不卡在线 | 日屄视屏 | 日韩电影国产一区 | 三级黄色在线播放 | 成人手机视频在线观看 | 欧美日韩在线一区二区 | 精品二三四区 | 激情小说亚洲 | 免着一級a一片 | 人人超碰人人 | 麻豆传媒视频入口 | 国产办公室在线 | 岛国电影网 | 日韩精品在线 | 天天插夜夜干 | 国摸冰冰 | 日韩精品第十页 | 视频一区二区三区免费 | 字幕中文99 | 日韩精品影视 | 狠狠操天天操 | 日韩中文午夜伦理片 | 超碰人人摸人人干 | 91探花国产 | 在线观看加勒比网站 | 国产8区 | 国产性爱电影在线观看 | 免费三级网址 | 成人精品丝 | 国产h视频在线观看 | 国产在线视频区 | 高清无人区一区 | 日韩激情免费观看大片 | 日韩色图在线观看 | 日韩第一视频 | 日韩在线观看第一页 | 日韩亚洲国产综合高清 | 成人无码区免费AⅤ片 | 伊人伊人伊人 | 欧美精品免费看 | 久久这里只有精品6 | 国产精品久线在线观看 | 亚洲AV国产精品 | 欧美性爱一区 | 国产大片一区 | 97影视下载| 91桃色一| 国产91精品夜未央! 国产91精品新入口 国产91精品系 | 国产精品免费 | 日韩午夜福利影院 | 日韩欧美综合在线观看 | 激情综合在线 | 韩国福利专区 | 极品美女在线 | 成人激情网 | 国产寡妇性视频 | 福利精品 | 91视频网址 | 日韩在线观看不卡 | 人妖在线国产探花 | 国产成人免费观看 | 国产二区自拍 | 日韩大片在线观看 | 久热久草 | 玖玖精品 | 日韩在线视频一区 | 日韩有码第一页 | 深夜福利久久 | 日韩伦理电影 | 日韩精品 在线视频 | 成人免费黄片 | 东京热av无码 | 成人高清在线播放视频 | 日本丰满熟妇xxx | 成人精品第一区国产 | 视频一区二区三区在线 | 成人国产中文欧美 | 成人免费ā片在线观看 | 乱伦一区二区三区 | 日韩成人AV一区二区 | 岛国av在线播放 | 国产性爱大片 | 亚洲精品网站无码av | 日韩中文网 | 欧美精品一区在线发布 | 91大神精品| 国产狼友视频在线观看 | 三级AV网| 最新无码网站 | 深夜性爱福利 | 黑人东京热| 日韩福利区| 午夜成人影院在线观看 | 午夜精品福利在线观看 | 老湿机午夜福利 | 天天操天天操 | 超碰地址| 国产人妻14p| 成人无码毛片 | 亚洲精品小电影 | 午夜成人免费视频 | 日韩av高清一区 | 成人做爰黄片免费 | 日韩精品福利片午夜免 | 日韩欧中文字幕精品 | 欧美xxxx视频| 三级片国产网站 | 日韩人妖精品一区二区 | 日韩精品片| 午夜视频专区 | 偷拍自拍第5页 | 国产精精品 | 三级黄色的视频 | 日本道不卡| 神马九九| 超碰人人操人人干 | 国产三级大片 | 加勒比人妻 | 超碰97在线免费观看 | 成人三级影片 | 91香蕉下载| 国产女主播在线视频 | 成人午夜电影在线观看 | 国产真实乱人偷精品 | 中国三级黄色完整版 | 国产在线看不卡 | 午夜韩日 | 久草资源| 日韩穴穴网 | 日韩视频观看一区二区 | 色97色| 成人精品福利 | 日韩字幕在线观看 | 日韩激情不卡一 | 日韩成人观看 | 日韩国产中文欧美 | 老湿影院免费体验区 | 午夜剧场伦理 | A级片网站 | 日韩精品一区二区av | 亚洲国产精品成人综合 | 中文字幕日本网站 | 国产精品高潮在线观看 | 尤物视频在线观看视频 | 成人免费高 | 狠狠干夜夜 | 日韩国产一区二区 | 日韩国产精品区 | 日韩在线猛交 | 国产精品欧美精品 | 国产精品对白 | 亚洲一页| 国产免费网站 | 欧美成人在线网站 | 看毛片网址 | 国产在线免费看 | 午夜免费电影 | 国产精品无码白浆高潮 | 一区二区传媒有限公司 | 成人一级 | 91av网址| 国产在线无码不卡 | 午夜爽爽爽 | 亚州看片 | 国产性欲在线观看 | 国产无码三级 | 福利久草 | 国产精品第12页 | 屁屁国产第二 | 人妖网地 | 三级黄色毛片 | 91宅男| 国产一页| 日韩在线va中文字幕 | 黑人一区二区 | 国产中文字幕第一页 | 成人免费毛片片v | 玖玖爱在线观看视频 | 国产成人影片在线观看 | 日韩另类!| 自拍偷拍视频网 | 国产毛片视频 | 免费A欲毛片| 日韩一区二区三区激情 | 精品国产第一页 | 无码不卡视频在线观看 | 黑人东京热| 日韩在线观看影院 | 91社中文| 久操精品在线观看 | 日韩欧美无砖专区 | 欧美国产日韩在线观看 | 成人午夜福利免费视频 | 国产妓女AV | 国色综合 | 欧美三区 | 国产三级HD三级精品 | 国产aⅴ自拍 | 成人精品日韩一区二区 | 无码中文字幕 | 尤物福利视频 | 日韩逼穴美女区欧美 | 福利电影一区 | 成人看黄 | 日韩性生活| 第一福利视频导航 | 日韩专区一区二区 | 国产精品女同久 | 国产aⅴ自拍 | 成人写真私拍在线视频 | 国产熟女软件 | 日韩一区二三区无 | 日韩午夜电影 | 欧美另类变态 | 午夜视频国产 | 天天爽夜夜爽 | 网站91免费入口 | 超碰97人与善交 | 日韩亚洲电影网 | 国产欧美在线 | 日韩精品在线二区 | 免费看无码成人A片 | 日韩免费在线 | 国产经典AV| 日韩精品国产 | 一伦一色一性一交一配 | 欧美成人在线观看 | 97资源| 女主播一区 | 日韩在线观看中文字幕 | 国产精品乱视频 | 国产91大片精 | 亚洲成人A片 | 另类网址 | 国产95在| 日韩欧美精品有码在线 | 91视频网址 | 丁香婷婷在线观看 | 偷拍自拍视频在线观看 | 91视频原创 | 午夜成人免费视频 | 91自拍在线 | 午夜免费成人影院 | 亚洲砖区区免费 | A级毛片一区二区三区 | 在线色网| 激情婷婷网| 午夜达达兔秋霞 | 日韩精品字幕 | 无码精品国产19 | 国产v片免费播放 | 日韩精品视频成人 | 日韩国产欧美综合在线 | 日韩欧美中文字幕公布 | 天堂√5在线观看 | 国产成人久久久久久久 | 久久青青| 日韩欧美另类在线 | 国模一区二区 | 国产电影三级在线观看 | 国产ts人妖网站 | 狼友视频网 | 午夜激情福利视频 | 成人韩漫在线 | 日本不卡久久 | 岛国免费在线观看 | 成人小说在线视频 | 中国人妖和人妖ⅩXX | 日韩精品簧片大全 | 欧美丰满大乳人妻无码 | 日韩一区二区专区 | 国产女和黑人 | 日韩一区二区在线电影 | 无码电影网站 | 马上射日韩 | 日韩理论在线播放 | 日韩三夜精品在线播放 | 韩国三级少妇 | 日韩女人性开 | AV囯产AV| 日韩国产v片一区二区 | 日韩激情无遮掩视频 | 91精选| 人人看97| 成人a无码 | 国产色产综合色 | 天堂网最新在线 | 夜色福利导航 | 国产精品自拍偷拍 | 做爱网站在线播放 | 日韩在线国产播放 | 日韩理伦片片在线 | 91视频在哪看 | www偷拍自拍| 日韩二区欧美三区 | 日韩字幕在线观看 | 久久国产精品一区二区 | 日韩综合第六页 | 日屄视频网站 | 三级网站观看 | 日韩高清AV一区 | 黄色男人的天堂 | 成人国产射精a∨在线 | 国产性爱一级 | 日韩理论中文字幕 | 92下载站| 人妖综合| 福利在线新资源 | 日韩精品激情中文一区 | 强奸乱伦小说视频 | 国产午夜亚洲精 | 夜夜操天天操 | 中出第一页 | 日韩二区精品在线 | 国产熟女av | 精品国产一二区 | 91福利小视频| 狼友福利在线播放 | 激情五月婷婷综合网 | 日韩精品电影一区二区 | 日韩精品在线亚洲 | 精东麻豆一级A片 | 日韩在线美女一区二区 | 成人资源在线观看 | 日韩亚洲制服欧美综合 | 夜夜夜夜夜夜操 | 欧美另类高清 | 日韩免费一级a毛 | 麻豆蜜桃精品无码视频 | 日韩精品在线第二页 | 三级网站网址 | 国产丝袜人妖在线 | 夜夜爽天天干 | 日韩成人视频网 | 日韩欧美一区电影 | 日韩高清区 | 真实国产亂伦在线视频 | 九九九成人 | 亚洲女人网 | 日韩中文字幕精品 | 玖玖爱综合网 | 强奸乱伦首页 | 成人国产精品秘 | 日韩午夜片 | 超碰人人超碰人人 | 国产精品亚洲精品 | 爽爽爽影院 | 婷婷色AV| 老熟女乱婬一区二区 | 红楼AV| 成人伦理动漫在线观看 | 日韩精品第二页 | 日韩电影免费在线观看 | 97青青草原| 日屄视频播放 | 91精品久久久久久久 | 成人午夜在线看片 | 日韩精品 在线视频 | 久久免费视频7 | 性交网站在线观看 | 日本不卡一二区 | 操逼视频123| 日韩精品欧美精品 | 日韩日韩日韩 | 学生妹Av网站 | 中文字幕免费毛片 | 中国国产精品 | 日韩欧中文字幕精品 | 日韩电影天堂网 | 午夜性爱视频网站 | 国产xxx在线 | 超碰成人免费电影 | 成人毛片在线免费观看 | 三级大全网 | 日韩美女永久网 | 日韩在线中文字幕 | 成人精品日韩亚洲专区 | 九色黑人 | 国产一卡在线 | 成人午夜激 | 在线免费观看污网站 | 日本人做受免费视频 | 日韩在线高清视频 | 日韩国产在线不卡高清 | 自拍在线| 日屄视频网 | 国产城中 | 日韩午夜福利电影 | 97在线亚洲 | 人人操夜夜操 | 午夜成人性视频免费 | 岛国午夜一级毛 | 自拍偷拍| 日韩女同精品一区二 | 成人高清在线播放视频 | 国产黄色大片 | 福利视频导航福利 | 浓毛熟女| 成人国产一区二 | 91av导航| 日韩亚洲国产高清 | 成人网址在线观看 | 日韩精品综合 | 变态另类欧美大码日韩 | 狼友视频在线免费 | 日韩丝袜高跟福利 | 日韩国产自产拍a | 欧美一区二区 | 国产精品亚洲精品 | 日韩欧美亚洲片 | 老湿机网站在线观看 | 97爱蜜桃网 | 国产a精品v| 中文字幕第42页 | 爱豆视频在线观看 | 成人春色影视 | 美女三级黄色 | 精品资源成人 | 三级成人片在线观看 | 日韩a片| 激情文学图片区 | 日韩剧情片电影免费 | 日韩伦理剧在线观 | 欧美日韩在线不卡 | 97蜜桃新版 | 另类精品久久 | 天天爽夜夜爽 | 免费av网站 | 97香蕉| 天天操狠狠操夜夜操 | 日韩福利视频 | 91福利导航 | 自拍视频在线观看网站 | 中文字幕国产第一页 | 爱豆传媒免费观看 | 无码不卡免费在线观看 | 精品乱码一区二区三区 | 日韩在线导航 | 日韩综艺大全 | 日本xxxx在线观看 | 上床啪啪啪在线网站 | 国产女技师足疗无删减 | 成人精品网站 | 国产又粗又猛又色 | 日韩不卡在线观看 | 超碰人人干人人操 | 日韩中文在线播放 | 东京热电影网站 | 日韩日b视频 | 深夜福利国产小视频 | 一区二区视频在线观看 | 国产91呆哥在线视频 | 国产a级理论 | 九七精品 | 欧美成人视屏在线 | 日韩免费高清专区 | 成人国产片视频 | 城中村嫖妓正在播放 | 日韩国产精品有吗在线 | 亚洲学生妹高清AV | 乱伦日屄视频 | 加勒比一区二区 | 日韩欧美资源 | 成人免费a | 国产农村成人精品一区 | 日韩成人激情视频 | 午夜福利乱 | 三级在线无码观看 | 午夜丁香| 日韩欧美国产一区三 | 国产色中色 | 日韩免费三级网站 | 国产又粗又大又爽又黄 | 尤物在线免费视频 | 日韩欧美色射高清 | 国产va综合 | 午夜福利导航视频 | 日韩美女成人大片 | 日韩国产成人在线 | 亚洲激情小说 | 国产久久一区二区 | 日韩国va在线视频 | 日韩高清在线二区 | 国产福利高清在 | 成人午夜视频免费 | 日韩网站免费观看 | 国产成人AV| 91干屄 | 午夜福利成人影院 | 日韩有码在线视频 | 国产老熟女伦老熟妇 | 足交在线播放 | 国产屁屁| 成人三级片在线观看 | 尤物网站在线观看 | 日韩精东| 久久综合二区 | 99自拍视频在线观看 | 精东影业秘国产传媒 | 午夜福利体验区 | 成人高清视频在线观看 | 国产专区91| 岛国午夜精 | a毛片免费 | 91桃色2| 午夜轮三级 | 四房色播婷婷网 | 欧美日韩性爱 | 亚洲国产色情在线观看 | 丰满迷人岳的大乳 | 日韩美女舔大棒 | 成人另类小说 | 天堂网在线免费视频 | 日韩激情不卡一区二区 | 成人大片免费观看国产 | 国产原创| 福利姬视频入口 | 日韩电影免费在线 | 亚洲三级网址 | 日韩欧美中文精品电影 | 国产欧美日韩一区 | 日韩h片| 妓女一区 | 日韩一区国产精品 | 日韩老熟女一区二区 | 超碰人人草| 午夜免费看片 | 日韩中文在线观看 | 另类四虎 | 国产精品免费看 | 中文字幕成人动漫 | 日韩在线不卡 | 国产三级第一页 | 色偷偷资源网站 | 日韩高清无码中文字幕 | 日韩精品区区高清 | 日韩中文字幕新视频 | 日本道久久 | 三级理论中文字幕在 | 免费三级在线 | 亚洲一卡二卡三卡在线 | 久久综合资源 | 成人三级a | 午夜成人免费在线视频 | 日韩欧美国产aⅴ另类 | 中文丝袜 | 天天干天天日天天干 | 日本女同按摩 | 日韩日屄视频 | 日韩成人在线影院 | 国产三级电影在线观看 | 天天摸天天干 | 在线视频激情小说 | 日韩在线播放欧美字幕 | 日韩欧美~中文字幕 | 午夜视频老司机 | 国产精品美女 | 日韩国产在线 | 欧美性爱第七页 | 无码av网| 深夜免费福利 | 精品动漫一区二区 | 日韩欧美不卡一二三区 | 福利姬网站在线观看 | 九九黄色| 97日插逼| 三级亚洲 | 日韩电影观看 | 国产性爱在线免费观看 | 国产经典三级手机观看 | 国产第一屁屁影院 | 国产无码李宗瑞 | 日韩中文在线青柠影 | 国产成视频在线观看 | 欧美日韩视频 | 午夜伦理电影院 | 国产三级视频在线播放 | 都市激情第一页 | 成人三级网站国产 | 日韩免费一二三四区 | 69老湿机 | 日韩中文字幕乱伦 | 国产无码不卡视频 | 日韩高清在线观看永久 | 超碰97人人操人人 | 国产a在线不卡 | 日韩中文字幕在线播放 | 午夜无码福利 | 日韩中文字幕在线 | 日韩国产乱 | 久草最新 | 福利影院在线看 | 国产视频麻豆 | 天天插夜夜操 | 日韩精品福 | 日韩欧美爽爽的影院 | 福利姬视频在线看 | 国产又粗又猛又黄视频 | 日韩在线看视频 | 超碰www | 麻豆精品视频在线观看 | 国产熟睡乱子伦 | 日韩中文字幕中 | 国产a网 | 日韩福利片一区二区 | 午夜视频播放器 | 黄色三级网站免费 | 91网官网入口| 国产性爱一级 | 国产传媒在线观看 | 天天干人人操 | 天天看夜夜爽 | 免费黃色三級片在线 | 夜晚福利在线观看 | 国产不卡福利一二三区 | 欧美福利 | 黄色三级片毛片网站 | 国产色情视频 | 岛国大片在线播放免费 | 国产真人亲妺妺A片 | 超碰97人人草 | 亚洲精品www| 国产夫妻片 | 成人亚洲欧美综合 | 欧美综合性爱 | 日韩成人免费精品视频 | 99ri视频| 日韩国产成人在线 | 日韩性视频在线播 | 成人A片免费网 | 日韩高清无码网址 | 亚洲五月天婷婷丁香 | 成人国产午夜在线观看 | 午夜成人福利影院 | 丝袜中文在线 | 国产熟女麻豆 | 日韩丝袜亚洲国 | 深夜小福利 | 国产ts人妖在线观看 | 成人国产精品秘片多多 | 成人午夜试看 | 日韩中文三级 | 麻豆精品在线视频 | 东方四虎 | 午夜成人免费视频网站 | 国产成人三级在线视频 | 天天操天天爽天天干 | 91日本| 国语对白真实视频播放 | 日韩精品亚洲一区 | 国产精品1024 | 国产刺激视频在线观看 | 日韩免费一区二区三区 | 最新av网页 | 草逼91| 玖玖爱网站免费 | 国产精品自在线拍 | 黄色av网| 久久综合中文 | 天天综合7799| 国产成人自拍网 | 成人羞羞视频在 | 韩国日本三级网站 | 国产95在线 | 日本丰满少妇 | 日韩va亚洲 | 日本www免费 | 男女操逼网站 | 成人电视一区二区 | 国产一级片大全 | 五月婷婷六月丁香花 | 福利小视频在线观看 | 爱豆视频在线看 | 成人精品三级 | 欧美孕妇三级片 | 日韩亚洲精品在线播放 | 久久综合888 | 三级欧美日本国产 | 日韩a无v码 | 成人三级影院 | 国产午夜视频在线观看 | 欧美精品宗合 | 久草smc| 午夜伦理电影院 | 国产高清精品福 | 日韩精品在线观看免费 | 久久综合成人 | 国产精品精品国产 | 日韩一区二区精品在线 | 天堂网在线免费资源 | 丁香婷婷五月综合 | 日韩一区欧美一区 | 日韩成人在 | 日本综合在线 | 黄色三级片网站 | 日韩欧美另 | 动漫一区二区三区 | 日韩精品视频新区乱码 | 午夜成人电影免费观看 | 欧美在线精品一区 | 成人亚洲一区二区 | 日韩中文字幕a | 成人免费视频国产免 | 久操视频在线观看 | 国产h片量多网站 | 日韩欧美在线综合 | 日韩中文字幕在线亚洲 | 天天操综合网 | 九草资源站 | 欧美性爱网站网址 | 国产性爱在线观看 | 日韩无码成人 | 成人爽爽婬人 | 中文字幕亚洲国产 | 成人三级网站国产 | 啪啪啪在线观看国产 | 久久99久久久久 | 午夜成人高清视频 | 免费看A片的网址 | 中出网站视频在线观看 | 国产日产欧产 | 激情乱伦网站 | 久操久草| 性无码一区二区三区 | 国产精品在线观看 | 五月花婷婷| 国产日韩欧美一区 | 高潮喷水无码 | 91福利小视频 | 日韩福利在线观 | 国产91司机在线观看 | 免费成人a级片 | 国产精品成人精品 | 日韩精品色色 | 日韩大片免费在线观看 | 成人午夜短视频播放 | 国模一区二区 | 成人天堂 | 国产精品欧美另类小说 | 日韩国a级片 | 五月综合激情网 | 日韩一本在线视频 | 人妖网地| 97影院网| 日本玖玖爱 | 日韩第八页 | 国产免费一区二区三区 | 亚洲乱伦 | 日韩偷自 | 日韩黄色三级 | 国产女主播在线视频 | 国产爆乳美女 | 91手机论坛| 欧美精品在线一区 | 日韩淫色综合网站 | 偷拍自拍在线播放 | 免费一级毛片中文 | 日韩欧美二区在线观看 | 日韩喷水| 国产v亚 | 午夜视频专区 | 日韩在线视频第一页 | 亚洲美女影院 | 成人午夜视频二区三区 | 国产传媒视 | 做受视频试看 | 另类老熟女| 人人干夜夜操 | 精品视频一区二区 | 日韩国产精品中文 | 日韩伦理在线视频 | 毛片成人视频 | 国产精品成人品 | 三级AV在线免费观看 | 91视频免费在线观看 | 国产精品疯狂 | 国产黄色A片 | 国产精品在 | 欧美成年人视频 | 成人精品第 | 日韩中文视频 | 欧美另类一区 | 成人伦强在线看上进入 | 学生妹AV大战 | 日韩v码视频 | 日韩亚洲人成影院 | 在线观看加勒比网站 | 男女午夜精华 | 日韩美女成人免费网站 | 国产三级www | 国产a级毛片 | 欧美黄色网址 | 福利在线欧美观 | 激情文学区 | 成人精品视频免费看 | 午夜成人在线视频观看 | 国产+中文 | 精品综合| 尤物网站在线观看 | 日韩论理论片 | 日本黄色电影网站 | 国产精品高潮呻吟久久 | 国产精品尤物视频 | 三级在线视频 | 老熟女网站 | 国产嫖妓在线视频 | 国产做爰高潮呻吟视频 | 国产福利tv| 日韩亚洲精品不卡在线 | 国产成人三级在线观看 | 国产精品14p| 三级片在线网站 | 成人影院在| 日韩女同一区二区三区 | 欧美日韩高清 | 日韩欧美一区二区 | 国产精品自在线 | 国产又大又黄 | 四虎影视永久免费 | 在线观看福利导航 | 成人福利在线视频 | 成人毛片在线免费观看 | 福利社体验区 | 韩国午夜激情 | 日韩美女热舞 | 乱伦视频免费看 | 三级黄色免费网站 | 四虎影院176 | 国产成视频 | 日韩国产在线高清 | 日韩精品在线第二页 | 国产乱人伦 | 国产偷拍 | 国产v的在线观看 | 日韩中文字母aⅴ | 成人午夜在线免费观看 | 精品尤物在线 | 成人精品丝 | 爱豆传媒免费播放 | 国产91丝袜| 日韩无码高清免费 | 日韩新片网 | 成人亚洲欧美综合 | 国产精品三级A | 91中文字幕在 | 在线麻豆 | 97人人操人人 | 天下通乱伦色网专区 | 国产精品成人爰爱在线 | 三级精品手机在线 | 偷拍第8页 | 高潮喷水视频 | 欧美视频一区在线观看 | 99精品自拍 | 国产啪亚洲国产 | 中文字幕天津午夜精品 | 一曲二曲三曲毛毛 | 韩日在线看 | 日韩亚洲欧洲中文版 | 日韩欧美爽爽的影院 | 性多多在线观看 | 日韩精品免费看 | 日韩AV无码 | 中文字幕精品视频在线 | 日韩丝袜美腿在线视频 | 中国久久久久 | www日本色清 | 国産精品久久久久久久 | 福利视频网| 日韩一级一片 | 成人日韩视频 | 视频福利网 | 午夜爽爽视频 | 日韩午夜福利片在线观 | 日本高清色www | 日韩伦理片在线 | 国产91玩精品秘入口 | 日韩亚洲欧美专区 | 玖玖视频 | 深夜成人福利网站 | 人人看97 | 欧美另类性 | 91大神精品| 日韩电影理论 | 日本AV网站| 成人在线观看国产 | 中文字幕第一页国产 | 麻豆成人免费网站入口 | 日韩视频在线观看一区 | 黄色三级网站 | 中文字幕成人动漫 | 自拍偷拍精品 |