精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Threejs開發3D地圖實踐總結

開發 前端
前段時間連續上了一個月班,加班加點完成了一個3D攻堅項目。也算是由傳統web轉型到webgl圖形學開發中,坑不少,做了一下總結分享。

前段時間連續上了一個月班,加班加點完成了一個3D攻堅項目。也算是由傳統web轉型到webgl圖形學開發中,坑不少,做了一下總結分享。

1、法向量問題

法線是垂直于我們想要照亮的物體表面的向量。法線代表表面的方向因此他們為光源和物體的交互建模中具有決定性作用。每一個頂點都有一個關聯的法向量。

 

如果一個頂點被多個三角形共享,共享頂點的法向量等于共享頂點在不同的三角形中的法向量的和。N=N1+N2; 

 

所以如果不做任何處理,直接將3維物體的點傳遞給BufferGeometry,那么由于法向量被合成,經過片元著色器插值后,就會得到這個黑不溜秋的效果  

 

我的處理方式使頂點的法向量保持唯一,那么就需要在共享頂點處,拷貝一份頂點,并重新計算索引,是的每個被多個面共享的頂點都有多份,每一份有一個單獨的法向量,這樣就可以使得每個面都有一個相同的顏色

 

2、光源與面塊顏色

開發過程中設計給了一套配色,然而一旦有光源,面塊的最終顏色就會與光源混合,顏色自然與最終設計的顏色大相徑庭。下面是Lambert光照模型的混合算法。

 

而且產品的要求是頂面保持設計的顏色,側面需要加入光源變化效果,當對地圖做操作時,側面顏色需要根據視角發生變化。那么我的處理方式是將頂面與側面分別繪制(創建兩個Mesh),頂面使用MeshLambertMaterial的emssive屬性設置自發光顏色與設計顏色保持一致,也就不會有光照效果,側面綜合使用Emssive與color來應用光源效果。

 

3、POI標注

Three中創建始終朝向相機的POI可以使用Sprite類,同時可以將文字和圖片繪制在canvas上,將canvas作為紋理貼圖放到Sprite上。但這里的一個問題是canvas圖像將會失真,原因是沒有合理的設置sprite的scale,導致圖片被拉伸或縮放失真。

 

問題的解決思路是要保證在3d世界中的縮放尺寸,經過一系列變換投影到相機屏幕后仍然與canvas在屏幕上的大小保持一致。這需要我們計算出屏幕像素與3d世界中的長度單位的比值,然后將sprite縮放到合適的3d長度。

  

 

4、點擊拾取問題

webgl中3D物體繪制到屏幕將經過以下幾個階段

 

所以要在3D應用做點擊拾取,首先要將屏幕坐標系轉化成ndc坐標系,這時候得到ndc的xy坐標,由于2d屏幕并沒有z值所以,屏幕點轉化成3d坐標的z可以隨意取值,一般取0.5(z在-1到1之間)。

  1. function fromSreenToNdc(x, y, container) { 
  2.  
  3.   return { 
  4.  
  5.     x: x / container.offsetWidth * 2 - 1, 
  6.  
  7.     y: -y / container.offsetHeight * 2 + 1, 
  8.  
  9.     z: 1 
  10.  
  11.   }; 
  12.  
  13.  
  14. function fromNdcToScreen(x, y, container) { 
  15.  
  16.   return { 
  17.  
  18.     x: (x + 1) / 2 * container.offsetWidth, 
  19.  
  20.     y: (1 - y) / 2 * container.offsetHeight 
  21.  
  22.   }; 
  23.  
  24.  

然后將ndc坐標轉化成3D坐標:

  1. ndc = P * MV * Vec4 
  2.  
  3. Vec4 = MV-1 * P -1 * ndc  

這個過程在Three中的Vector3類中已經有實現:

  1. unproject: function () { 
  2.  
  3.   
  4.  
  5.         var matrix = new Matrix4(); 
  6.  
  7.   
  8.  
  9.         return function unproject( camera ) { 
  10.  
  11.   
  12.  
  13.             matrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) ); 
  14.  
  15.             return this.applyMatrix4( matrix ); 
  16.  
  17.   
  18.  
  19.         }; 
  20.  
  21.   
  22.  
  23.     }(),  

