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

用 Three.js 畫(huà)個(gè) 3D 生日蛋糕送給他(她)

開(kāi)發(fā) 前端
Mesh 比較常用,它是由一個(gè)個(gè)三角形構(gòu)成的幾何體,還可以在每個(gè)面上貼圖。所以,參數(shù)有兩個(gè),幾何體 Geometry 和材質(zhì) Material。

[[436426]]

作為整天和 UI 打交道的前端工程師,是否想在他(她)生日的時(shí)候用代碼送上一份驚喜呢?

不妨用 Three.js 做個(gè) 3D 的蛋糕送給 ta,既浪漫又能展現(xiàn)你技術(shù)的魅力。

這篇文章我們就來(lái)學(xué)習(xí)下如何用 Three.js 畫(huà)一個(gè)蛋糕。

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

Three.js 相關(guān)基礎(chǔ)

Three.js 是通過(guò)場(chǎng)景 Scene 來(lái)管理所有的物體的,加到 Scene 的物體還可以分個(gè)組:

  1. const scene = new THREE.Scene(); 
  2.  
  3. scene.add(xxx); 
  4.  
  5. const group = new THREE.Group(); 
  6.  
  7. group.add(yyy); 
  8.  
  9. group.add(zzz); 
  10.  
  11. scene.add(group); 

