three.js實現的3D球狀拖動旋轉效果
分享一段程式碼例項,它利用three.js實現了3D球狀元素的旋轉效果。
預設狀態下可以自動旋轉,也可以利用滑鼠拖動旋轉。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { padding: 0; margin: 0; } </style> <script src="https://cdn.bootcss.com/three.js/r81/three.js"></script> </head> <body> <script type="text/javascript"> var scene, camera, renderer; scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); scene.add(camera); camera.position.z = 600; var radius = 3, segemnt = 20, rings = 20, R = 300; var group = new THREE.Group(); var bows = new THREE.Group(); var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000 }); for (var i = 0; i < 19; i++) { var ball = new THREE.Mesh(new THREE.SphereGeometry(radius, segemnt, rings), sphereMaterial); ball.position.x = R * Math.sin((Math.PI / 18) * i); ball.position.y = R * Math.cos((Math.PI / 18) * i); group.add(ball); } for (var j = 0; j < 36; j++) { var bow = group.clone(); bow.rotation.y = Math.PI * 2 / 36 * j; bows.add(bow); } scene.add(bows); var pointLight = new THREE.PointLight(0Xffffff); pointLight.position.x = 0; pointLight.position.y = 0; pointLight.position.z = 1000; scene.add(pointLight); var mouseX, mouseY, isMove = false; animation(); function animation() { if (!isMove) { requestAnimationFrame(animation); bows.rotation.y += Math.PI * 0.001; bows.rotation.x += Math.PI * 0.001; render(); } } function render() { renderer.render(scene, camera); } document.onmousedown = function(e) { isMove = true; mouseX = e.pageX; mouseY = e.pageY; }; document.onmousemove = function(e) { if (isMove) { var x = e.pageX; var y = e.pageY; var _x = x - mouseX; var _y = y - mouseY; bows.rotation.x += _y * 0.001 * Math.PI; bows.rotation.y += _x * 0.001 * Math.PI; render(); mouseX = x; mouseY = y; } }; document.onmouseup = function() { isMove = false; animation(); } </script> </body> </html>
相關文章
- 使用RxJava實現ImageView的拖動、旋轉和縮放RxJavaView
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- 滑鼠懸浮div實現旋轉效果
- 自定義實現MIUI的拖動視差效果(阻尼效果)UI
- 卡片旋轉動畫效果動畫
- 使用Three.js實現神奇的3D文字懸浮效果JS3D
- 滑鼠懸浮實現環形旋轉效果
- HTML+CSS實現太極旋轉效果HTMLCSS
- 頁面旋轉動畫效果動畫
- Three.js 進階之旅:物理效果-3D乒乓球小遊戲 ?JS3D遊戲
- Qt實現遮罩效果並可以拖動伸縮QT遮罩
- CSS3立方體3D旋轉效果CSSS33D
- 超級炫酷的3D旋轉動態圖——Python程式碼實現3DPython
- 使用 three.js 中的 CSS3DRenderer 實現 3d 卡片的效果JSCSSS33D
- 基於three.js的3D粒子動效實現JS3D
- js 根據滑鼠拖動(或手機長按)旋轉JS
- vueusejs實現拖動VueJS
- 巢狀滾動效果實現討論巢狀
- 影像旋轉的FPGA實現(一)FPGA
- css3帶你實現3D轉換效果CSSS33D
- Three.js實現臉書元宇宙3D動態LogoJS元宇宙3DGo
- CSS實現兩個球相交的粘粘效果CSS
- Android SeekBar 自定義thumb,thumb旋轉動畫效果Android動畫
- Three.js 火焰效果實現艾爾登法環動態logo ?JSGo
- php實現圖片旋轉PHP
- Flutter 實現酷炫的3D效果Flutter3D
- 微信小程式有旋轉動畫效果的音樂元件微信小程式動畫元件
- 3D旋轉矩陣的推導3D矩陣
- JavaScript 限定範圍拖動效果JavaScript
- 影片直播app原始碼,純JS實現旋轉木馬/3d相簿APP原始碼JS3D
- 不適用imrotate 的影像旋轉實現
- CSS3多面體旋轉效果CSSS3
- 滑鼠懸浮圖片旋轉效果
- CSS3星系旋轉效果代CSSS3
- CSS3圖片旋轉效果CSSS3
- 短視訊直播原始碼,拖動滑塊實現圖片驗證效果原始碼
- 巧用模糊實現視覺的 3D 效果視覺3D
- JavaScript表格tr行左右拖動效果JavaScript
- 讓互動更加生動!有意思的滑鼠跟隨 3D 旋轉動效3D