將得到的3d點與相機位置結合起來做一條射線,分別與場景中的物體進行碰撞檢測。首先與物體的外包球進行相交性檢測,與球不相交的排除,與球相交的保存進入下一步處理。將所有外包球與射線相交的物體按照距離相機遠近進行排序,然后將射線與組成物體的三角形做相交性檢測。求出相交物體。當然這個過程也由Three中的RayCaster做了封裝,使用起來很簡單:

  1. mouse.x = ndcPos.x; 
  2.  
  3. mouse.y = ndcPos.y; 
  4.  
  5. this.raycaster.setFromCamera(mouse, camera); 
  6.  
  7. var intersects = this.raycaster.intersectObjects(this._getIntersectMeshes(floor, zoom), true);  

5、性能優化

隨著場景中的物體越來越多,繪制過程越來越耗時,導致手機端幾乎無法使用。

 

在圖形學里面有個很重要的概念叫“one draw all”一次繪制,也就是說調用繪圖api的次數越少,性能越高。比如canvas中的fillRect、fillText等,webgl中的drawElements、drawArrays;所以這里的解決方案是對相同樣式的物體,把它們的側面和頂面統一放到一個BufferGeometry中。這樣可以大大降低繪圖api的調用次數,極大的提升渲染性能。

 

這樣解決了渲染性能問題,然而帶來了另一個問題,現在是吧所有樣式相同的面放在一個BufferGeometry中(我們稱為樣式圖形),那么在面點擊時候就無法單獨判斷出到底是哪個物體(我們稱為物體圖形)被選中,也就無法對這個物體進行高亮縮放處理。我的處理方式是,把所有的物體單獨生成物體圖形保存在內存中,做面點擊的時候用這部分數據來做相交性檢測。對于選中物體后的高亮縮放處理,首先把樣式面中相應部分裁減掉,然后把選中的物體圖形加入到場景中,對它進行縮放高亮處理。裁剪方法是,記錄每個物體在樣式圖形中的其實索引位置,在需要裁切時候將這部分索引制零。在需要恢復的地方在把這部分索引恢復成原狀。

6、面點擊移動到屏幕中央

這部分也是遇到了不少坑,首先的想法是:

面中心點目前是在世界坐標系內的坐標,先用center.project(camera)得到歸一化設備坐標,在根據ndc得到屏幕坐標,而后根據面中心點屏幕坐標與屏幕中心點坐標做插值,得到偏移量,在根據OribitControls中的pan方法來更新相機位置。這種方式最終以失敗告終,因為相機可能做各種變換,所以屏幕坐標的偏移與3d世界坐標系中的位置關系并不是線性對應的。

最終的想法是:

我們現在想將點擊面的中心點移到屏幕中心,屏幕中心的ndc坐標永遠都是(0,0)我們的觀察視線與近景面的焦點的ndc坐標也是0,0;也就是說我們要將面中心點作為我們的觀察點(屏幕的中心永遠都是相機的觀察視線),這里我們可以直接將面中心所謂視線的觀察點,利用lookAt方法求取相機矩陣,但如果這樣簡單處理后的效果就會給人感覺相機的姿態變化了,也就是會感覺并不是平移過去的,所以我們要做的是保持相機當前姿態將面中心作為相機觀察點。