想要把 Scene 中的所有物體渲染出來(lái),需要指定一個(gè)相機(jī) camera,然后用 renderer 來(lái)渲染,如果有動(dòng)畫(huà)效果,要用 requestAnimationFrame 來(lái)一幀幀不斷渲染。

  1. const renderer = new THREE.WebGLRenderer(); 
  2.  
  3. function render() { 
  4.  
  5. renderer.render(scene, camera); 
  6.  
  7. requestAnimationFrame(render); 
  8.  
  9.  
  10. render(); 

相機(jī) camera 分為從一個(gè)點(diǎn)去看的透視相機(jī) PerspectiveCamera,還有從一個(gè)面去投影的正交相機(jī) OrthographicCamera。

透視相機(jī)的特點(diǎn)是近大遠(yuǎn)小,而正交的則不是,就是一個(gè)平行投影,大小不變。

三維世界還需要指定一個(gè)光源,不然是全黑的,光源種類(lèi)很多,常用的有這些:

  • 點(diǎn)光源:從一個(gè)點(diǎn)發(fā)射光線,就像燈泡一樣
  • 平行光:平行的光線
  • 環(huán)境光:均勻照射每個(gè)地方
  • 聚光燈:舞臺(tái)聚光燈的光源

三維場(chǎng)景中的物體有很多種,比如永遠(yuǎn)面向相機(jī)的平面是 Sprite(我們做“漫天花雨”效果用的那個(gè)),還有由三角形構(gòu)成的物體叫做 Mesh。

Mesh 比較常用,它是由一個(gè)個(gè)三角形構(gòu)成的幾何體,還可以在每個(gè)面上貼圖。所以,參數(shù)有兩個(gè),幾何體 Geometry 和材質(zhì) Material。

比如圓柱體就是一個(gè) Mesh,創(chuàng)建它的時(shí)候要指定圓柱幾何體 CylinderBufferGeometry 和每個(gè)面的材質(zhì) Material。

  1. const 圓柱幾何體 = new THREE.CylinderBufferGeometry(上圓半徑, 下圓半徑, 高度, 側(cè)面分段數(shù)量); 
  2.  
  3. const 側(cè)面材質(zhì) = new THREE.MeshBasicMaterial({map: 紋理圖片}); 
  4. const 上面材質(zhì) = new THREE.MeshBasicMaterial({color: 'red'}); 
  5. const 下面材質(zhì) = new THREE.MeshBasicMaterial({color: 'red'}); 
  6.  
  7. const 圓柱 = new THREE.Mesh(圓柱幾何體, [側(cè)面材質(zhì), 上面材質(zhì), 下面材質(zhì)]); 

MeshBasicMaterial 是基礎(chǔ)的材質(zhì),可以通過(guò) color 來(lái)指定顏色,也可以通過(guò) map 來(lái)指定紋理圖片 texture。

各種 Mesh 中比較特殊是文字,它用的是 TextGeometry,文字需要從一個(gè) xxx.typeface.json 中加載。

而這種 json 文件可以用字體文件 ttf 來(lái)轉(zhuǎn)換得到。用ttf 轉(zhuǎn) typeface.json 的這個(gè)網(wǎng)站來(lái)轉(zhuǎn):

之后就可以顯示文字了:

  1. const fontLoader = new THREE.FontLoader(); 
  2.  
  3. fontLoader.load('./font/xxx.typeface.json'function (font) { 
  4.     var textGeometry = new THREE.TextGeometry('文字', 參數(shù)); 
  5.     const textMaterial = [ 
  6.         new THREE.MeshBasicMaterial({color: '字體顏色'}), 
  7.         new THREE.MeshBasicMaterial({color: '側(cè)面顏色'}), 
  8.     ]; 
  9.  
  10.     const text = new THREE.Mesh(textGeometry, textMaterial); 
  11. }); 

這些就是我們會(huì)用到的 Three.js 基礎(chǔ),簡(jiǎn)單做個(gè)小結(jié):

  • Three.js 是通過(guò) Scene 來(lái)管理各種物體的,物體還可以分下組。
  • 物體中常見(jiàn)的有 Mesh 和 Sprite 等,Sprite 是永遠(yuǎn)面向相機(jī)的一個(gè)平面,Mesh 是由三角形構(gòu)成的三維物體。Mesh 要指定幾何體Geometry 和材質(zhì) Material,常用的材質(zhì)可以是顏色或者紋理貼圖。其中文字 TextGeometry 比較特殊,需要一個(gè) typeface.json 的文件,這個(gè)可以由 ttf 轉(zhuǎn)換得到。
  • 場(chǎng)景中的物體準(zhǔn)備好之后,還需要設(shè)置下光源 Light 和相機(jī) Camera,相機(jī)主要有從點(diǎn)去看的透視相機(jī)和從一個(gè)平面去投影的正交相機(jī),之后就可以通過(guò)渲染器 Renderer 渲染出來(lái)了,結(jié)合 requestAnimationFrame 來(lái)一幀幀的渲染。

基礎(chǔ)學(xué)完之后,正式開(kāi)始畫(huà)蛋糕了。

畫(huà) 3D 蛋糕

蛋糕其實(shí)就是由 4 個(gè)圓柱體加上文字構(gòu)成的,每個(gè)圓柱體都設(shè)置了不同的位置,圓柱體的側(cè)面和上下面都貼上不同的貼圖,就是一個(gè)蛋糕。

我們先準(zhǔn)備蛋糕的貼圖:

 

使用紋理加載器 TextureLoader 去加載他們:

  1. const cakeTexture1 = new THREE.TextureLoader().load('img/cake1.png'); 
  2.  
  3. const cakeTexture2 = new THREE.TextureLoader().load('img/cake2.png'); 
  4.  
  5. const cakeTexture3 = new THREE.TextureLoader().load(`img/cake3.png`); 
  6.  
  7. const cakeTexture4 = new THREE.TextureLoader().load('img/cake4.png'); 

然后構(gòu)成紋理貼圖的材質(zhì):

  1. const cakeMaterail1 = new THREE.MeshBasicMaterial({map: cakeTexture1}); 
  2.  
  3. const cakeMaterail2 = new THREE.MeshBasicMaterial({map: cakeTexture2}); 
  4.  
  5. const cakeMaterail3 = new THREE.MeshBasicMaterial({map: cakeTexture3}); 
  6.  
  7. const cakeMaterail4 = new THREE.MeshBasicMaterial({map: cakeTexture4}); 

除了紋理貼圖的材質(zhì)外,再準(zhǔn)備個(gè)顏色構(gòu)成的材質(zhì):

  1. const pinkMaterial = new THREE.MeshBasicMaterial({color: 'pink'}); 

然后創(chuàng)建 4 個(gè)圓柱體的物體(Mesh),使用不同的貼圖材質(zhì)和顏色材質(zhì):

  1. const cakeGeometry1 = new THREE.CylinderBufferGeometry(100, 100, 70, 40); 
  2.  
  3. const cakePart1 = new THREE.Mesh(cakeGeometry1, [cakeMaterail1, pinkMaterial, pinkMaterial]); 

圓柱體的幾何體 CylinderBufferGeometry 的參數(shù)分別是上面圓的半徑,下面圓的半徑,高度,側(cè)面的分割次數(shù)。

上面圓半徑保持一致,這樣才是圓柱體。側(cè)面分割次數(shù)設(shè)置為 40,這樣比較圓滑。

之后還設(shè)置下位移,然后就可以加到蛋糕分組里了。

我們用同樣的方式創(chuàng)建四個(gè)圓柱體,設(shè)置不同的大小和位置,貼不同的圖:

  1. const cakeGeometry1 = new THREE.CylinderBufferGeometry(100, 100, 70, 40); 
  2. const cakePart1 = new THREE.Mesh(cakeGeometry1, [cakeMaterail1, pinkMaterial, pinkMaterial]); 
  3. cakePart1.translateY(45) 
  4.  
  5. const cakeGeometry2 = new THREE.CylinderBufferGeometry(120, 120, 70, 40); 
  6. const cakePart2 = new THREE.Mesh(cakeGeometry2,[cakeMaterail3, pinkMaterial, pinkMaterial]); 
  7. cakePart2.translateY(-25) 
  8.  
  9. const cakeGeometry3 = new THREE.CylinderBufferGeometry(140, 140, 60, 40); 
  10. const cakePart3 = new THREE.Mesh(cakeGeometry3, [cakeMaterail2, pinkMaterial, pinkMaterial]); 
  11. cakePart3.translateY(-90) 
  12.  
  13. const cakeGeometry4 = new THREE.CylinderBufferGeometry(160, 160, 10, 40); 
  14. const cakePart4 = new THREE.Mesh(cakeGeometry4, [cakeMaterail4, cakeMaterail4, cakeMaterail4]); 
  15. cakePart4.translateY(-120) 
  16.  
  17. cake.add(cakePart1) 
  18. cake.add(cakePart2) 
  19. cake.add(cakePart3) 
  20. cake.add(cakePart4) 

如果對(duì)坐標(biāo)位置拿不準(zhǔn),可以在 Scene 中加上一個(gè)坐標(biāo)的輔助工具 AxisHelper。參數(shù)是坐標(biāo)軸長(zhǎng)度。

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

然后是文字的部分,這個(gè)要先通過(guò)字體文件 ttf 轉(zhuǎn)成 typeface.json 的文件,然后用 fontLoader 來(lái)加載,之后創(chuàng)建相應(yīng)的 Mesh:

  1. fontLoader.load('./font/guang.typeface.json'function (font) { 
  2.     var textGeometry = new THREE.TextGeometry('光光', { 
  3.         font: font, 
  4.         size: 30, 
  5.         height: 5, 
  6.         bevelEnabled: true
  7.         bevelSize: 10, 
  8.     }); 
  9.     const textMaterial = ['white''red'].map(color => new THREE.MeshBasicMaterial({color})); 
  10.  
  11.     const text = new THREE.Mesh(textGeometry, textMaterial); 
  12.     text.translateY(90) 
  13.     text.translateX(-45) 
  14.  
  15.     cake.add(text);  
  16. }); 

TextGeometry 需要設(shè)置的參數(shù)有字體大小 size,厚度 height,以及邊緣是否是曲面 bevelEnabled,和曲面的大小 bevelSize。

我們這里的效果是需要開(kāi)啟曲面的。

4 個(gè)圓柱體畫(huà)完了,文字也畫(huà)完了,那蛋糕就算是畫(huà)完了,之后設(shè)置下光源、相機(jī),就可以用 Renderer 渲染了。

光源使用環(huán)境光,因?yàn)橐鶆虻恼丈洌?/p>

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

