赞
踩
使用 Threejs实现WebVR全景,VR全景小行星入场动画、鱼眼效果、由远到近效果、球形展开动画效果。如下效果图:
这种效果其实很简单,通过修改 像机视锥体垂直视野角度fov,和相机的坐标位置实现动画效果,鼠标拖动查看使用轨道控制器OrbitControls.js
2,功能实现
初始化场景和设置相机角度、位置。效果和代码如下:
- var camera = new THREE.PerspectiveCamera(170, window.innerWidth / window.innerHeight, 0.1, 10000);
- camera.position.set(0, 1200, 0);
-
-
- // 初始化球体
- var geometry = new THREE.SphereGeometry(1200, 1200, 1200);
- geometry.scale(-1, 1, 1);
- // 创建材质并设置全景图
- var material = new THREE.MeshBasicMaterial({
- map: new THREE.TextureLoader().load('assets/bgImage/dibaizhumeilahuta.jpg');
- });
- // 全景图贴在球体上
- var mesh = new THREE.Mesh(geometry, material);
- // 添加到场景
- scene.add(mesh);
加载旋转动画从远到进,动画使用Tweenjs实现,效果和代码如下:
- let tween = new TWEEN.Tween({
- fov: 170,
- ars: 40,
- rot: 0,
- })
- .to({
- fov: 100,
- ars: 0,
- rot: Math.PI * 1.01,
- }, 2300)
- .easing(TWEEN.Easing.Quadratic.Out)
- .onComplete(function() {
- TWEEN.remove(tween);
- setTimeout(function(){
- // 旋转入场动画
- enterScene()
- }, 1000)
- })
- .onUpdate(function(t) {
- // 视角由大到小
- camera.fov = t.fov;
- camera.updateProjectionMatrix()
- // 旋转
- mesh.rotation.y = t.rot;
- })
- .start();

入场动画也是使用Tweenjs实现,效果和代码如下:
- function enterScene() {
- // 获取相机坐标
- let cameraLook = new THREE.Vector3();
- camera.getWorldDirection(cameraLook);
-
- let tween = new TWEEN.Tween({
- fov: camera.fov,
- z: 0,
- cy: camera.position.y,
- })
- .to({
- fov: 70,
- z: -1200,
- cy: 0,
- }, 2000)
- .easing(TWEEN.Easing.Linear.None)
- .onComplete(function() {
- TWEEN.remove(tween);
- })
- .onUpdate(function(t) {
- // 更新相机位置和视角大小
- camera.position.y = t.cy;
- camera.fov = t.fov;
- camera.updateProjectionMatrix();
- // 旋转效果
- mesh.rotation.y += 0.01;
- // 更新看向位置
- const target = new THREE.Vector3(0, 0, t.z);
- camera.lookAt(target);
- })
- .start();
- }

更多在线案例:左本的博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。