Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { margin: 0; padding: 0; box-sizing: border-box; } body { overflow: hidden; } .canvas-container { height: 100%; width: 100%; }
JavaScript
let SCENE; let CAMERA; let RENDERER; let CONTROLS; main(); function main() { init(); animate(); } function init() { initScene(); initCamera(); initRenderer(); initControls(); initEventListeners(); createObjects(); document.querySelector('.canvas-container').appendChild(RENDERER.domElement); } function initScene() { SCENE = new THREE.Scene(); initLights(); } function initLights() { const point = new THREE.PointLight(0x079fff, 2.5, 300, 1); point.position.set(0, 100, 50); SCENE.add(point); const ambient = new THREE.AmbientLight(0x000510); SCENE.add(ambient); } function initCamera() { CAMERA = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000); CAMERA.position.y = 100; CAMERA.position.z = 100; } function initRenderer() { RENDERER = new THREE.WebGLRenderer({ alpha: true }); RENDERER.setPixelRatio(window.devicePixelRatio); RENDERER.setSize(window.innerWidth, window.innerHeight); RENDERER.shadowMap.enabled = true; RENDERER.shadowMapSort = true; RENDERER.setClearColor(0x000510, 1); RENDERER.sortObjects = false; } function initControls() { CONTROLS = new THREE.OrbitControls(CAMERA); CONTROLS.enableZoom = false; CONTROLS.minPolarAngle = 0; CONTROLS.maxPolarAngle = Math.PI * 3 / 4; CONTROLS.update(); } function initEventListeners() { window.addEventListener('resize', onWindowResize); onWindowResize(); } function onWindowResize() { CAMERA.aspect = window.innerWidth / window.innerHeight; CAMERA.updateProjectionMatrix(); RENDERER.setSize(window.innerWidth, window.innerHeight); } function animate() { requestAnimationFrame(animate); CONTROLS.update(); SCENE.traverse(child => { if (child.isMesh) { const shader = child.material.userData.shader; if (shader) { shader.uniforms.uTime.value = performance.now() / 1000; } } }); render(); } function render() { CAMERA.lookAt(SCENE.position); RENDERER.render(SCENE, CAMERA); } function createObjects() { const geometry = new THREE.SphereBufferGeometry(20, 64, 64); const material1 = new THREE.MeshPhysicalMaterial({ color: 0xffffff, reflectivity: 0.05, roughness: 0.7, transparent: true, side: THREE.FrontSide }); const material2 = new THREE.MeshPhysicalMaterial({ color: 0xffffff, reflectivity: 0.01, roughness: 0.8, transparent: true, side: THREE.BackSide }); const onBeforeCompile = function (shader) { shader.uniforms.uTime = { value: 0.0 }; shader.vertexShader = shader.vertexShader.replace( `#include
`, `varying vec2 vUv; uniform float uTime;`); shader.vertexShader = shader.vertexShader.replace( `#include
`, `vUv = uv;`); shader.vertexShader = shader.vertexShader.replace( `#include
`, `float delta = abs(sin(uTime + position.y / 20.0)) / 4.0; mat3 m = mat3(1, 0, 0, 0, 1.0 + delta, 0, 0, 0, 1); vec3 transformed = vec3(position) * m; vNormal = vNormal * m;`); shader.fragmentShader = shader.fragmentShader.replace( `varying vec3 vViewPosition;`, `varying vec3 vViewPosition; varying vec2 vUv; uniform float uTime;`); shader.fragmentShader = shader.fragmentShader.replace( `#include
`, `if ((sin(100.0 * vUv.y + 5.0 * uTime + 3.14159 * 20.0 * vUv.x) > 0.0) || (vUv.y > 0.94 && vUv.y < 0.95) || (vUv.y > 0.05 && vUv.y < 0.06)) { diffuseColor = vec4(0.6, 0.6, 0.6, 1.0); float magic = abs(sin(9.0 * vUv.y + 2.0 * uTime + 3.14159 * vUv.x)); if ((magic < 0.3)) { diffuseColor = vec4(1.0); } } else { diffuseColor = vec4(0.0); }`); this.userData.shader = shader; }; material1.onBeforeCompile = onBeforeCompile; material2.onBeforeCompile = onBeforeCompile; const sphere1 = new THREE.Mesh(geometry, material1); const sphere2 = new THREE.Mesh(geometry, material2); SCENE.add(sphere2); SCENE.add(sphere1); }
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Three.js 3D动画实例-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号