相機(jī)使用正交相機(jī),因?yàn)椴恍枰筮h(yuǎn)小的透視效果:

  1. const width = window.innerWidth; 
  2. const height = window.innerHeight; 
  3. //窗口寬高比 
  4. const k = width / height; 
  5. //三維場(chǎng)景顯示范圍的高度 
  6. const s = 200; 
  7.  
  8. const camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000); 
  9.  
  10. camera.position.set(0, 100, 500) 
  11. camera.lookAt(scene.position); 

正交相機(jī)的參數(shù)分別是左右上下遠(yuǎn)近的三維視野范圍,我們指定高度為 200,然后根據(jù)窗口的寬高比算出寬度。遠(yuǎn)近可以設(shè)置一個(gè)比較大的范圍。

之后就可以用 Renderer 來(lái)渲染了。把渲染出的 canvas 的 dom 掛載到 body 上。

  1. const renderer = new THREE.WebGLRenderer(); 
  2.  
  3. renderer.setSize(width, height); 
  4. //設(shè)置背景顏色 
  5. renderer.setClearColor(0xFFFFFF, 1); 
  6. document.body.appendChild(renderer.domElement); 
  7.  
  8. function render() {         
  9.     renderer.render(scene, camera); 
  10.  
  11.     cake.rotation.y += 0.005; 
  12.  
  13.     requestAnimationFrame(render) 
  14. render() 

在每幀 render 之前,還做了個(gè)圍繞 y 軸的自動(dòng)旋轉(zhuǎn)。

還要支持手動(dòng)的旋轉(zhuǎn),這個(gè)直接使用 Three.js 的軌道控制器 OrbitControls 就行。

  1. const controls = new THREE.OrbitControls(camera); 

參數(shù)是相機(jī),因?yàn)檫@種視野的改變就是通過(guò)改變相機(jī)位置和朝向來(lái)實(shí)現(xiàn)的。

