分享一个基于ThreeJS的3D海浪涌动特效 , 效果如下:
常可用于页面背景 , 3D效果 , 视觉观感很好 , 海浪会随机涌动 , 科幻感、技术感强烈 。
代码说明代码会引用ThreeJS库 , 版本号为56 。 注:必须是此版本 。
页面背景色可在Body的style中自行调节 。
完整源码如下 , 直接保存为html文件即可使用 。
<body style=\"background:#000000\">
也可对源码优化修改 , 以实现更好效果 , 如果不想修改后的源码泄露出去 , 可用JShaman对JS代码进行加密 。
源码
<body style=\"background:#000000\">
<script src=https://mparticle.uc.cn/"three.js\" type=\"application/javascript\"></script>
<div></div>
<script>
var SEPARATION = 100
AMOUNTX = 100
AMOUNTY = 70;
var container;
var camera scene renderer;
var particles particle count = 0;
var mouseX = 85
mouseY = -342;
var windowHalfX = window.innerWidth / 2;
【纳米|技术分享:用JS实现的3D海浪涌动特效】var windowHalfY = window.innerHeight / 2;
init();
animate();
function init() {
container = document.createElement('div');
document.body.appendChild(container);
camera = new THREE.PerspectiveCamera(120 window.innerWidth / window.innerHeight 1 10000);
camera.position.z = 1000;
scene = new THREE.Scene();
particles = new Array();
var PI2 = Math.PI * 2;
var material = new THREE.ParticleCanvasMaterial({
color: 0xe1e1e1
program: function(context) {
context.beginPath();
context.arc(0 0 .6 0 PI2 true);
context.fill();
);
var i = 0;
for (var ix = 0; ix < AMOUNTX; ix++) {
for (var iy = 0; iy < AMOUNTY; iy++) {
particle = particles[i++
= new THREE.Particle(material);
particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);
particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);
scene.add(particle);
renderer = new THREE.CanvasRenderer();
renderer.setSize(window.innerWidth window.innerHeight);
container.appendChild(renderer.domElement);
document.addEventListener('mousemove' onDocumentMouseMove false);
document.addEventListener('touchstart' onDocumentTouchStart false);
document.addEventListener('touchmove' onDocumentTouchMove false);
window.addEventListener('resize' onWindowResize false);
function onWindowResize() {
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth window.innerHeight);
function onDocumentMouseMove(event) {
mouseX = event.clientX - windowHalfX;
mouseY = event.clientY - windowHalfY;
function onDocumentTouchStart(event) {
if (event.touches.length === 1) {
event.preventDefault();
mouseX = event.touches[0
.pageX - windowHalfX;
mouseY = event.touches[0
.pageY - windowHalfY;
function onDocumentTouchMove(event) {
if (event.touches.length === 1) {
event.preventDefault();
mouseX = event.touches[0
.pageX - windowHalfX;
mouseY = event.touches[0
.pageY - windowHalfY;
function animate() {
requestAnimationFrame(animate);
render();
function render() {
camera.position.x += (mouseX - camera.position.x) * .05;
camera.position.y += (-mouseY - camera.position.y) * .05;相关经验推荐
- 吸尘器|VR+医疗:在手术中运用VR技术,打造沉浸式模拟培训体验
- 脑机接口|视觉感知技能的损害,会导致使用脑机接口技术的能力下降
- 脑机接口|尽管脑机接口只识别一两个运动想象状态,但科学家提出了一种特定交互技术
- 联想|研发是企业发展的核心,看看联想没有核心技术,慢慢走下神坛
- 数据库|信息技术应用创新PostgreSQL管理员PG中级认证(PGCP认证)
- 信息技术|中国股市:“人工智能”行情火爆!这5只龙头开启新征程(收藏)
- |新技术促进大容量CVB通信技术的发展
- 显示器|如何让你的桌面变得更完美:FS升降桌改造分享
- iPhone|粉丝买iPhone“置换机”翻车,网友:翻新技术太强,中招的不止你一人!
- find x|安卓机视频差iPhone几代?Find X5影像核心技术曝光,或填平差距