<!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代码,点击下载

最新文章

  1. AJAX需要注意的
  2. 软件产品案例分析——K米
  3. 解决Centos7安装后无法联网的问题
  4. CPU制造工艺 级选来决定cpu等级
  5. mysql操作之二
  6. Ext JS中Button的一般使用
  7. 企业架构研究总结(25)——TOGAF架构开发方法(ADM)之迁移规划阶段
  8. 关于MATLAB处理大数据坐标文件2017527
  9. 【原创】流程引擎的网关(遵循BPMN2.0)设计总结
  10. iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
  11. [译] Linux吃掉了我的内存
  12. HTML标题
  13. 斐讯N1折腾记
  14. Docker exec 宿主对容器执行命令 - 五
  15. redis集群环境的搭建和错误分析
  16. Openlayers2中统计图的实现
  17. Android -- Gradle
  18. 「小程序JAVA实战」小程序视频展示页开发(52)
  19. InfluxDB使用纪录
  20. [计算机网络-应用层] DNS:因特网的目录服务

热门文章

  1. window 10 安装vs2013启动web项目报错Id端口不能启动iis
  2. 我们可以从英特尔&#174; SPMD 程序编译器中学到什么?
  3. 《JAVA语言》第三节课
  4. 学习笔记:CentOS 7学习之十二:查找命令
  5. Oracle数据库弱口令解密
  6. 【0.4】mysql版本特性(5.6-8.0)【转】
  7. GIP画图
  8. Oracle的基本操作-序列的使用
  9. Codeforces Round #225 (Div. 1) C. Propagating tree dfs序+ 树状数组或线段树
  10. PAT B1001 害死人不偿命的(3n+1)猜想 (15)