創(chuàng)建了 Scene 中的蛋糕的每一部分,設(shè)置好了光源、相機(jī),用渲染器做了一幀幀的渲染,并且添加了用鼠標(biāo)來(lái)改變視角的軌道控制器之后,就完成了 3D 蛋糕的制作。

我們來(lái)看下效果:

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

全部代碼:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>生日蛋糕</title> 
  6.     <style> 
  7.         body { 
  8.             margin: 0; 
  9.             overflow: hidden; 
  10.         } 
  11.     </style> 
  12.     <script src="./js/three.js"></script> 
  13.     <script src="./js/OrbitControls.js"></script> 
  14. </head> 
  15. <body> 
  16. <script> 
  17.     const width = window.innerWidth; 
  18.     const height = window.innerHeight; 
  19.     //窗口寬高比 
  20.     const k = width / height; 
  21.     //三維場(chǎng)景顯示范圍的寬度 
  22.     const s = 200; 
  23.  
  24.     const camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000); 
  25.  
  26.     const fontLoader = new THREE.FontLoader(); 
  27.  
  28.     const scene = new THREE.Scene(); 
  29.  
  30.     const cake = new THREE.Group(); 
  31.  
  32.     const renderer = new THREE.WebGLRenderer(); 
  33.  
  34.  
  35.     function create() { 
  36.         renderer.setSize(width, height); 
  37.         //設(shè)置背景顏色 
  38.         renderer.setClearColor(0xFFFFFF, 1); 
  39.         document.body.appendChild(renderer.domElement); 
  40.  
  41.         camera.position.set(0, 100, 500) 
  42.         camera.lookAt(scene.position); 
  43.  
  44.         const light = new THREE.AmbientLight(0xCCCCCC); 
  45.         scene.add(light); 
  46.  
  47.         const axisHelper = new THREE.AxisHelper(2500); 
  48.         scene.add(axisHelper); 
  49.  
  50.         const cakeTexture1 = new THREE.TextureLoader().load('img/cake1.png'); 
  51.         const cakeTexture2 = new THREE.TextureLoader().load('img/cake2.png'); 
  52.         const cakeTexture3 = new THREE.TextureLoader().load(`img/cake3.png`); 
  53.         const cakeTexture4 = new THREE.TextureLoader().load('img/cake4.png'); 
  54.  
  55.         const cakeMaterail1 = new THREE.MeshBasicMaterial({map: cakeTexture1}); 
  56.         const cakeMaterail2 = new THREE.MeshBasicMaterial({map: cakeTexture2}); 
  57.         const cakeMaterail3 = new THREE.MeshBasicMaterial({map: cakeTexture3}); 
  58.         const cakeMaterail4 = new THREE.MeshBasicMaterial({map: cakeTexture4});  
  59.  
  60.         const pinkMaterial = new THREE.MeshBasicMaterial({color: 'pink'}); 
  61.  
  62.         const cakeGeometry1 = new THREE.CylinderBufferGeometry(100, 100, 70, 40); 
  63.         const cakePart1 = new THREE.Mesh(cakeGeometry1, [cakeMaterail1, pinkMaterial, pinkMaterial]); 
  64.         cakePart1.translateY(45) 
  65.   
  66.         const cakeGeometry2 = new THREE.CylinderBufferGeometry(120, 120, 70, 40); 
  67.         const cakePart2 = new THREE.Mesh(cakeGeometry2,[cakeMaterail3, pinkMaterial, pinkMaterial]); 
  68.         cakePart2.translateY(-25) 
  69.  
  70.         const cakeGeometry3 = new THREE.CylinderBufferGeometry(140, 140, 60, 40); 
  71.         const cakePart3 = new THREE.Mesh(cakeGeometry3, [cakeMaterail2, pinkMaterial, pinkMaterial]); 
  72.         cakePart3.translateY(-90) 
  73.  
  74.         const cakeGeometry4 = new THREE.CylinderBufferGeometry(160, 160, 10, 40); 
  75.         const cakePart4 = new THREE.Mesh(cakeGeometry4, [cakeMaterail4, cakeMaterail4, cakeMaterail4]); 
  76.         cakePart4.translateY(-120) 
  77.  
  78.         cake.add(cakePart1) 
  79.         cake.add(cakePart2) 
  80.         cake.add(cakePart3) 
  81.         cake.add(cakePart4) 
  82.  
  83.         fontLoader.load('./font/guang.typeface.json'function (font) { 
  84.             var textGeometry = new THREE.TextGeometry('光光', { 
  85.                 font: font, 
  86.                 size: 30, 
  87.                 height: 5, 
  88.                 bevelEnabled: true
  89.                 bevelSize: 10, 
  90.             }); 
  91.             const textMaterial = ['white''red'].map(color => new THREE.MeshBasicMaterial({color})); 
  92.  
  93.             const text = new THREE.Mesh(textGeometry, textMaterial); 
  94.             text.translateY(90) 
  95.             text.translateX(-45) 
  96.             cake.add(text);  
  97.         }); 
  98.  
  99.         scene.add(cake); 
  100.     } 
  101.  
  102.  
  103.     function render() {         
  104.         renderer.render(scene, camera); 
  105.  
  106.         cake.rotation.y += 0.005; 
  107.  
  108.         requestAnimationFrame(render) 
  109.     } 
  110.  
  111.     create() 
  112.     render() 
  113.  
  114.     const controls = new THREE.OrbitControls(camera); 
  115. </script> 
  116. </body> 
  117. </html> 

