通过在线的几个研究和示例,我可以在不同的位置上来回切换相机 . 但是,在向顶视图设置动画时似乎存在问题 . 哪个外观不能保持在中间,它有点“向上”然后“向下”

var camera;

var controls;

var scene;

var torus;

var light;

var renderer;

var w = window.innerWidth;

var h = window.innerHeight;

var is3D = true;

var frustumSize = 200;

init();

animate();

function init() {

//WebGL Renderer

renderer = new THREE.WebGLRenderer({

antialias: true

});

//renderer.setClearColor(0xffffff, 1)

renderer.setSize(w, h);

$(".webgl").append(renderer.domElement);

//camera

var aspect = w / h;

camera = new THREE.OrthographicCamera(

frustumSize * aspect / -2,

frustumSize * aspect / 2,

frustumSize / 2,

frustumSize / -2,

1,

1000

);

camera.aspect = aspect;

camera.position.set(frustumSize, frustumSize, frustumSize);

//controls

controls = new THREE.MapControls(camera, renderer.domElement);

controls.minZoom = 1;

controls.maxZoom = 6;

//Scene

scene = new THREE.Scene();

// Helpers

axes = new THREE.AxisHelper(50);

helper = new THREE.GridHelper(200, 10);

scene.add(axes);

scene.add(helper);

// Torus Geometry

torus = new THREE.Mesh(

new THREE.TorusGeometry(60, 30, 20, 20),

new THREE.MeshNormalMaterial()

);

torus.position.set(0, 0, 0);

scene.add(torus);

//Hemisphere Light

// light = new THREE.HemisphereLight(0xffbf67, 0x15c6ff);

// scene.add(light);

$(".click").click(function() {

is3D = !is3D;

var endPos = is3D

? {

x: 200,

y: 200,

z: 200

}

: {

x: 0,

y: 500,

z: 0

};

var lookAt = new THREE.Vector3();

// save original postion and rotation

var startPos = new THREE.Vector3().copy(camera.position);

var startQua = new THREE.Quaternion().copy(camera.quaternion);

// extract the end quaternion

camera.position.set(endPos.x, endPos.y, endPos.z);

camera.lookAt(lookAt);

var endQua = new THREE.Quaternion().copy(camera.quaternion);

// reset original position and rotation

camera.position.set(startPos.x, startPos.y, startPos.z);

camera.quaternion.copy(startQua);

// var tween = new TWEEN.Tween(from)

// .to(to, 600)

// .easing(TWEEN.Easing.Linear.None)

// .onUpdate(function () {

// camera.position.set(this.x, this.y, this.z);

// camera.lookAt(new THREE.Vector3(0, 0, 0));

// })

// .onComplete(function () {

// camera.lookAt(new THREE.Vector3(0, 0, 0));

// })

// .start();

var o = { t: 0 };

new TWEEN.Tween(o)

.to(

{

t: 1

},

1000

)

.onUpdate(function() {

console.log(startPos, endPos, o.t);

var currentPos = new THREE.Vector3().copy(startPos);

currentPos.lerp(endPos, o.t);

camera.position.copy(currentPos);

var currentQua = new THREE.Quaternion().copy(startQua);

currentQua.slerp(endQua, o.t);

camera.quaternion.copy(currentQua);

})

.onComplete(function() {

controls.target = lookAt;

controls.update();

})

.easing(TWEEN.Easing.Linear.None)

.start();

});

}

function animate() {

requestAnimationFrame(animate);

controls.update();

TWEEN.update();

renderer.render(scene, camera);

}

java转俯视图_Tweening / Animating threejs相机到顶视图相关推荐

  1. threejs相机和渲染器

    渲染器 渲染器其实代表的是canvas标签. 渲染器的类型 WebGLRender 使用WebGL来渲染图形,速度较快,但是有些机器不支持WebGL. CanvasRender 使用canvas2d来 ...

  2. Java Web实现文件上传(相机、相册)

    H5页面中通过JQuery的方式实现相机.相册.拍摄视频三种方式的文件上传,Java后端通过Servlet的方式来接收上传的文件并写入的服务端存储目录中. 前端HTML文件: <div clas ...

  3. mousemove事件java,three.js,补间相机和mousemove事件

    我正在尝试使用three.js 我正在使用补间移动相机,它工作得很好 . 但是,在动画结束时,相机会跳回到初始位置 . 我发现mousemove事件导致了这种行为 . 我如何解决这个问题并保持补间动作 ...

  4. java转俯视图,如何使用纯CSS实现一个足球场的俯视图(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个足球场的俯视图(附源码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.c ...

  5. Java基础之写文件——使用多个视图缓冲区(PrimesToFile2)

    控制台程序.本例将对应于每个素数的数据以三个连续数据项的形式写入: 1.以二进制值表示的字符串长度值(最好是整型,但本例使用double类型): 2.素数值的字符串表示"Prime=nnn& ...

  6. 【Java刷题】04_二叉树的左右视图

    文章目录 一.二叉树的层序遍历 二.二叉树的右视图 1.方法一:广度优先搜索 2.方法二:深度优先搜索 三.二叉树的左视图 四.二叉树的俯视图 五.判断是否是完全二叉树 一.二叉树的层序遍历 本题采用 ...

  7. day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程

    目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...

  8. 499、Java分布式和集群12 -【SpringCloud视图微服务 - 消息总线Bus】 2021.06.01

    目录 0.RabbitMQ 1.先运行,看到效果,再学习 2.pom.xml 3.bootstrap.yml 4.application.yml 5.ProductDataServiceApplica ...

  9. React Native手动实现调用原生相机相册(Android端)

    前言 最近一直在学习RN的相关开发,想做一部分调用原生的实现,来练练手,于是就有了下面这个demo,由于本人是Android开发,所以只实现了Android端的效果. Demo 主要实现 这种调用原生 ...

最新文章

  1. ExtJS之对话框及窗口篇
  2. 青龙羊毛——关于脚本
  3. 第六天2017/04/11(1:结构体链表基础和相关经典操作)
  4. 粗浅看 java反射机制
  5. 什么是Cadence call
  6. linux awk命令总结
  7. 浅尝flutter中的动画(淡入淡出)
  8. php输出文件,数组
  9. 如何搭建高性能视频网站
  10. Anbox之push_locked与pop_locked(十三)
  11. 用MDT 2012为企业部署windows 7(三)--安装MDT 2012,ADK以及安装后情况
  12. 学习总结以及对接下来的规划
  13. Xgboost实践 | 第一名天池o2o优惠券的使用预测思路完整版
  14. 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)
  15. 如何彻底禁用 werfalut.exe
  16. 如何白piao一台优质的华为云服务器
  17. android之CardView的使用
  18. 图像处理中的二值化和灰度化
  19. 目标检测的模型haartraining培训
  20. kubectl全部命令用法示例

热门文章

  1. DevExpress 换肤
  2. 常见概率分布图表总结
  3. codeforces 14D
  4. [转载] 百科全说——漆浩:观手分辨五行人教您五行人的养生绝招(11-01-1011-01-11)...
  5. 微信小程序入门 ——增删改查+页面跳转+传值取值+布局样式
  6. ssh连接失败,排错经验
  7. Linux系统中CPU忙闲的衡量——load和idle
  8. Linux常用命令--uname
  9. 超柔磨绒印花空调被(200*230cm) -凡客诚品工商银行团购专区- VANCL凡客诚品
  10. 创建型模式学习总结——设计模式学习笔记