Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果

这篇具有很好参考价值的文章主要介绍了Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,功能介绍

使用 Threejs实现WebVR全景,VR全景小行星入场动画、鱼眼效果、由远到近效果、球形展开动画效果。如下效果图:
Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果
这种效果其实很简单,通过修改 像机视锥体垂直视野角度fov,和相机的坐标位置实现动画效果,鼠标拖动查看使用轨道控制器OrbitControls.js

2,功能实现

  • 初始化场景和设置相机角度、位置。效果和代码如下:

Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果
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实现,效果和代码如下:

Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果
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实现,效果和代码如下:

Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果
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();
    }

更多在线案例:左本的博客文章来源地址https://www.toymoban.com/news/detail-511344.html

到了这里,关于Threejs实现WebVR全景小行星入场动画/鱼眼效果/球形展开效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter 类似onResume 监听,解决入场动画卡顿(2)

    接着完善上一篇内容,上一篇我们是能监听到初次进入路由页面节点,往往还想监听从当前路由跳转到其他路由后,再返回到当前路由页面,上一篇内容就无法满足当前需求了,不过我们完全可以按照上一篇的原理实现这个需求。 直接上代码 方法 initAsyncLoad 为第一次进入路

    2024年02月08日
    浏览(47)
  • 封装 vue3 入场动画 插件 并发布到 npm

    vue create entry-animate 只需要简单的项目框架即可,routervuex 都不用; src 目录下新建 package,package文件夹是存放我们封装的组件的; 还需要加一个入口文件,在 package 中加一个 index.js 文件,通过后期引入main.js 文件的时候,注册成全局组件; 目录图片 我写了一个 Vue3 的动画

    2024年02月15日
    浏览(45)
  • HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)

    在现在市面上很多全景H5的环境下,要实现全景的方式有很多,可以用css3直接构建也可以用基于threeJs的库来实现,还有很多别的制作全景的软件使用 本教学适用于未开发过3D全景的工程狮 如果觉得内容太无聊可以直接跳到最后 下载代码 整个3D全景所用的相关理论就不多说了

    2024年02月06日
    浏览(32)
  • Threejs入门之二十四:Threejs中的Animation动画

    Threejs为我们提供了强大的动画系统接口API,通过这些接口,我们可以很轻松的实现物体的移动、旋转、缩放、颜色变化、透明度变化等各种效果,今天我们就来了解下Threejs中的动画系统。 首先我们先了解几个在Threejs动画系统中比较重要的组件 关键帧轨道(KeyframeTrack)是关键

    2024年02月10日
    浏览(47)
  • ThreeJS-3D教学八-OBJLoader模型加载+动画

    先看效果图: 本篇给大家介绍下模型加载的知识,用到了OBJLoader对应的模型,为了增加趣味性,花了些时间,利用new THREE.Points获取到模型上的点,做了一个动画效果,其实就是操作 Y轴上的点,先降低上0,然后再还原,代码如下: 如果有同学从我第一篇文章开始学到现在,

    2024年04月24日
    浏览(41)
  • threejs创建3D炫酷地图(地图流光,飞线,水印动画,高光)

    下载地图的json,这里我们可以在阿里云数据平台上进行下载 2.在代码中解析下载的json const fileloader = new THREE.FileLoader(); fileloader.load(\\\'/china.json\\\',(res)={ res=JSON.parse(res) createMap(res) }) 3.得到的坐标点是经纬度,所以我们要把它转为二维坐标,这里使用插件d3 const projection = d3 .geoMer

    2024年02月09日
    浏览(46)
  • ThreeJS案例一——在场景中添加视频,使用人物动作以及用键盘控制在场景中行走的动画

    首先我们需要两个模型,一个是场景模型,另一个是人物模型。 人物模型我这里用的Threejs官网中的给的模型,名称是 Xbot.glb 。 当然人物模型也可以自己去这个网站下载sketchfab,下载后给模型添加动画mixamo 下载模型动画 先让入你的模型 选择正确的模型文件格式 这里注意一

    2024年02月12日
    浏览(45)
  • OpenGL太阳系行星系统简单实现

    使用OpenGL(glfw, glad)模拟太阳系(地球、月球、太阳)系统,涉及三维图形变换、坐标系统,光照模型(待添加)、键盘鼠标事件处理等内容,在main函数中封装了绝大部分的OpenGL接口,极大的减少了代码量,操作简便。 Shader.h Camera.h与Texture.h封装着色器、摄像机与纹理类,其

    2024年02月04日
    浏览(43)
  • WebVR — 网络虚拟现实

    推荐:使用 NSDT编辑器 快速搭建3D应用场景 随着Oculus Rift和许多其他生产设备即将上市,未来看起来很光明——我们已经有足够的技术来使VR体验“足够好”,可以玩游戏。有许多设备可供选择:像Oculus Rift或HTC Vive这样的桌面设备,通过带有Playstation VR的游戏机(目前不支持

    2024年02月10日
    浏览(39)
  • Threejs实现一个园区

            一、实现方案 单独贴代码可能容易混乱,所以这里只讲实现思路,代码放在最后汇总了下。 想要实现一个简单的工业园区、主要包含的内容是一个大楼、左右两片停车位、四条道路以及多个可在道路上随机移动的车辆、遇到停车位时随机选择是否要停车,简单设计

    2024年01月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包