總結(jié)

本文我們用 Three.js 來(lái)實(shí)現(xiàn)了 3D 蛋糕的效果。

首先我們學(xué)習(xí)了下 Three.js 的基礎(chǔ):通過(guò) Scene 來(lái)管理物體,物體可以分組,物體包括 Mesh、Sprite 等,Mesh 是三角形構(gòu)成的 3D 物體,要分別指定幾何體 Geometry 和材質(zhì) Material。材質(zhì)可以是紋理(Texture)貼圖、也可以是顏色。其中文字的 Mesh 需要做 ttf 到 typeface.json 的轉(zhuǎn)換,加載這個(gè) json 才能顯示文字。

物體創(chuàng)建完了之后,還要設(shè)置相機(jī)、燈光等,然后通過(guò)渲染器來(lái)一幀幀的渲染。

調(diào)試的時(shí)候還可以添加 AxisHelper 坐標(biāo)系輔助工具來(lái)輔助開(kāi)發(fā)。

然后我們實(shí)現(xiàn)了 3D 蛋糕:

通過(guò) 4 個(gè)圓柱體 + 文字來(lái)畫(huà)的,圓柱體用了不同的紋理貼圖材質(zhì),設(shè)置了不同的位置,然后組成蛋糕的 group。

設(shè)置了環(huán)境光,使用了正交相機(jī),還啟用了軌道控制器 OrbitControls,來(lái)實(shí)現(xiàn)鼠標(biāo)拖拽改變相機(jī)位置,進(jìn)而改變視野角度的效果。 

下個(gè)他(她)的生日,不妨試試用 Three.js 畫(huà)個(gè)蛋糕送給他(她),或許會(huì)有不一樣的收獲哦。

 

責(zé)任編輯:武曉燕 來(lái)源: 神光的編程秘籍
相關(guān)推薦

2019-11-29 09:30:37

Three.js3D前端

2024-07-18 06:58:36

2022-01-16 19:23:25

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

2021-11-27 10:42:01

Three.js3D可視化AudioContex

2023-07-13 10:48:22

web 3DThree.jsBlender

2021-04-23 16:40:49

Three.js前端代碼

2025-06-30 09:15:47

2025-09-19 09:29:53

Web 3D引擎Three.jsGalacean

2016-06-01 09:19:08

開(kāi)發(fā)3D游戲

2022-03-07 09:20:00

JavaScripThree.jsNFT

2021-04-21 09:20:15

three.js3d前端

2023-08-04 09:56:15

2024-02-26 00:00:00

前端工具Space.js