回想平移時我們將屏幕移動轉化為相機變化的過程是知道屏幕偏移求target,這里我們要做的就是知道target反推屏幕偏移的過程。首先根據當前target與面中心求出相機的偏移向量,根據相機偏移向量求出在相機x軸和up軸的投影長度,根據投影長度就能返推出應該在屏幕上的平移量。

  1. this.unprojectPan = function(deltaVector, moveDown) { 
  2.  
  3.     // var getProjectLength() 
  4.  
  5.     var element = scope.domElement === document ? scope.domElement.body : scope.domElement; 
  6.  
  7.   
  8.  
  9.     var cxv = new Vector3(0, 0, 0).setFromMatrixColumn(scope.object.matrix, 0);// 相機x軸 
  10.  
  11.     var cyv = new Vector3(0, 0, 0).setFromMatrixColumn(scope.object.matrix, 1);// 相機y軸 
  12.  
  13.     // 相機軸都是單位向量 
  14.  
  15.     var pxl = deltaVector.dot(cxv)/* / cxv.length()*/; // 向量在相機x軸的投影 
  16.  
  17.     var pyl = deltaVector.dot(cyv)/* / cyv.length()*/; // 向量在相機y軸的投影 
  18.  
  19.   
  20.  
  21.     // offset=dx * vector(cx) + dy * vector(cy.project(xoz).normalize) 
  22.  
  23.     // offset由相機x軸方向向量+相機y軸向量在xoz平面的投影組成 
  24.  
  25.     var dv = deltaVector.clone(); 
  26.  
  27.     dv.sub(cxv.multiplyScalar(pxl)); 
  28.  
  29.     pyl = dv.length(); 
  30.  
  31.   
  32.  
  33.     if ( scope.object instanceof PerspectiveCamera ) { 
  34.  
  35.       // perspective 
  36.  
  37.   
  38.  
  39.       var position = scope.object.position; 
  40.  
  41.       var offset = new Vector3(0, 0, 0); 
  42.  
  43.       offset.copy(position).sub(scope.target); 
  44.  
  45.       var distance = offset.length(); 
  46.  
  47.       distance *= Math.tan(scope.object.fov / 2 * Math.PI / 180); 
  48.  
  49.   
  50.  
  51.       // var xd = 2 * distance * deltaX / element.clientHeight; 
  52.  
  53.       // var yd = 2 * distance * deltaY / element.clientHeight; 
  54.  
  55.       // panLeft( xd, scope.object.matrix ); 
  56.  
  57.       // panUp( yd, scope.object.matrix ); 
  58.  
  59.   
  60.  
  61.       var deltaX = pxl * element.clientHeight / (2 * distance); 
  62.  
  63.       var deltaY = pyl * element.clientHeight / (2 * distance) * (moveDown ? -1 : 1); 
  64.  
  65.   
  66.  
  67.       return [deltaX, deltaY]; 
  68.  
  69.     } else if ( scope.object instanceof OrthographicCamera ) { 
  70.  
  71.   
  72.  
  73.       // orthographic 
  74.  
  75.       // panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); 
  76.  
  77.       // panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); 
  78.  
  79.       var deltaX = pxl * element.clientWidth * scope.object.zoom / (scope.object.right - scope.object.left); 
  80.  
  81.       var deltaY = pyl * element.clientHeight * scope.object.zoom / (scope.object.top - scope.object.bottom); 
  82.  
  83.   
  84.  
  85.       return [deltaX, deltaY]; 
  86.  
  87.     } else { 
  88.  
  89.   
  90.  
  91.       // camera neither orthographic nor perspective 
  92.  
  93.       console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); 
  94.  
  95.   
  96.  
  97.     } 
  98.  
  99.   }  

7、2/3D切換

23D切換的主要內容就是當相機的視線軸與場景的平面垂直時,使用平行投影,這樣用戶只能看到頂面給人的感覺就是2D視圖。所以要根據透視的視錐體計算出平行投影的世景體。

 

因為用戶會在2D、3D場景下做很多操作,比如平移、縮放、旋轉,要想無縫切換,這個關鍵在于將平行投影與視錐體相機的位置、lookAt方式保持一致;以及將他們放大縮小的關鍵點:distance的比例與zoom來保持一致。

平行投影中,zoom越大代表六面體的首尾兩個面面積越小,放大越大。

 

8、3D中地理級別

地理級別實際是像素跟墨卡托坐標系下米的對應關系,這個有通用的標準以及計算公式:

  1. r=6378137 
  2.  
  3. resolution=2*PI*r/(2^zoom*256)  

