<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>鼠标事件 cube</title>
<script src="scripts/three.min.js"></script>
<script src="scripts/jquery-1.7.1.min.js"></script>
<style type="text/css">
div#canvas-frame{
border: none;
cursor: pointer;
width: 800px;
height: 600px;
background-color: #808080;
}
</style>
<script>
// 事件名 意思
// onmousedown 鼠标被按下的时候
// onmouseup 鼠标弹上的时候
// onmousemove 鼠标移动的时候
// onmouseover 鼠标移动到物体的上面的时候
// onmouseout 鼠标从物体上面移出物体范围的时候
//window.onmousedown = function (ev){
// var x1 = ev.clientX; //マウスのx座標(ブラウザ上の座標)の取得
// var y1 = ev.clientY; //マウスのy座標(ブラウザ上の座標)の取得
// var x2 = ev.screenX; //マウスのx座標(ディスプレイ上の座標)の取得
// var y2 = ev.screenY; //マウスのy座標(ディスプレイ上の座標)の取得
//}
var width, height;
var renderer;
function initThree() {
width = document.getElementById('canvas-frame').clientWidth;
height = document.getElementById('canvas-frame').clientHeight;
renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setSize(width, height );
document.getElementById('canvas-frame').appendChild(renderer.domElement);
renderer.setClearColorHex(0xFFFFFF, 1.0);
renderer.shadowMapEnabled = true;//影をつける(1)
}
var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera( 45 , width / height , 1 , 10000 );
camera.position.x = 400;
camera.position.y = 400;
camera.position.z = 180;
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;
camera.lookAt( {x:0, y:0, z:0 } );
}
var scene;
function initScene() {
scene = new THREE.Scene();
}
var light;
function initLight() {
light = new THREE.DirectionalLight(0xFFFFFF, 1.0, 0);
light.position.set( 100, 100, 300 );
light.castShadow = true;//影をつける(2)
scene.add(light);
}
var cube = Array();
var plane;
function initObject(){
for(var i=0; i<3; i++){
cube[i] = new THREE.Mesh(
new THREE.CubeGeometry(50,50,50),
new THREE.MeshLambertMaterial({color: 0xff0000, ambient:0xFF0000})
);
cube[i].castShadow = true;//影をつける(3)
scene.add(cube[i]);
cube[i].position.set(0,-100+100*i,0);
}
plane = new THREE.Mesh(
new THREE.PlaneGeometry(1000,1000,10),
new THREE.MeshLambertMaterial({color: 0x008000})
);
plane.receiveShadow = true; //影をつける(4)
scene.add(plane);
plane.position.set(0,0,-100);//让地面在下面
}
var t=0;
function loop() {
t++;
renderer.clear();
cube[0].rotation.set( t/50, 0, 0 );
cube[1].rotation.set( 0, t/75, 0 );
cube[2].rotation.set( 0, 0, t/100 );
//camera.position.set( 400*Math.cos(t/100), 400*Math.sin(t/200), 50*Math.cos(t/50));
//camera.lookAt( {x:0, y:0, z:0 } );
renderer.render(scene, camera);
window.requestAnimationFrame(loop);
}
function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
loop();
//renderer.clear();
//renderer.render(scene,camera);
}
var down = false;
var sy = 0, sz = 0;
window.onmousedown = function (ev){ //マウスダウン
if (ev.target == renderer.domElement) {
down = true;
sy = ev.clientX; sz = ev.clientY;
}
};
window.onmouseup = function(ev){ //マウスアップ
down = false;
if(ev.MeshBasicMaterial = cube[0])
{
cube[0] = new THREE.Mesh(
new THREE.CubeGeometry(50,50,50),
new THREE.MeshLambertMaterial({color: 0x0000ff, ambient:0x00FF00})
);
}
};
window.onmousemove = function(ev) { //マウスムーブ
var speed = 2;
if (down) {
if (ev.target == renderer.domElement) {
var dy = -(ev.clientX - sy);
var dz = -(ev.clientY - sz);
camera.position.y += dy*speed;
camera.position.z -= dz*speed;
sy -= dy;
sz -= dz;
}
}
}
window.onmousewheel = function(ev){ //マウスホイール
var speed = 0.2;
camera.position.x += ev.wheelDelta * speed ;
}
</script>
</head>
<body onload="threeStart();">
<div id="canvas-frame"></div>
</body>
</html>
ThreeJs开发(移动,旋转,相机,纹理,鼠标事件等源代码)
4星 · 超过85%的资源 需积分: 50 48 浏览量
2014-11-16
19:31:15
上传
评论 9
收藏 194KB RAR 举报
freedom541
- 粉丝: 5
- 资源: 7
最新资源
- 基于matlab实现夜间车牌识别程序(1).rar
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论9