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

我是如何用 Three.js 在三維世界建房子的(詳細(xì)教程)

開發(fā) 前端
Three.js 還是挺好玩的,業(yè)務(wù)上可能主要用于可視化、游戲,但工作之余也可以用它來做些有趣的東西。

[[439071]]

這兩天用 Three.js 畫了一個(gè) 3D 的房子,放了一個(gè)床進(jìn)去,可以用鼠標(biāo)和鍵盤控制移動(dòng),有種 3D 游戲的即視感。

這篇文章就來講下實(shí)現(xiàn)原理。

代碼地址:https://github.com/QuarkGluonPlasma/threejs-exercize

思路分析

我們先不著急寫代碼,先來分析下思路。

這樣一個(gè)房子,其實(shí)也是由幾個(gè)幾何體堆起來的:

具體有這么些幾何體:

地板就是個(gè)平面,用 PlaneGeometry(平面幾何體) 就可以畫,貼上個(gè)紋理貼圖就行。

兩個(gè)側(cè)面的墻,是一個(gè)不規(guī)則的形狀,這個(gè)可以用 ExtrudeGeometry(擠壓幾何體),它支持用畫筆畫一個(gè) 2D 的路徑,然后加厚變成 3D 的。

同理,后面的墻也很簡(jiǎn)單,可以是 BoxGeometry(立方體)來畫,也可以是 ExtrudeGeometry(擠壓結(jié)合體)先畫個(gè)形狀,然后變成 3D 的。

前面的墻稍微復(fù)雜些,它也是不規(guī)則的,可以用 ExtrudeGeometry(擠壓幾何體)來畫出形狀,然后變成 3D 的,只不過它多了兩個(gè)洞,需要畫兩個(gè)洞加到形狀里面去。

門框、窗框也是形狀里扣個(gè)洞,用 ExtrudeGeometry 變成 3D 的。

那房頂呢?房頂也沒什么特殊的,只是立方體旋轉(zhuǎn)一定的角度就行,用 BoxGeometry(立方體) 就可以畫。

接下來,給墻和房頂、地板貼上不同的圖,設(shè)置好不同的位置,就可以組裝成一個(gè)房子了。

那么床呢?

Three.js 提供了很多的幾何體,可以畫一些簡(jiǎn)單的物體,但復(fù)雜的物體就很難畫出來了,這類物體一般會(huì)用專業(yè)的 3D 建模軟件來畫,導(dǎo)出 FPX 或者 OBJ 格式的文件由 Three.js 加載并渲染出來。

我們?cè)诰W(wǎng)上找一個(gè)床的 3D 模型,我找了一個(gè) FBX 格式的,然后用 Three.js 的 FBXLoader 加載就行。

還剩下一個(gè)草地,這個(gè)也是一個(gè)平面,用 PlaneGeometry(平面幾何體)畫,只不過就是長(zhǎng)寬比較大,看不到盡頭而已。

看起來還有霧?

沒錯(cuò),確實(shí)設(shè)置了霧(Fog),Three.js 在場(chǎng)景中設(shè)置霧的效果,指定顏色和霧的遠(yuǎn)近范圍就行。為了有種模糊的感覺,我就在場(chǎng)景中加入了霧。

全部的物體都畫完了,接下來就可以在 3D 場(chǎng)景中漫游了,通過鼠標(biāo)和鍵盤可以改變方向和前后左右移動(dòng),這種交互使用 FirstPersonControls(第一人稱控制器) 來實(shí)現(xiàn)。

一般我們常用的是 OrbitsControls(軌道控制器),它支持圍繞物體轉(zhuǎn)動(dòng)相機(jī),就像衛(wèi)星一樣。但我們這里不是想繞著轉(zhuǎn),而是想鍵盤和鼠標(biāo)控制的前后左右的隨意移動(dòng)。

我們簡(jiǎn)單小結(jié)下:

Three.js 是在三維的坐標(biāo)系中添加各種物體,組裝成不同的 3D 場(chǎng)景。其中簡(jiǎn)單的物體可以畫,復(fù)雜的物體會(huì)用建模軟件畫,然后加載到場(chǎng)景中。我們可以用不同的控制器來控制相機(jī)移動(dòng),達(dá)到不同的交互效果,比如軌道控制器、第一人稱控制器等。

房子的墻、地板、房頂都可以用 BoxGeometry(立方體)、ExtrudeGeometry(擠壓幾何體)畫出來,但是床這種復(fù)雜的就不行了,會(huì)直接加載模型文件。

