threejs球体旋转与场景旋转_js 之threejs地球旋转
如果报这个错
DOMException: Failed to execute 'texImage2D' on 'WebGLRenderingContext': Tainted canvases may not be loaded
问题解决:
其实还是因为跨域的问题,尝试使用webstorm打开即可浏览
效果:
代码:
3Dmap
body{
margin: 0;
}
#canvasBox{width:100%;height:99.5%;position: absolute;}
var canvasBox = document.getElementById("canvasBox");
var W = $("#canvasBox").width();
var H = $("#canvasBox").height();
//随浏览器窗口变化而变化
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
$(window).on("resize",function(){
onWindowResize();
})
var num = 0;
var scene,camera,renderer,light;
function intScene(){
scene = new THREE.Scene();
}
function intCamera(){
camera = new THREE.PerspectiveCamera(45,W/H,1,1000);
camera.position.set(0,0,400);
camera.up.set(0,1,0);
camera.lookAt({x:0,y:0,z:0})
}
function intRender(){
renderer = new THREE.WebGLRenderer({antialias:true});
//renderer = new THREE.CanvasRenderer();
renderer.setSize(W,H);
canvasBox.appendChild(renderer.domElement);
}
function intLight(){
light=new THREE.DirectionalLight(0xffffff,0.6);
light.position.set(0,0,400);
scene.add(light);
}
var xkbg,earth,texts;
function intModels(){
/* 宇宙背景 */
var yz_geometry = new THREE.SphereGeometry(500,500,50);
var yz_material = new THREE.MeshPhongMaterial({
map:THREE.ImageUtils.loadTexture('./bg.png'),
side: THREE.DoubleSide
});
xkbg= new THREE.Mesh(yz_geometry,yz_material);
xkbg.position.set(0,0,0);
scene.add(xkbg);
//地球
var earth_geometry = new THREE.SphereGeometry(100,50,50);
var earth_material = new THREE.MeshPhongMaterial({
map:THREE.ImageUtils.loadTexture('./earth.jpg'),
side: THREE.DoubleSide
});
earth= new THREE.Mesh(earth_geometry,earth_material);
earth.position.set(0,0,0);
xkbg.add(earth);
}
var mouseX,mouseY,isMove=true;
//自转
function zizhuan(){
if(isMove){
requestAnimationFrame(zizhuan);
xkbg.rotation.y-=0.002;
renderer.render(scene,camera);
}
}
//拖拽
document.onmousedown = function(e){
isMove = false;
mouseX = e.pageX;
mouseY = e.pageY;
}
document.onmousemove = function rt(e){
if(!isMove){
var disX = e.pageX - mouseX;
var disY = e.pageY - mouseY;
requestAnimationFrame(zizhuan);
xkbg.rotation.x = xkbg.rotation.x>0.8?0.8:xkbg.rotation.x;
xkbg.rotation.x = xkbg.rotation.x
xkbg.rotation.x+= disY*0.00005* Math.PI;
xkbg.rotation.y+= disX*0.0001* Math.PI;
renderer.render(scene,camera);
}
}
document.onmouseup = function(){
console.log(xkbg.rotation.y)
isMove = true;
setTimeout(function(){
zizhuan();
},2000)
}
//滑动鼠标让地球放大缩小
function intsScale(){
$(document).on('mousewheel DOMMouseScroll', function (ev){
var e = ev||event;
e.preventDefault();
var value = e.originalEvent.wheelDelta || -e.originalEvent.detail;
var delta = Math.max(-1, Math.min(1, value));
if(delta == 1){
num++;
num=num>10?10:num;
}else {
num--;
num = num < -15 ? -15 : num;
}
camera.position.set(0,0,400+num*10);
});
}
function intStart(){
intScene();
intCamera();
intRender();
intLight();
intModels();
zizhuan();
intsScale();
renderer.render(scene,camera);
}
intStart();
原图
背景
地球
threejs球体旋转与场景旋转_js 之threejs地球旋转相关推荐
- openGL绘制带纹理太阳、地球、月亮,并且地球自转并且围绕太阳旋转。月亮自转也会围绕地球旋转
openGL系列文章目录 前言 使用openGL绘制太阳.地球.月亮,太阳自转,地球自转并且围绕太阳旋转.月亮自转也会围绕地球旋转,其实月亮也会围绕太阳旋转的. 一.效果 还是有不满意的地方: 1.没 ...
- 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现
分类:C#.Android.VS2015: 创建日期:2016-02-21 一.简介 实际上,对于布局文件中的View来说,大多数情况下,Android都会自动保存这些状态,并不需要我们都去处理它.这 ...
- 【Unity步步升】各类旋转逻辑的区别,如欧拉旋转、插值旋转、矢量朝向等...及游戏视角案例
在 Unity 中为物体旋转提供了各种 API ,例如 Rotate.RotateAround.LookAt 等方法.但为了避免万向节死锁的问题,一般使用四元数来表示物体的旋转. 而接下来的旋转方法我 ...
- android实现3D地球转动组件,Rajawali3D基础教程-一个地球旋转的例子
转载此译文请注明出处. 这篇文章将帮助你在安卓中使用Rajawali 3D库实现一个基本的3D场景.关于最新版本的教程不是很多,有一些改动是需要注意的. 在过去,Rajawali是在一个activit ...
- 旋转——绕原点二维旋转,绕任意点的二维旋转,三维基本旋转,绕任意轴的三维旋转
1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移.旋转.缩放.剪切这几种.本文以及接下来的几篇文章重点介绍一下关于旋转的变换,包括二维旋转变换. ...
- php 旋转图片 并保存,如何在PHP中旋转并保存图像
在PHP中旋转并保存图像的方法:首先使用函数[imagerotate()]用给定角度旋转图像:然后使用函数[imagejpeg()]输出图象到浏览器或文件,代码为[imagejpeg ( resour ...
- android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件
简介 灵感源自360手机卫,主要功能就是实现显示评分或等级的效果.并稍微改良了一下,有更好的实用性和扩展性. 因为主要用途就是显示"分数","评价",所以暂且叫 ...
- 90度旋转 flip opencv_基于Hu距的图像旋转矫正之OpenCV实现
目录 1.常见图像旋转矫正方法 1.1 基于图像边缘轮廓的旋转矫正 1.2 基于傅里叶变换以及霍夫直线检测的旋转矫正 2.基于Hu距图像旋转矫正 2.1 Hu旋转不变性 2.2 实现步骤 2.2.1 ...
- 在html中让图片旋转180度,gif图片旋转教程:怎么把gif旋转90度/180度 附gif图片旋转软件...
视频可以用视频编辑软件将视频旋转90度>>gif旋转90度或180度呢,往下看,你可在本文中找到答案. 先睹为快,看看旋转的效果对比图: 原图 顺时旋 ...
- 坐标系旋转后的点坐标、坐标点旋转后的点坐标
坐标系旋转后的点坐标.坐标点旋转后的点坐标 1. 坐标系旋转后的点坐标 2. 坐标点旋转后的点坐标
最新文章
- php把数组组成xml,php 怎么将数组转xml的函数?
- 基于RYU应用开发之负载均衡(源码开放)
- 快速获取OpenCV库(Lib)文件下的所有文件的目录名~
- 战神背光键盘如何关系_显瘦又有肌肉 神舟战神Z7MKP5GZ评测
- Jmeter之Bean shell使用(五)
- linux IP、端口连通性测试
- hdu 2896 病毒侵袭
- 各科老师的语言风格一览,太真实了哈哈哈哈哈哈
- 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
- OJ:一道考察多态的题目
- Hive基础04、Hive建表语句详解
- 推荐十五款APP原型设计工具
- 标准盒模型与IE盒模型的区别
- 聚焦东风汽车,解锁企业上云的正确姿势
- IDEA 支持python开发
- 设计模式复合使用_结构设计模式:复合模式
- 经纬度的semicircle单位
- 营养学基础知识计算机,计算机软件技术基础知识点储备(32页)-原创力文档
- Promise原理浅析
- Vue——formcreate表单设计器自定义组件实现
热门文章
- 使用新的Amazon Application Migration Service进行直接迁移
- 关于测试工程师瓶颈和突围的一个思考
- 央行数字货币遭疯狂炒作:概念股一周涨51%,假APP号称7天发行10亿
- Python Turtle 绘制勾股树
- MacOS 安装 Parallels Desktop,再安装 UOS 20 + QtCreaor,及搭建 DTK 开发环境
- C语言删除数组中的0元素
- java中QQ号、手机号、邮箱号的正则表达式
- Axure实现唯一性选择元件
- excel中vlookup函数的使用方法_价格表自动生成报价单,Excel中的VLOOKUP函数来搞定...
- Flask(1) | Flask的部署