各個級別中像素與米的對應關系如下:

  1. resolution zoom 2048 blocksize 256 blocksize scale(dpi=160) 
  2.  
  3. 156543.0339 0 320600133.5 40075016.69 986097851.5 
  4.  
  5. 78271.51696 1 160300066.7 20037508.34 493048925.8 
  6.  
  7. 39135.75848 2 80150033.37 10018754.17 246524462.9 
  8.  
  9. 19567.87924 3 40075016.69 5009377.086 123262231.4 
  10.  
  11. 9783.939621 4 20037508.34 2504688.543 61631115.72 
  12.  
  13. 4891.96981 5 10018754.17 1252344.271 30815557.86 
  14.  
  15. 2445.984905 6 5009377.086 626172.1357 15407778.93 
  16.  
  17. 1222.992453 7 2504688.543 313086.0679 7703889.465 
  18.  
  19. 611.4962263 8 1252344.271 156543.0339 3851944.732 
  20.  
  21. 305.7481131 9 626172.1357 78271.51696 1925972.366 
  22.  
  23. 152.8740566 10 313086.0679 39135.75848 962986.1831 
  24.  
  25. 76.4370283 11 156543.0339 19567.87924 481493.0916 
  26.  
  27. 38.2185141 12 78271.51696 9783.939621 240746.5458 
  28.  
  29. 19.1092571 13 39135.75848 4891.96981 120373.2729 
  30.  
  31. 9.5546285 14 19567.87924 2445.984905 60186.63645 
  32.  
  33. 4.7773143 15 9783.939621 1222.992453 30093.31822 
  34.  
  35. 2.3886571 16 4891.96981 611.4962263 15046.65911 
  36.  
  37. 1.1943286 17 2445.984905 305.7481131 7523.329556 
  38.  
  39. 0.5971643 18 1222.992453 152.8740566 3761.664778 
  40.  
  41. 0.2985821 19 611.4962263 76.43702829 1880.832389 
  42.  
  43. 0.1492911 20 305.7481131 38.21851414 940.4161945 
  44.  
  45. 0.0746455 21 
  46.  
  47. 0.0373227 22  

3D中的計算策略是,首先需要將3D世界中的坐標與墨卡托單位的對應關系搞清楚,如果已經是以mi來做單位,那么就可以直接將相機的投影屏幕的高度與屏幕的像素數目做比值,得出的結果跟上面的ranking做比較,選擇不用的級別數據以及比例尺。注意3D地圖中的比例尺并不是在所有屏幕上的所有位置與現實世界都滿足這個比例尺,只能說是相機中心點在屏幕位置處的像素是滿足這個關系的,因為平行投影有近大遠小的效果。

9、poi碰撞

由于標注是永遠朝著相機的,所以標注的碰撞就是把標注點轉換到屏幕坐標系用寬高來計算矩形相交問題。至于具體的碰撞算法,大家可以在網上找到,這里不展開。下面是計算poi矩形的代碼 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2023-06-03 08:06:20

項目開發客戶端

2011-12-21 12:46:43

2012-06-07 09:57:13

Android版Goo

2012-04-03 12:53:47

諾基亞

2023-08-18 08:00:00

游戲開發3D模型

2014-04-28 17:30:53

2011-10-06 13:30:45

宏碁投影儀

2012-11-26 12:51:44

木材3D打

2012-05-13 12:54:33

iOS

2011-05-26 10:05:07

優派投影機

2013-08-23 10:51:52

蘋果3D手勢

2010-09-08 11:26:26

Windows PhoXNA 4.0 3D游戲開發

2011-04-26 14:21:20

3DJVC投影機

2011-08-26 14:50:23

2023-03-03 21:42:18

鴻蒙

2012-08-13 17:11:37

Silverlight

2015-09-09 11:05:52

3d視差引導頁

2021-12-28 10:52:10

鴻蒙HarmonyOS應用

2011-05-25 16:07:17

2011-09-22 10:07:52

奧圖碼投影儀
點贊
收藏

51CTO技術棧公眾號