通過 FistPersonControls(第一人稱控制器)來控制交互,就能達(dá)到 3D 游戲的那種感覺。

思路理清了,接下來我們具體寫下代碼:

代碼實(shí)現(xiàn)

先畫草地,也就是一個(gè)大的平面,貼上草地的貼圖。

三維的物體(Mesh) 是由幾何體(Geometry),加上材質(zhì)(Material)構(gòu)成的。我們創(chuàng)建平面幾何體(PlaneGeometry),長(zhǎng)和寬制定一個(gè)很大的值,比如 10000,然后加載草地的圖片作為紋理(Texture),構(gòu)成材質(zhì)。之后就可以創(chuàng)建出草地了。

  1. function createGrass() { 
  2.     const geometry = new THREE.PlaneGeometry( 10000, 10000); 
  3.  
  4.     const texture = new THREE.TextureLoader().load('img/grass.jpg'); 
  5.     texture.wrapS = THREE.RepeatWrapping; 
  6.     texture.wrapT = THREE.RepeatWrapping; 
  7.     texture.repeat.set( 100, 100 ); 
  8.  
  9.     const grassMaterial = new THREE.MeshBasicMaterial({map: texture}); 
  10.  
  11.     const grass = new THREE.Mesh( geometry, grassMaterial ); 
  12.  
  13.     grass.rotation.x = -0.5 * Math.PI; 
  14.  
  15.     scene.add( grass ); 

紋理貼圖要設(shè)置兩個(gè)方向都重復(fù),重復(fù)的次數(shù)是 100 次。

然后草地的平面要旋轉(zhuǎn)一下。

加點(diǎn)霧,讓天際模糊一些:

  1. scene.fog = new THREE.Fog(0xffffff, 10, 1500); 

分別指定顏色為白色,霧的遠(yuǎn)近范圍為 10 到 1500。

接下來是創(chuàng)建房子,房子由地板、兩側(cè)的墻、前面的墻、后面的墻、門框窗框、房頂、床構(gòu)成,要分別創(chuàng)建每一部分,我們把它們放到單獨(dú)的 Group(分組)里。

  1. const house = new THREE.Group(); 
  2.  
  3. function createHouse() { 
  4.     createFloor(); 
  5.  
  6.     const sideWall = createSideWall(); 
  7.     const sideWall2 = createSideWall(); 
  8.     sideWall2.position.z = 300; 
  9.  
  10.     createFrontWall(); 
  11.     createBackWall(); 
  12.  
  13.     const roof = createRoof(); 
  14.     const roof2 = createRoof(); 
  15.     roof2.rotation.x = Math.PI / 2; 
  16.     roof2.rotation.y = Math.PI / 4 * 0.6; 
  17.     roof2.position.y = 130; 
  18.     roof2.position.x = -50; 
  19.     roof2.position.z = 155; 
  20.  
  21.     createWindow(); 
  22.     createDoor(); 
  23.  
  24.     createBed(); 

創(chuàng)建地板也是平面幾何體(PlaneGeometry),貼上木材的圖就行,然后設(shè)置下位置:

  1. function createFloor() { 
  2.     const geometry = new THREE.PlaneGeometry( 200, 300); 
  3.  
  4.     const texture = new THREE.TextureLoader().load('img/wood.jpg'); 
  5.     texture.wrapS = THREE.RepeatWrapping; 
  6.     texture.wrapT = THREE.RepeatWrapping; 
  7.     texture.repeat.set( 2, 2 ); 
  8.  
  9.     const material = new THREE.MeshBasicMaterial({map: texture}); 
  10.      
  11.     const floor = new THREE.Mesh( geometry, material ); 
  12.  
  13.     floor.rotation.x = -0.5 * Math.PI; 
  14.     floor.position.y = 1; 
  15.     floor.position.z = 150; 
  16.  
  17.     house.add(floor); 

創(chuàng)建側(cè)面的墻,要用 ExtrudeGeometry(擠壓幾何體)來畫,也就是先畫出一個(gè) 2D 的形狀,然后擠壓成 3D。還要貼上墻的紋理貼圖。

  1. function createSideWall() { 
  2.     const shape = new THREE.Shape(); 
  3.     shape.moveTo(-100, 0); 
  4.     shape.lineTo(100, 0); 
  5.     shape.lineTo(100,100); 
  6.     shape.lineTo(0,150); 
  7.     shape.lineTo(-100,100); 
  8.     shape.lineTo(-100,0); 
  9.  
  10.     const extrudeGeometry = new THREE.ExtrudeGeometry( shape ); 
  11.  
  12.     const texture = new THREE.TextureLoader().load('./img/wall.jpg'); 
  13.     texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 
  14.     texture.repeat.set( 0.01, 0.005 ); 
  15.  
  16.     var material = new THREE.MeshBasicMaterial( {map: texture} ); 
  17.  
  18.     const sideWall = new THREE.Mesh( extrudeGeometry, material ) ; 
  19.  
  20.     house.add(sideWall); 
  21.  
  22.     return sideWall; 

兩個(gè)側(cè)墻只是位置不同,修改下 z 軸位置就行:

  1. const sideWall = createSideWall(); 
  2. const sideWall2 = createSideWall(); 
  3. sideWall2.position.z = 300; 

對(duì)了,如果對(duì)位置拿不準(zhǔn),可以在場(chǎng)景中加個(gè)坐標(biāo)系輔助工具(AxisHelper)。

  1. const axisHelper = new THREE.AxisHelper(2000); 
  2. scene.add(axisHelper); 

然后是后面的墻,這個(gè)形狀簡(jiǎn)單一些,就是個(gè)矩形:

  1. function createBackWall() { 
  2.     const shape = new THREE.Shape(); 
  3.     shape.moveTo(-150, 0) 
  4.     shape.lineTo(150, 0) 
  5.     shape.lineTo(150,100) 
  6.     shape.lineTo(-150,100); 
  7.  
  8.     const extrudeGeometry = new THREE.ExtrudeGeometry( shape )  
  9.  
  10.     const texture = new THREE.TextureLoader().load('./img/wall.jpg'); 
  11.     texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 
  12.     texture.repeat.set( 0.01, 0.005 ); 
  13.  
  14.     const material = new THREE.MeshBasicMaterial({map: texture}); 
  15.  
  16.     const backWall = new THREE.Mesh( extrudeGeometry, material) ; 
  17.  
  18.     backWall.position.z = 150; 
  19.     backWall.position.x = -100; 
  20.     backWall.rotation.y = Math.PI * 0.5; 
  21.  
  22.     house.add(backWall); 

接下來是前面的墻,這個(gè)除了要畫出形狀外,還要摳出兩個(gè)洞:

  1. function createFrontWall() { 
  2.     const shape = new THREE.Shape(); 
  3.     shape.moveTo(-150, 0); 
  4.     shape.lineTo(150, 0); 
  5.     shape.lineTo(150,100); 
  6.     shape.lineTo(-150,100); 
  7.     shape.lineTo(-150,0); 
  8.  
  9.     const window = new THREE.Path(); 
  10.     window.moveTo(30,30) 
  11.     window.lineTo(80, 30) 
  12.     window.lineTo(80, 80) 
  13.     window.lineTo(30, 80); 
  14.     window.lineTo(30, 30); 
  15.     shape.holes.push(window); 
  16.  
  17.     const door = new THREE.Path(); 
  18.     door.moveTo(-30, 0) 
  19.     door.lineTo(-30, 80) 
  20.     door.lineTo(-80, 80) 
  21.     door.lineTo(-80, 0); 
  22.     door.lineTo(-30, 0); 
  23.     shape.holes.push(door); 
  24.  
  25.     const extrudeGeometry = new THREE.ExtrudeGeometry( shape )  
  26.  
  27.     const texture = new THREE.TextureLoader().load('./img/wall.jpg'); 
  28.     texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 
  29.     texture.repeat.set( 0.01, 0.005 ); 
  30.  
  31.     const material = new THREE.MeshBasicMaterial({map: texture} ); 
  32.  
  33.     const frontWall = new THREE.Mesh( extrudeGeometry, material ) ; 
  34.  
  35.     frontWall.position.z = 150; 
  36.     frontWall.position.x = 100; 
  37.     frontWall.rotation.y = Math.PI * 0.5; 
  38.  
  39.     house.add(frontWall); 

只是形狀上多了兩個(gè)洞,畫起來復(fù)雜些,其余的紋理、材質(zhì),還有位置等設(shè)置方式都一樣。

門窗也是畫一個(gè)形狀,摳一個(gè)洞,然后加點(diǎn)厚度變成 3D 的:

  1. function createWindow() { 
  2.     const shape = new THREE.Shape(); 
  3.     shape.moveTo(0, 0); 
  4.     shape.lineTo(0, 50) 
  5.     shape.lineTo(50,50) 
  6.     shape.lineTo(50,0); 
  7.     shape.lineTo(0, 0); 
  8.  
  9.     const hole = new THREE.Path(); 
  10.     hole.moveTo(5,5) 
  11.     hole.lineTo(5, 45) 
  12.     hole.lineTo(45, 45) 
  13.     hole.lineTo(45, 5); 
  14.     hole.lineTo(5, 5); 
  15.     shape.holes.push(hole); 
  16.  
  17.     const extrudeGeometry = new THREE.ExtrudeGeometry(shape); 
  18.  
  19.     var extrudeMaterial = new THREE.MeshBasicMaterial({ color: 'silver' }); 
  20.  
  21.     var window = new THREE.Mesh( extrudeGeometry, extrudeMaterial ) ; 
  22.     window.rotation.y = Math.PI / 2; 
  23.     window.position.y = 30; 
  24.     window.position.x = 100; 
  25.     window.position.z = 120; 
  26.  
  27.     house.add(window); 
  28.  
  29.     return window; 

顏色設(shè)置為銀白色。

門框也是一樣:

  1. function createDoor() { 
  2.     const shape = new THREE.Shape(); 
  3.     shape.moveTo(0, 0); 
  4.     shape.lineTo(0, 80); 
  5.     shape.lineTo(50,80); 
  6.     shape.lineTo(50,0); 
  7.     shape.lineTo(0, 0); 
  8.  
  9.     const hole = new THREE.Path(); 
  10.     hole.moveTo(5,5); 
  11.     hole.lineTo(5, 75); 
  12.     hole.lineTo(45, 75); 
  13.     hole.lineTo(45, 5); 
  14.     hole.lineTo(5, 5); 
  15.     shape.holes.push(hole); 
  16.  
  17.     const extrudeGeometry = new THREE.ExtrudeGeometry( shape ); 
  18.  
  19.     const material = new THREE.MeshBasicMaterial( { color: 'silver' } ); 
  20.  
  21.     const door = new THREE.Mesh( extrudeGeometry, material ) ; 
  22.  
  23.     door.rotation.y = Math.PI / 2; 
  24.     door.position.y = 0; 
  25.     door.position.x = 100; 
  26.     door.position.z = 230; 
  27.  
  28.     house.add(door); 

接下來是房頂,就是兩個(gè)立方體(BoxGeometry),做下旋轉(zhuǎn):

  1. const roof = createRoof(); 
  2.  
  3. const roof2 = createRoof(); 
  4. roof2.rotation.x = Math.PI / 2; 
  5. roof2.rotation.y = Math.PI / 4 * 0.6; 
  6. roof2.position.y = 130; 
  7. roof2.position.x = -50; 
  8. roof2.position.z = 155; 

房頂?shù)牧鶄€(gè)面的材質(zhì)不同,一個(gè)面放瓦片的貼圖,其余的面設(shè)置成灰色就行,模擬水泥的效果。其中,瓦片的紋理要做下旋轉(zhuǎn),設(shè)置下兩個(gè)方向的重復(fù)次數(shù)。

  1. function createRoof() { 
  2.     const geometry = new THREE.BoxGeometry( 120, 320, 10 ); 
  3.  
  4.     const texture = new THREE.TextureLoader().load('./img/tile.jpg'); 
  5.     texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 
  6.     texture.repeat.set( 5, 1); 
  7.     texture.rotation = Math.PI / 2; 
  8.     const textureMaterial = new THREE.MeshBasicMaterial({ map: texture}); 
  9.  
  10.     const colorMaterial = new THREE.MeshBasicMaterial({ color: 'grey' }); 
  11.  
  12.     const materials = [ 
  13.         colorMaterial, 
  14.         colorMaterial, 
  15.         colorMaterial, 
  16.         colorMaterial, 
  17.         colorMaterial, 
  18.         textureMaterial 
  19.     ]; 
  20.  
  21.     const roof = new THREE.Mesh( geometry, materials ); 
  22.  
  23.     house.add(roof); 
  24.  
  25.     roof.rotation.x = Math.PI / 2; 
  26.     roof.rotation.y = - Math.PI / 4 * 0.6; 
  27.     roof.position.y = 130; 
  28.     roof.position.x = 50; 
  29.     roof.position.z = 155; 
  30.  
  31.     return roof; 

接下來的床就簡(jiǎn)單了,因?yàn)椴挥米约寒嫞苯蛹虞d一個(gè)已有的模型就行,這種復(fù)雜的模型一般都是專業(yè)建模軟件畫的。

  1. function createBed() { 
  2.     var loader = new THREE.FBXLoader(); 
  3.     loader.load('./obj/bed.fbx'function ( object ) { 
  4.         object.position.x = 40; 
  5.         object.position.z = 80; 
  6.         object.position.y = 20; 
  7.  
  8.         house.add( object ); 
  9.     } ); 

再就是燈光設(shè)置為環(huán)境光,也就是每個(gè)方向的光照強(qiáng)度都一樣。

  1. const light = new THREE.AmbientLight(0xCCCCCC); 
  2. scene.add(light); 

創(chuàng)建相機(jī),使用透視相機(jī),也就是近大遠(yuǎn)小的那種透視效果:

  1. const width = window.innerWidth; 
  2. const height = window.innerHeight; 
  3. const camera = new THREE.PerspectiveCamera(60, width / height, 0.1, 1000); 

指定看的角度為 60 度,寬高比,遠(yuǎn)近范圍 0.1 到 1000。

創(chuàng)建渲染器,并用 requestAnimationFrame 一幀幀渲染就行了:

  1. const renderer = new THREE.WebGLRenderer(); 
  2. function render() { 
  3.     renderer.render(scene, camera); 
  4.     requestAnimationFrame(render) 

接下來還要支持在 3D 場(chǎng)景中漫游,這個(gè)也不用自己做,Three.js 貼心的提供了很多控制器,各自有不同的交互效果,其中有個(gè)第一人稱控制器(FirstPersonControls),就是玩游戲時(shí)那種交互,通過 W、S、A、D 鍵控制前后左右,通過鼠標(biāo)控制方向。

  1. const controls = new THREE.FirstPersonControls(camera); 
  2. controls.lookSpeed = 0.05; 
  3. controls.movementSpeed = 100; 
  4. controls.lookVertical = false

我們指定了轉(zhuǎn)換方向的速度 lookSpeed,移動(dòng)的速度 movementSpeed,禁止了縱向的轉(zhuǎn)動(dòng)。

然后每一幀都要更新一下看到的畫面,通過時(shí)鐘 Clock 獲取到過去了多久,然后更新下控制器。

  1. const clock = new THREE.Clock(); 
  2.  
  3. function render() { 
  4.     const delta = clock.getDelta(); 
  5.     controls.update(delta); 
  6.  
  7.     renderer.render(scene, camera); 
  8.     requestAnimationFrame(render) 

總結(jié)

本文寫了 Three.js 畫 3D 房子的實(shí)現(xiàn)原理。

Three.js 通過場(chǎng)景 Scene 管理各種物體,物體之間可以分組。物體由幾何體(Geometry)和材質(zhì)(Material)兩部分構(gòu)成,房子就是由立方體(BoxGeometry)、擠壓幾何體(ExtrudeGeometry)等各種幾何體構(gòu)成的,設(shè)置不同的貼圖紋理,還有位置、旋轉(zhuǎn)角度。

其中比較特殊的是 ExtrudeGeometry(擠壓幾何體),它是通過在二維平面畫一個(gè)形狀,然后“擠壓”成 三維的形式,形狀中還可以扣個(gè)洞。

房子中放了一張床,這種復(fù)雜的物體用 Three.js 手畫就比較難了,這種一般都是由專業(yè)建模軟件,比如 blender 來畫好,然后用 Three.js 加載并渲染的。

視角的改變其實(shí)就是相機(jī)位置和朝向的改變,Three.js 提供了各種控制器,比如 OrbitsControls(軌道控制器)、FirstPersonControls(第一人稱控制器)等。

我們這里要的通過鍵盤控制前后左右,通過鼠標(biāo)控制轉(zhuǎn)向的交互就可以用 FirstPersonControls。

Three.js 還是挺好玩的,業(yè)務(wù)上可能主要用于可視化、游戲,但工作之余也可以用它來做些有趣的東西。

 

責(zé)任編輯:姜華 來源: 神光的編程秘籍
相關(guān)推薦

2019-11-29 09:30:37

Three.js3D前端

2022-07-15 13:09:33

Three.js前端

2023-07-13 10:48:22

web 3DThree.jsBlender

2017-05-08 11:41:37

WebGLThree.js

2021-11-22 06:14:45

Three.js3D 渲染花瓣雨

2009-11-10 12:48:17

VB.NET三維模型

2024-07-18 06:58:36

2021-04-23 16:40:49

Three.js前端代碼

2025-05-15 08:45:00

開源前端手勢(shì)

2021-12-03 07:27:30

全景瀏覽Three.js

2022-01-16 19:23:25

Three.js粒子動(dòng)畫群星送福

2021-12-14 11:44:37

可視化Three.js 信息

2025-03-13 10:54:18

2013-05-03 16:50:22

三維實(shí)景

2025-09-19 09:29:53

Web 3D引擎Three.jsGalacean

2025-06-17 08:15:00

VTK.jsThree.js3D

2017-05-02 13:38:51

CSS繪制形狀

2022-03-07 09:20:00

JavaScripThree.jsNFT

2020-11-23 07:43:18

JS

2022-07-08 10:39:09

Three.js元宇宙VR
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品欧美黑人一区二区三区| 国产日韩欧美精品一区| 久久999免费视频| 中文字幕一区二区三区乱码不卡| 免费看男女www网站入口在线 | 中文字幕高清视频| 成人涩涩视频| 亚洲综合精品自拍| 日韩欧美一区二区三区四区| 国产又粗又长视频| 激情视频一区二区三区| 亚洲人成电影网| 亚洲AV无码久久精品国产一区| 黄色在线观看www| 国产精品久久久久久久久久久免费看| 福利视频久久| 中文字幕日本人妻久久久免费 | 欧美自拍一区| 欧美日韩亚洲国产综合| 日韩美女爱爱视频| 毛片激情在线观看| 26uuu亚洲| aaa级精品久久久国产片| 波多野结衣一本一道| 亚洲一级二级| 成人97在线观看视频| 成人免费网站黄| 国产精品qvod| 欧美一级一级性生活免费录像| 欧美女人性生活视频| 久久久久黄久久免费漫画| 国产精品毛片久久久久久| 狠狠色综合色区| 亚洲成人一二三区| 国产一区二区美女| 国产精品91在线观看| 欧美成人aaaaⅴ片在线看| 91精品啪在线观看国产81旧版| 亚洲欧洲在线视频| 超碰97在线资源站| 成人18夜夜网深夜福利网| 欧美一级欧美一级在线播放| 中文字幕第38页| 国产综合色区在线观看| 欧美日韩中文字幕| 97超碰国产精品| 中文在线字幕免费观看| 亚洲欧美在线视频| 亚洲综合首页| 九色porny丨首页在线| 国产精品欧美综合在线| 五月天婷亚洲天综合网鲁鲁鲁| 暖暖视频在线免费观看| 91亚洲精品久久久蜜桃| 精品999在线观看| 天堂av资源在线| 99r国产精品| 久久综合伊人77777麻豆| 香蕉久久国产av一区二区| 粉嫩av一区二区三区粉嫩| 97免费资源站| 国产91免费在线观看| 成人精品视频一区二区三区| 爱情岛论坛亚洲入口| 亚洲伦理在线观看| 99久久精品情趣| 久久精品日韩| 麻豆国产在线播放| 国产欧美精品日韩区二区麻豆天美| 鲁片一区二区三区| 成人亚洲性情网站www在线观看| 国产日韩亚洲欧美综合| 亚洲ai欧洲av| 成年人黄视频在线观看| 亚洲一区精品在线| 激情综合在线观看| 亚洲综合av一区二区三区| 欧美三级电影精品| 无码国产精品一区二区高潮| 精品国产一区二区三区成人影院| 日韩久久免费电影| 亚洲一级理论片| 永久亚洲成a人片777777| 欧美激情三级免费| 99精品人妻国产毛片| 美女一区二区视频| 99久久精品久久久久久ai换脸| 男人天堂综合网| 国产丝袜美腿一区二区三区| 国产成年人在线观看| 国产精品—色呦呦| 色94色欧美sute亚洲线路二 | 五月天婷婷激情| 麻豆一区二区在线| 懂色中文一区二区三区在线视频| 天天干天天插天天操| 国产精品美女一区二区在线观看| 51xx午夜影福利| 亚洲黄色免费看| 欧美精品vⅰdeose4hd| 日本一卡二卡在线| 久久精品国产68国产精品亚洲| 欧美激情一区二区三区久久久| 日韩精品一区不卡| 成人美女视频在线看| 在线观看亚洲视频啊啊啊啊| 麻豆免费版在线观看| 91精品国产黑色紧身裤美女| 国产中年熟女高潮大集合| 欧美成人午夜| 国产日韩欧美黄色| 毛片免费在线观看| 无码av中文一区二区三区桃花岛| 亚洲一级片网站| 欧美日韩播放| 98精品在线视频| 精品久久在线观看| 国产精品久久久久永久免费观看| 欧美性大战久久久久xxx| 网站一区二区| 色噜噜国产精品视频一区二区| 少妇一级淫片免费放中国 | 精品无码在线观看| 99精品国产一区二区青青牛奶| 成人h猎奇视频网站| 国产女人在线观看| 香蕉成人伊视频在线观看| 夜夜夜夜夜夜操| 欧美尿孔扩张虐视频| 久久五月情影视| 欧美日韩在线视频播放| 成人一区在线观看| 中文字幕中文字幕99| 卡通欧美亚洲| 亚洲国产女人aaa毛片在线| 国内毛片毛片毛片毛片毛片| 蘑菇福利视频一区播放| 91精品免费| 国产黄大片在线观看画质优化| 日韩欧美国产骚| 中文字幕99页| 欧美在线国产| 成人欧美在线视频| 免费在线观看av| 91搞黄在线观看| 疯狂揉花蒂控制高潮h| 欧美日韩精品一本二本三本| 国产精品免费久久久| 美国成人毛片| 在线观看不卡一区| 精品少妇一区二区三区免费观| 国内久久视频| 96pao国产成视频永久免费| se在线电影| 在线视频亚洲一区| 国产午夜在线一区二区三区| 韩日成人av| 成人在线视频电影| 白白色在线观看| 欧美精品一区二区三区蜜臀| 免费毛片在线播放免费| 国产精品99久久久久久久女警| 一本一本久久a久久精品综合妖精| 国产一二三在线| 亚洲欧美综合v| 久久99国产综合精品免费| 91在线国内视频| 91视频 -- 69xx| 希岛爱理av免费一区二区| 国产成人拍精品视频午夜网站| 免费人成在线观看网站| 欧美午夜性色大片在线观看| 在线观看国产网站| 美女黄网久久| 日本一区二区三区视频免费看| 成人精品三级| 精品国产一区二区三区久久久狼 | 色婷婷综合激情| 天天躁日日躁aaaa视频| 美国三级日本三级久久99| 一区二区精品在线观看| 伊人久久大香线蕉综合影院首页| 久久久精品国产| 午夜精品久久久久久久99| 亚洲图片欧美视频| 嘿嘿视频在线观看| 精品一区二区三区免费播放 | 亚洲片区在线| 色播五月综合| 欧美日韩中出| 91国产精品91| 成人欧美亚洲| 欧美一区二区三区在线电影| 午夜写真片福利电影网| 成人av中文字幕| 欧美日韩在线免费播放| 久久精品亚洲人成影院| 国产精品亚洲不卡a| 周于希免费高清在线观看| 日韩视频在线免费| 欧美白人做受xxxx视频| 欧美猛男超大videosgay| 久久精品www| 久久精品视频免费| 老司机午夜性大片| 亚洲综合好骚| 最新国产精品久久| 一区三区在线欧| 91中文在线视频| 毛片大全在线观看| 久久精品国产精品亚洲| 天天综合网天天综合| 精品视频一区二区不卡| 免费在线观看日韩| 国产视频在线观看一区二区三区| 欧美高清精品一区二区| 老司机亚洲精品| 国产又粗又爽又黄的视频 | 亚洲国产一区二区三区在线播| 精品视频在线一区| 国产99视频在线观看| 色婷婷在线播放| 亚洲夜晚福利在线观看| 三级在线观看网站| 在线播放/欧美激情| 天天操夜夜操视频| 一区二区三区四区在线免费观看| 少妇按摩一区二区三区| 国产成人精品亚洲777人妖| 激情综合网俺也去| 夜夜嗨一区二区| 今天免费高清在线观看国语| 久久性感美女视频| 欧美一区2区三区4区公司二百| 久久一级大片| 国产美女搞久久| а√天堂8资源在线| 美女av一区二区| 欧美性天天影视| 亚洲精品综合久久中文字幕| 午夜精品久久久久久久爽 | 99热手机在线| 亚洲国产高清一区二区三区| 国产夫妻自拍一区| 欧美a级在线| 中国成人在线视频| 成人看的视频| 色综合久久av| 一道在线中文一区二区三区| 久久亚洲高清| 亚洲成aⅴ人片久久青草影院| 超碰97在线播放| 在线欧美激情| av一区二区三区免费| 国产日韩在线观看视频| 成人在线国产精品| 国产精品va视频| 91视频免费在线观看| 欧美经典一区| 91久久嫩草影院一区二区| 日韩美女在线| 国产欧美一区二区三区久久人妖| 搜成人激情视频| 国产精品欧美亚洲777777| 欧美va视频| 国产mv久久久| 国产高清日韩| 1卡2卡3卡精品视频| 蜜桃精品视频| av成人综合网| 精品一区在线| 水蜜桃一区二区| 四季av在线一区二区三区| 影音先锋欧美资源| 国产综合亚洲精品一区二| 国产日本在线播放| 午夜亚洲激情| 亚洲成人av免费看| 国产精品系列在线播放| 岛国精品一区二区三区| 成人激情小说网站| 能免费看av的网站| 亚洲精品一二三| 成人精品在线看| 91成人免费在线| 一级黄色大片免费| 亚洲高清色综合| 国产色a在线| 欧美国产日韩免费| 成人精品高清在线视频| 国产精品9999久久久久仙踪林| 九九亚洲视频| av电影一区二区三区| 亚洲日本视频| 狠狠热免费视频| 国产成人在线视频播放| av黄色一级片| 国产精品美女久久久久久2018| 国产乡下妇女做爰| 欧美写真视频网站| www视频在线| 日韩av一区二区在线| 成年人网站在线| 日本道色综合久久影院| 日韩精品第二页| 国产91社区| 久久资源中文字幕| 给我免费播放片在线观看| 日本欧美在线观看| 法国伦理少妇愉情| 亚洲欧美日本韩国| 精品久久久久久久久久久国产字幕| 欧美日韩精品一区二区在线播放| 日本高清视频免费观看| 中文字幕久久久| segui88久久综合9999| 亚洲尤物视频网| 国产一区二区欧美| 日韩国产成人无码av毛片| 日本不卡视频在线观看| 欧美亚一区二区三区| 一区二区三区在线免费| 欧美日韩 一区二区三区| 亚洲国产成人在线播放| 黄色在线观看网站| 欧洲美女7788成人免费视频| 免费精品一区| 欧美xxxx吸乳| 奇米亚洲午夜久久精品| 精品中文字幕在线播放| 亚洲欧美另类久久久精品2019| 亚洲永久精品视频| 亚洲人成欧美中文字幕| 国产探花在线观看| 99久久综合狠狠综合久久止| 久久久影院免费| 成年人免费大片| 9i在线看片成人免费| 日韩免费视频网站| 日韩精品一区二区三区视频播放| 超碰国产在线| 国产精品久久久久久久午夜| 日韩高清影视在线观看| 男人添女人荫蒂免费视频| 国产精品综合在线视频| 日韩视频在线观看免费视频| 色老汉av一区二区三区| 青青久在线视频| 久久久久久国产免费| 猫咪成人在线观看| 岳毛多又紧做起爽| 国产亚洲欧美日韩俺去了| 中文字幕一区二区三区四区欧美| 国产亚洲视频中文字幕视频| 韩日精品一区| 国产高清免费在线| 国产盗摄一区二区三区| 青娱乐国产精品| 亚洲第一综合天堂另类专| 爱情岛论坛亚洲品质自拍视频网站| 国产精品香蕉视屏| 一区二区三区导航| 欧美成人三级伦在线观看| 亚洲一区在线观看网站| 神马午夜电影一区二区三区在线观看 | 5252色成人免费视频| 美国成人xxx| 国产av无码专区亚洲精品| 国产欧美精品国产国产专区 | 97人人干人人| 国内一区二区三区| 私密视频在线观看| 欧洲精品在线观看| 日本中文字幕伦在线观看| 国产欧美精品在线| 欧美午夜精品| 亚洲精品国产成人av在线| 欧美日韩亚洲天堂| 欧美男男激情freegay| 国产日韩欧美中文| 欧美在线免费一级片| 久久久久久无码精品人妻一区二区| 午夜视频一区二区| 精品无吗乱吗av国产爱色| 国产精品丝袜高跟| 午夜国产精品视频| 亚洲制服丝袜在线播放| 欧美日韩亚洲综合| 日本黄色免费在线| 色视频一区二区三区| 国产原创一区二区三区| 久久中文字幕免费| 久久中文字幕一区| 久久精品论坛| 国内av一区二区| 五月天婷婷综合| av中文在线| 久久艹中文字幕| 久久er精品视频| 国产一卡二卡在线播放|