java转俯视图_Tweening / Animating threejs相机到顶视图
通过在线的几个研究和示例,我可以在不同的位置上来回切换相机 . 但是,在向顶视图设置动画时似乎存在问题 . 哪个外观不能保持在中间,它有点“向上”然后“向下”
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相机到顶视图相关推荐
- threejs相机和渲染器
渲染器 渲染器其实代表的是canvas标签. 渲染器的类型 WebGLRender 使用WebGL来渲染图形,速度较快,但是有些机器不支持WebGL. CanvasRender 使用canvas2d来 ...
- Java Web实现文件上传(相机、相册)
H5页面中通过JQuery的方式实现相机.相册.拍摄视频三种方式的文件上传,Java后端通过Servlet的方式来接收上传的文件并写入的服务端存储目录中. 前端HTML文件: <div clas ...
- mousemove事件java,three.js,补间相机和mousemove事件
我正在尝试使用three.js 我正在使用补间移动相机,它工作得很好 . 但是,在动画结束时,相机会跳回到初始位置 . 我发现mousemove事件导致了这种行为 . 我如何解决这个问题并保持补间动作 ...
- java转俯视图,如何使用纯CSS实现一个足球场的俯视图(附源码)
本篇文章给大家带来的内容是关于如何使用纯CSS实现一个足球场的俯视图(附源码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.c ...
- Java基础之写文件——使用多个视图缓冲区(PrimesToFile2)
控制台程序.本例将对应于每个素数的数据以三个连续数据项的形式写入: 1.以二进制值表示的字符串长度值(最好是整型,但本例使用double类型): 2.素数值的字符串表示"Prime=nnn& ...
- 【Java刷题】04_二叉树的左右视图
文章目录 一.二叉树的层序遍历 二.二叉树的右视图 1.方法一:广度优先搜索 2.方法二:深度优先搜索 三.二叉树的左视图 四.二叉树的俯视图 五.判断是否是完全二叉树 一.二叉树的层序遍历 本题采用 ...
- day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程
目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...
- 499、Java分布式和集群12 -【SpringCloud视图微服务 - 消息总线Bus】 2021.06.01
目录 0.RabbitMQ 1.先运行,看到效果,再学习 2.pom.xml 3.bootstrap.yml 4.application.yml 5.ProductDataServiceApplica ...
- React Native手动实现调用原生相机相册(Android端)
前言 最近一直在学习RN的相关开发,想做一部分调用原生的实现,来练练手,于是就有了下面这个demo,由于本人是Android开发,所以只实现了Android端的效果. Demo 主要实现 这种调用原生 ...
最新文章
- ExtJS之对话框及窗口篇
- 青龙羊毛——关于脚本
- 第六天2017/04/11(1:结构体链表基础和相关经典操作)
- 粗浅看 java反射机制
- 什么是Cadence call
- linux awk命令总结
- 浅尝flutter中的动画(淡入淡出)
- php输出文件,数组
- 如何搭建高性能视频网站
- Anbox之push_locked与pop_locked(十三)
- 用MDT 2012为企业部署windows 7(三)--安装MDT 2012,ADK以及安装后情况
- 学习总结以及对接下来的规划
- Xgboost实践 | 第一名天池o2o优惠券的使用预测思路完整版
- 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)
- 如何彻底禁用 werfalut.exe
- 如何白piao一台优质的华为云服务器
- android之CardView的使用
- 图像处理中的二值化和灰度化
- 目标检测的模型haartraining培训
- kubectl全部命令用法示例