久久精品国产一区二区电影| 97人人在线视频| 97久久中文字幕| 国产尤物精品| 日本乱人伦aⅴ精品| 国产精品亚洲视频在线观看| 一本之道在线视频| 在线免费观看国产精品| 国产在线一区不卡| 国产香蕉久久精品综合网| 欧美疯狂xxxx大交乱88av| 欧美aⅴ在线观看| www视频在线| 婷婷丁香综合| 日本久久精品电影| 一区二区不卡在线观看| 欧美精品韩国精品| 国产图片一区| 亚洲一区二区三区影院| 国产一区玩具在线观看| 亚洲成人黄色av| 美女露胸视频在线观看| 激情综合色播激情啊| 亚洲人成电影网站色…| 成人午夜免费剧场| 国产精品视频一二区| 欧美日韩国产免费观看视频| 五月天精品一区二区三区| 99九九视频| 强制高潮抽搐sm调教高h| 日韩在线短视频| 99精品视频在线免费观看| 欧美激情亚洲视频| japanese在线观看| xxx.xxx欧美| www.久久精品| 日本精品视频网站| 中文字幕狠狠干| 欧美人与性动交xxⅹxx| 国产三级精品在线| 国产一区二区自拍| 不卡的免费av| 日韩av不卡一区| 欧美日韩另类在线| 欧美一区二区福利| 婷婷激情五月网| 国产99久久久国产精品成人免费| 亚洲摸摸操操av| 亚洲一区二区自拍| 青青草原免费观看| 麻豆成人入口| 在线视频国内自拍亚洲视频| 亚洲视频精品一区| 九色在线观看视频| 青青草精品视频| 这里只有精品视频| 欧美丝袜在线观看| 在线观看小视频| 不卡区在线中文字幕| 日韩av成人在线观看| 中文字幕一区二区三区精品| 视频精品在线观看| 亚洲人成网站在线播| 四虎永久免费影院| 麻豆精品少妇| 亚洲男人的天堂在线播放| 天美星空大象mv在线观看视频| 成人18在线| 国产乱子伦一区二区三区国色天香| 欧美大片在线看| 国产精品老熟女一区二区| 日韩深夜影院| 欧美美女直播网站| 欧美 日韩 亚洲 一区| av午夜在线| 东方aⅴ免费观看久久av| 热久久免费国产视频| 欧美色视频一区二区三区在线观看| 清纯唯美日韩| 欧美成人一区二区三区片免费| 欧美一二三不卡| 国产视频精品久久| 成人美女视频在线看| 国产伦精品一区二区三区四区视频 | 亚洲电影天堂av| 香蕉视频网站入口| 在线日韩三级| 亚洲福利视频网| 国产免费看av| 波多野结衣在线一区二区| 欧美日韩一区二区在线观看| 少妇高潮喷水在线观看| 国产日韩另类视频一区| 欧美精品vⅰdeose4hd| jjzz黄色片| 亚洲tv在线| 一本大道av一区二区在线播放| 路边理发店露脸熟妇泻火| 国产羞羞视频在线播放| 91国模大尺度私拍在线视频| 一级黄色片在线免费观看| 影视一区二区三区| 欧美一区二区啪啪| 日韩欧美在线免费观看视频| 亚洲美女尤物影院| 精品国产91久久久| 污网站免费在线| 91精品xxx在线观看| 欧美一区二区私人影院日本| 真人bbbbbbbbb毛片| 国内精品国产成人国产三级粉色 | 在线观看美女网站大全免费| 亚洲午夜电影在线观看| 亚洲黄色a v| 97久久超碰| www.亚洲人.com| 欧美老熟妇乱大交xxxxx| 中文在线播放一区二区| 一区二区亚洲精品国产| 欧美亚一区二区三区| 自拍偷拍欧美专区| 国产精品久久久久久一区二区| 国产视频1区2区| 风间由美性色一区二区三区 | 天天久久夜夜| 欧美成人激情在线| 国精产品一区一区二区三区mba| 日韩精品电影| 日日摸夜夜添一区| 国产精品视频一区二区在线观看| 国产亚洲激情| 日韩69视频在线观看| 高清毛片aaaaaaaaa片| 成人午夜视频在线| 在线观看欧美亚洲| 成人黄色在线电影| 一区二区三区视频在线观看 | 影音先锋日韩资源| 国产+人+亚洲| 伊人中文字幕在线观看| 成人午夜在线视频| 欧美另类videosbestsex日本| 国产极品久久久久久久久波多结野| 色综合久久综合网欧美综合网| 亚洲图片欧美另类| 黄色亚洲大片免费在线观看| 91手机视频在线观看| 国产成人三级在线观看视频| 亚洲日本青草视频在线怡红院| 日韩人妻精品一区二区三区| 欧美aaa免费| 一本一本久久a久久精品综合麻豆| 精品国产免费久久久久久婷婷| 西野翔中文久久精品国产| 欧美精品18videosex性欧美| 性生交生活影碟片| 久久婷婷色综合| 亚洲春色在线视频| 男女免费观看在线爽爽爽视频| 91精品国产免费久久综合| 国产精品国产三级国产传播| 韩国av一区二区| 四虎4hu永久免费入口| 国产精品国产亚洲精品| 蜜臀久久99精品久久久无需会员| 国产黄色片免费观看| 久久婷婷成人综合色| 免费av网址在线| 狠狠色丁香婷婷综合影院| 国产精品三级在线| 欧美人xxx| 欧美视频中文字幕在线| 五月婷婷丁香色| 欧美绝顶高潮抽搐喷水合集| 97成人精品区在线播放| 97人妻精品一区二区三区| 成人欧美一区二区三区黑人麻豆| 国产精品网站免费| 国产欧美日韩免费观看| 国产日韩欧美日韩大片| 手机在线免费av| 日本国产一区二区| 国产三级在线观看完整版| 在线免费观看欧美| 欧美凹凸一区二区三区视频| 中文国产字幕在线观看| 亚洲成人教育av| 无码人妻熟妇av又粗又大| 中文字幕亚洲电影| 蜜臀av粉嫩av懂色av| 久久久久久久久99精品大| 欧美最猛性xxxxx亚洲精品| 成人免费黄色网页| 日韩一区二区免费电影| 秋霞欧美一区二区三区视频免费| 国产在线精品国自产拍免费| 日韩资源av在线| 日本片在线观看| 亚洲男人的天堂在线播放| 国产人妻精品一区二区三| 日本一区二区在线不卡| 国产91在线视频观看| 澳门久久精品| 国产精品国产福利国产秒拍| 免费在线观看污视频| 精品福利免费观看| 成人信息集中地| 久久99九九99精品| 亚洲欧洲精品一区二区三区波多野1战4| 日本伊人久久| 欧美成人免费大片| 国产最新视频在线观看| 精品三级在线观看| 中文字幕在线观看欧美| 久久精品视频在线免费观看| 国产精品欧美激情在线观看| 亚洲国产成人精品女人| 日本一区二区免费看| 国产伦精品一区二区三区在线播放| 国产精品影片在线观看| 成人av三级| 伊人av综合网| 亚洲av片一区二区三区| 欧美性猛交xxxx富婆| h色网站在线观看| 国产成人高清视频| 在线免费观看视频黄| 国产精品永久| 国产手机免费视频| 人体久久天天| 国产富婆一区二区三区| a毛片不卡免费看片| 久久夜精品va视频免费观看| 亚洲产国偷v产偷v自拍涩爱| 欧美日韩成人一区二区| 日本老熟俱乐部h0930| 欧美高清在线一区| 亚洲第一天堂久久| 美女视频免费一区| 亚洲美女自拍偷拍| 国产精品视屏| aa成人免费视频| 国产区一区二| 91丝袜美腿美女视频网站| 四虎视频在线精品免费网址| 国产精品欧美激情在线播放| 日韩不卡视频在线观看| 国产精品精品久久久| 校园春色亚洲色图| 国产精品com| 影院在线观看全集免费观看| xx视频.9999.com| 麻豆tv在线| 成人444kkkk在线观看| 久cao在线| 亚洲乱亚洲乱妇无码| 西西人体44www大胆无码| 亚洲精品动漫100p| 丁香社区五月天| 在线日韩av片| 亚洲天堂一二三| 午夜精品久久久久久| 五月婷婷六月香| 不卡一区二区中文字幕| 欧美日韩人妻精品一区在线| 99精品欧美一区二区三区小说 | 中文字幕+乱码+中文乱码91| 欧美无砖砖区免费| 久久香蕉精品视频| 国产免费久久精品| 大胸美女被爆操| 综合色中文字幕| 久久免费黄色网址| 岛国精品视频在线播放| 国产乱码77777777| 亚洲成人免费在线观看| 人妻aⅴ无码一区二区三区| 国产欧美精品区一区二区三区 | 香蕉久久国产av一区二区| 亚洲精品中文字幕有码专区| 国产aⅴ爽av久久久久成人| 日韩精品自拍偷拍| 四虎精品在线| 精品久久久久久久久久久院品网| 人成网站在线观看| 日韩欧美一级二级三级| 婷婷五月综合激情| 欧美一区二区三区不卡| 污视频在线免费观看| 中文字幕精品视频| 免费在线播放电影| 国产成人精品综合久久久| 久久久久毛片免费观看| 国产精品揄拍500视频| 亚洲成人偷拍| 日本高清不卡三区| 欧美韩国一区| 性做爰过程免费播放| 亚洲毛片播放| 精品人妻少妇一区二区| 好看的亚洲午夜视频在线| 91成人在线观看喷潮教学| 免费看欧美美女黄的网站| 国产人妻精品午夜福利免费| 国产日韩在线不卡| 免费看一级一片| 欧美性一级生活| 刘亦菲久久免费一区二区| 这里只有精品在线观看| 182在线视频观看| 成人免费激情视频| 91成人app| 欧美精品久久久| 亚洲免费观看高清完整版在线观| 精品在线观看一区二区| 日韩av三区| 欧美黄网在线观看| 天天揉久久久久亚洲精品| 欧洲精品一区二区三区久久| 激情五月激情综合网| 亚洲成人黄色av| 欧美日韩在线免费| 亚洲男人第一天堂| 久久综合久久八八| 国产亚洲精彩久久| 91夜夜未满十八勿入爽爽影院| 综合综合综合综合综合网| 久久综合久久久久| 国产精品影视天天线| 国产又粗又猛又爽又黄的视频小说| 欧美日韩国产页| 人人妻人人玩人人澡人人爽| 久久99精品国产99久久6尤物| 国产区美女在线| 亚洲一区二区三区四区在线播放| 精品视频日韩| 韩国日本美国免费毛片| wwww国产精品欧美| 精品丰满少妇一区二区三区| 色乱码一区二区三区88 | 国产亚洲精品成人av久久ww| porn亚洲| 国产精品福利网| 国产欧美日韩精品一区二区免费| 六月激情综合网| 国产午夜精品久久久久久免费视 | 阿v视频在线| 国产91精品黑色丝袜高跟鞋| 在线国产成人影院| 欧美日韩一区二区三区在线观看免| 亚洲免费播放| 午夜免费福利在线| 欧美高清在线一区二区| 亚洲熟女乱色一区二区三区久久久| 伊人久久精品视频| 国产成人精品一区二区三区在线| 成人av免费看| 海角社区69精品视频| 国产日韩视频一区| 午夜精品久久久| 国产在线一二| 国产精品永久免费| 影音先锋日韩在线| 麻豆免费在线观看视频| 亚洲超碰97人人做人人爱| 婷婷综合激情网| 国产成人av在线播放| 日韩精品一区二区三区免费观看| 欧美三级午夜理伦三级富婆| 亚洲欧洲精品一区二区精品久久久 | 免费成人在线网站| www日韩在线| 亚洲第五色综合网| 日韩精品专区| 在线免费观看成人网| 国产成人精品亚洲午夜麻豆| 中文字幕第24页| 正在播放亚洲一区| 国产在线观看免费| 成人精品一区二区三区电影免费| 一本到12不卡视频在线dvd| 99热超碰在线| 欧美色图片你懂的| 欧美性受ⅹ╳╳╳黑人a性爽| 噜噜噜噜噜久久久久久91| 蜜臀av一区二区在线观看| 免费中文字幕在线观看| 亚洲女人天堂色在线7777| 日韩美香港a一级毛片| 国产极品尤物在线| 国产精品一区二区视频| 日本中文字幕在线免费观看| 尤物九九久久国产精品的特点 | 亚洲一级生活片| 亚洲国产精品99| 岛国一区二区| 欧美二区在线视频| 中文字幕一区二区三区四区不卡| 四虎成人在线观看| 免费成人高清视频|