2023-09-01 09:30:22

Three.js3D 圖形庫(kù)

2022-07-15 13:09:33

Three.js前端

2021-11-22 06:14:45

Three.js3D 渲染花瓣雨

2017-05-08 11:41:37

WebGLThree.js

2025-06-17 08:15:00

VTK.jsThree.js3D

2025-05-15 08:45:00

開(kāi)源前端手勢(shì)

2021-09-16 07:52:18

SwiftUScroll效果
點(diǎn)贊
收藏

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

国产亚洲精品久久飘花| 国产丝袜一区二区三区| 亚洲成年人专区| 香港日本韩国三级网站| 福利小视频在线观看| 天天综合亚洲| 欧美成人一区二区三区在线观看| 免费观看亚洲视频| 天天色天天操天天射| 久久久久看片| 丝袜美腿精品国产二区| 一级网站在线观看| 欧美理论片在线播放| www.亚洲色图| 国产精品白嫩初高中害羞小美女| 日韩在线视频免费看| 亚洲码欧美码一区二区三区| 一区二区三区不卡视频| 久久国产精品 国产精品| 波多野结衣家庭主妇| 欧美成人69| 亚洲美女精品久久| 一区二区在线播放视频| 色爱综合区网| 日本一区二区免费在线| 91在线观看网站| 日本高清不卡码| 国产韩日影视精品| 亚洲激情视频网站| 中文字幕视频三区| 黄在线观看免费网站ktv| 国产精品欧美一级免费| 成人在线免费网站| 婷婷国产成人精品视频| 97精品久久| 精品福利在线看| 中文字幕乱码一区二区三区| 亚欧在线观看视频| 精品中文字幕一区二区| 奇米一区二区三区四区久久| 成人涩涩小片视频日本| 天堂网av成人| 日韩欧美高清一区| 久久撸在线视频| 日韩av影片| 国产精品久久久久aaaa| 久久人人97超碰人人澡爱香蕉| ,一级淫片a看免费| 免费在线亚洲| 久久久久久久国产| 艳妇荡乳欲伦69影片| 黑丝美女一区二区| 日韩av在线导航| 麻豆短视频在线观看| 国产成人午夜性a一级毛片| 婷婷六月综合亚洲| 国产精品美女在线播放| 韩国中文字幕2020精品| 91污片在线观看| 国产有码在线一区二区视频| 免费无码国产精品| 国产日韩亚洲欧美精品| 欧美大学生性色视频| 国产又粗又硬又长又爽| 欧美电影免费观看高清| 伊人久久免费视频| 全黄一级裸体片| 欧美调教视频| 亚洲精品视频二区| 日本少妇一区二区三区| 久久国产精品免费一区二区三区| 欧美日韩国产片| 日韩无套无码精品| www.精品| 福利精品视频在线| 一女被多男玩喷潮视频| 男人久久天堂| 日韩欧美中文在线| 人妻无码视频一区二区三区| 性感美女一区二区在线观看| 日韩欧美在线视频观看| 国产精品久久久久9999小说| 婷婷午夜社区一区| 91福利社在线观看| 欧美三级理论片| 欧美一区=区三区| 91精品国产欧美一区二区| 99re6在线观看| 精品国产乱码一区二区三区| 精品区一区二区| 国产免费一区二区三区最新6| 国产福利资源一区| 日韩精品在线观| 一区二区三区伦理片| 欧美综合在线视频观看| 日韩中文字幕在线视频播放| 在线免费看av网站| 欧美黄污视频| 91精品国产色综合久久不卡98口| 亚洲天堂视频网站| 天堂午夜影视日韩欧美一区二区| 91av在线播放视频| 91青青草视频| 国内精品久久久久影院色| 国产福利久久精品| 日本一卡二卡四卡精品| 欧美激情在线观看视频免费| 在线看无码的免费网站| japanese色国产在线看视频| 色妹子一区二区| 992tv人人草| 美女呻吟一区| 亚洲精品美女久久久| a级在线免费观看| 综合激情一区| 欧美影院久久久| 亚洲最大成人在线视频| 成人高清视频在线观看| 欧美在线一二三区| 成人国产免费电影| 激情成人中文字幕| 欧美第一页浮力影院| 日韩精品一区二区三区中文字幕| 国产丝袜一区二区三区免费视频| 操她视频在线观看| 夜久久久久久| 91久久综合亚洲鲁鲁五月天| 天天干天天操av| 久久久久久久久97黄色工厂| 日韩最新中文字幕| 国产一区一一区高清不卡| 欧美成人性福生活免费看| 亚洲av无码国产精品久久| 国产精品二区不卡| 日韩av免费在线播放| 精品美女www爽爽爽视频| 国产亚洲一区二区三区在线观看| 日本黄xxxxxxxxx100| 国模冰冰炮一区二区| 欧美va亚洲va香蕉在线| a天堂中文字幕| 亚洲美洲欧洲综合国产一区| 91在线精品播放| 福利在线观看| 都市激情亚洲色图| 中国免费黄色片| 欧美影院一区| 成人免费xxxxx在线观看| 成人免费在线电影| 欧美视频一区二区三区…| 久久久久亚洲av成人网人人软件| 97在线精品| 国产精品美女免费视频| 天堂在线一二区| 亚洲免费视频中文字幕| 亚洲综合色在线观看| 欧美猛男男男激情videos| 久久久久久久久久久网站| 国产免费黄色大片| 1区2区3区精品视频| 国产一线二线三线在线观看| 欧美一区二区三区红桃小说| 欧美另类在线播放| 国产精品熟女久久久久久| 国产精品福利一区| 午夜在线观看av| 精品欧美久久| 国产精品视频精品| 3d成人动漫在线| 欧美乱熟臀69xxxxxx| www.涩涩爱| 黄一区二区三区| 最新国产精品久久| 国产精品白丝久久av网站| 久久视频免费在线播放| 亚洲一级在线播放| 国产精品丝袜在线| 欧美成人乱码一二三四区免费| 日韩成人精品一区| 成人性生交大片免费看视频直播| 男人的天堂在线视频免费观看 | 91在线精品入口| 国产精品国产a级| 成人亚洲免费视频| 欧美成人69| 精品亚洲一区二区三区四区五区高| 调教一区二区| 欧美精品一区二区三区视频| 欧美一级高潮片| 欧美国产一区在线| 免费高清视频在线观看| 99av国产精品欲麻豆| 亚洲精品一区二区三区蜜桃久| 亚洲欧洲国产精品一区| 日本a级片电影一区二区| 日本成人网址| 日韩精品在线观| 国产强被迫伦姧在线观看无码| 午夜精品在线看| 日本视频在线免费| 本田岬高潮一区二区三区| 国产三级三级看三级| 亚洲一级网站| 亚洲最新在线| 亚洲国产网址| 99精品国产一区二区| 免费在线观看一区| 亚洲2020天天堂在线观看| 日本在线免费中文字幕| 日韩精品免费在线| av免费观看网址| 欧美亚洲国产怡红院影院| 精品无码人妻一区二区三| 国产精品妹子av| 亚洲麻豆一区二区三区| 久久精品国产免费看久久精品| 一区二区传媒有限公司| 女人香蕉久久**毛片精品| 色女孩综合网| 亚洲精品国产动漫| 国产精品嫩草在线观看| 亚洲日韩中文字幕一区| 国产精品91久久| 国产盗摄——sm在线视频| 欧美成人黑人xx视频免费观看| 国产高清在线看| 日韩www在线| 黄色av小说在线观看| 91麻豆精品国产91久久久使用方法| 日韩在线 中文字幕| 午夜精品久久久久久久| 欧美成人一二三区| 亚洲欧洲韩国日本视频| 精品人妻一区二区三区蜜桃视频| 成人av网址在线| 亚洲区 欧美区| 国产九九视频一区二区三区| 国产一区二区在线观看免费视频| 美腿丝袜亚洲色图| 能在线观看的av网站| 久久九九精品| 欧美 国产 小说 另类| 99精品国产福利在线观看免费| 人妻无码一区二区三区四区| 欧美高清不卡| 穿情趣内衣被c到高潮视频| 亚洲高清资源在线观看| www亚洲国产| 亚洲成人99| 国产亚洲精品久久久久久久| 永久91嫩草亚洲精品人人| 国产精品夜夜夜爽张柏芝| 亚洲女同一区| 国产精品一区在线免费观看| 一区二区国产在线| 久久久久久久香蕉| 国产一区二区三区四区老人| www.成年人视频| 亚洲欧洲一区| 久久久久久久久久久福利| 美女诱惑黄网站一区| 成人小视频在线看| 日本欧美久久久久免费播放网| 色综合手机在线| 蜜臀av一区二区在线免费观看| 欧美成年人视频在线观看| 激情综合色丁香一区二区| 少妇高潮一69aⅹ| 岛国精品在线播放| 日本黄色网址大全| 国产欧美在线观看一区| 91麻豆免费视频网站| 亚洲激情自拍视频| 日韩免费在线视频观看| 日韩欧美aⅴ综合网站发布| 在线观看毛片视频| 欧美一二区视频| 亚洲 国产 欧美 日韩| 一区二区欧美日韩视频| 国产激情在线观看| 久久久久久久一| 国产 日韩 欧美一区| 亚洲a区在线视频| 美女一区二区在线观看| 神马影院午夜我不卡| 欧美欧美全黄| 国产成人亚洲精品无码h在线| 久久国产视频网| 朝桐光av一区二区三区| 日本一区二区三区在线不卡| 欧美日韩大片在线观看| 色哟哟亚洲精品| 国产精品久久免费| 亚洲美女动态图120秒| 久久bbxx| 国产成人精品免费久久久久| 精品中文字幕一区二区三区| 久久综合久久久| 欧美一区二区三区久久精品茉莉花| 亚洲中文字幕无码专区| 久久国产剧场电影| 超碰caoprom| 中文字幕一区二区在线观看| 69国产精品视频免费观看| 91精品国产综合久久福利软件 | 337p粉嫩大胆色噜噜噜噜亚洲| 91传媒免费观看| 色婷婷国产精品| 亚洲乱码国产乱码精品精软件| 在线视频欧美性高潮| ririsao久久精品一区| 91在线观看免费高清完整版在线观看| 国产区精品区| 毛片在线播放视频| 国产精品亚洲午夜一区二区三区| 久久久久久久久福利| 精品久久久久久久久久| av在线资源观看| 中文字幕日韩在线观看| 一区二区三区电影大全| 国产高清不卡av| 国产精品精品| 高清一区在线观看| 久久久久国色av免费看影院| 国产污视频在线看| 欧美一区二区三区四区视频| a天堂中文在线| 国产精品a久久久久久| 亚洲人成网77777色在线播放| 人体内射精一区二区三区| 国产一区二区毛片| 黑人狂躁日本娇小| 欧美日韩一卡二卡三卡 | 国产精品免费无遮挡| 色悠悠久久久久| 欧美爱爱视频| 国产精品jizz在线观看老狼| 麻豆传媒一区二区三区| 在线观看日本中文字幕| 亚洲成精国产精品女| 在线观看免费中文字幕| 宅男66日本亚洲欧美视频| 韩国三级一区| 欧美日韩在线不卡一区| 尤物网精品视频| 国产亚洲色婷婷久久99精品91| 一区二区三区中文在线| 国产成人精品一区二三区四区五区| 丝袜亚洲另类欧美重口| 亚洲欧美综合久久久久久v动漫| 色涩成人影视在线播放| 麻豆成人综合网| 看黄色录像一级片| 欧美三级韩国三级日本三斤| 国产最新视频在线| 国产aaa精品| 大胆日韩av| 三级在线视频观看| 日韩一区日韩二区| 国产理论视频在线观看| 欧美成人h版在线观看| 国产aⅴ精品一区二区四区| 亚洲欧洲另类精品久久综合| 韩国一区二区在线观看| 亚洲天堂网av在线| 日韩精品中文字幕在线一区| 欧洲性视频在线播放| 99热最新在线| 黄色av日韩| 中国av免费看| 精品视频在线免费看| 毛片在线视频| 国产伦精品一区二区三区高清版| 亚洲精品1区| 国产123在线| 欧美精三区欧美精三区| 天使と恶魔の榨精在线播放| 国产精品三区在线| 国产欧美日韩综合一区在线播放 | 国产日产亚洲精品系列| 中文字幕网址在线| 久久精品2019中文字幕| 另类尿喷潮videofree| 国产成人精品视频ⅴa片软件竹菊| 国产精品久久久久天堂| www.黄色片| 欧美性受xxxx黑人猛交| 国产精品久久久久久影院8一贰佰| 在线观看欧美一区二区| 色婷婷精品大在线视频| 欧美jizzhd欧美| 久久亚洲综合网| 久久精品国产99久久6| 日韩精品一区二区av| 国产一区二区三区在线视频| 97品白浆高清久久久久久| 东京热加勒比无码少妇| 久久精品视频免费| 性一交一乱一精一晶| 亲子乱一区二区三区电影|