three.js之让物体动起来方式(二)移动物体
2024-09-01 11:51:42
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Three框架</title>
<script src="../static/three.js-master/build/three.js"></script>
<style type="text/css">
div#canvas-frame {
border: none;
cursor: pointer;
width: 100%;
height: 600px;
background-color: #EEEEEE;
} </style> </head> <body onload="threeStart();">
<div id="canvas-frame"></div>
<script>
var renderer; function initThree() { renderer = new THREE.WebGLRenderer(); // 创建渲染器
renderer.setSize(window.innerWidth, window.innerHeight); // 设置长度和宽度
document.getElementById('canvas-frame').appendChild(renderer.domElement); // 添加到canvas-frame
renderer.setClearColor(0xFFFFFF, 1.0); // 设置背景色和透明度 } var camera; // 摄像机 function initCamera() {
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.x = 0;
camera.position.y = 0;
camera.position.z = 1000;
camera.up.x = 0;
camera.up.y = 1;
camera.up.z = 0;
camera.lookAt(0, 0, 0);
} var scene; // 场景 function initScene() {
scene = new THREE.Scene();
} var light; // 光线 function initLight() {
light = new THREE.AmbientLight(0xFF0000); // 创建环境光源,不产生阴影
light.position.set(100, 100, 200);
scene.add(light);
light = new THREE.PointLight(0x00FF00); // 创建点光源
light.position.set(0, 0, 300);
scene.add(light);
} var mesh; // 创建模型 function initObject() {
var geometry = new THREE.CylinderGeometry(100, 150, 400); // THREE.CylinderGeometry构造圆柱体
var material = new THREE.MeshLambertMaterial({color: 0xFFFFFF}); //THREE.MeshLambertMaterial高级材质,构造类似木头、石头等不光滑的表面
mesh = new THREE.Mesh(geometry, material); // 网状 Mesh的构造函数是这样的:Mesh( geometry, material ) geometry是它的形状,material是它的材质
mesh.position = new THREE.Vector3(0, 0, 0);
scene.add(mesh);
} function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
animation(); } function animation() {
mesh.position.x += 1; // mesh就是指的物体,它有一个位置属性position,这个position是一个THREE.Vector3类型变量,所以你要把它向左移动,只需要将x的值不断的减少就可以了。这里我们减去的是1个单位。
renderer.render(scene, camera);
requestAnimationFrame(animation);
} </script>
</body>
</html>
移动物体与移动摄像机的唯一区别是
mesh.position.x += 1;
附带three.js代码,点击下载
最新文章
- AJAX需要注意的
- 软件产品案例分析——K米
- 解决Centos7安装后无法联网的问题
- CPU制造工艺 级选来决定cpu等级
- mysql操作之二
- Ext JS中Button的一般使用
- 企业架构研究总结(25)——TOGAF架构开发方法(ADM)之迁移规划阶段
- 关于MATLAB处理大数据坐标文件2017527
- 【原创】流程引擎的网关(遵循BPMN2.0)设计总结
- iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
- [译] Linux吃掉了我的内存
- HTML标题
- 斐讯N1折腾记
- Docker exec 宿主对容器执行命令 - 五
- redis集群环境的搭建和错误分析
- Openlayers2中统计图的实现
- Android -- Gradle
- 「小程序JAVA实战」小程序视频展示页开发(52)
- InfluxDB使用纪录
- [计算机网络-应用层] DNS:因特网的目录服务
热门文章
- window 10 安装vs2013启动web项目报错Id端口不能启动iis
- 我们可以从英特尔&#174; SPMD 程序编译器中学到什么?
- 《JAVA语言》第三节课
- 学习笔记:CentOS 7学习之十二:查找命令
- Oracle数据库弱口令解密
- 【0.4】mysql版本特性(5.6-8.0)【转】
- GIP画图
- Oracle的基本操作-序列的使用
- Codeforces Round #225 (Div. 1) C. Propagating tree dfs序+ 树状数组或线段树
- PAT B1001 害死人不偿命的(3n+1)猜想 (15)