• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > three.js实现围绕某物体旋转

three.js实现围绕某物体旋转

作者:艾瑞卡 字体:[增加 减小] 来源:互联网 时间:2017-05-11

艾瑞卡通过本文主要向大家介绍了three.js,three.js官网,three.js教程,three.js下载,three.js 中文api等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

话不多说,请看代码:

可以拖动右上角观察变化

<!DOCTYPE html>
<html lang="en" style="width: 100%; height:100%;">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="http://cdn.bootcss.com/three.js/r83/three.min.js"></script>
 <script src="http://cooklife.cn/html/node_modules/dat.gui/build/dat.gui.min.js"></script>
</head>
<body onload="threeExcute()" style="width: 100%; height:100%;">
 <div id="box"></div>
</body>
 <!-- Three.js的核心五步就是:
 1.设置three.js渲染器
 2.设置摄像机camera
 3.设置场景scene
 4.设置光源light
 5.设置物体object 
 -->
 <script>
 // 1.设置three.js渲染器
 var renderer;
 function initThree(){
 width = document.getElementById("box").clientWidth;
 height = document.getElementById("box").clientHeight;
 renderer = new THREE.WebGLRenderer({
 antialias:true
 });/*生成渲染器对象(属性:抗锯齿效果为设置有效)*/
 renderer.setSize(width,height);
 document.getElementById("box").appendChild(renderer.domElement);
 /*设置canvas背景色(clearColor)和背景色透明度(clearAlpha) */
 renderer.setClearColor(0xFFFF00,1.0);
 }

 // 2.设置摄像机camera
 var camera;
 function initCamera(){
 camera = new THREE.PerspectiveCamera(45,width/height,1,10000);
 camera.position.x = 1000;
 camera.position.y = 1000;
 camera.position.z = 1000;
 camera.up.x = 0;
 camera.up.y = 0;
 camera.up.z = 100;
 camera.lookAt({x:0,y:0,z:0}); //设置视野的中心坐标 
 }

 // 3.设置场景
 var scene;
 function initScene(){
 scene = new THREE.Scene();
 }

 // 4.设置光源light
 var light;
 function initLight(){
 light = new THREE.DirectionalLight(0xFF00FF, 1.0, 0); //平行光
 light.position.set(100,100, 200); //设置光源位置
 scene.add(light); //将官员添加到场景
 }

 //5.设置物体 
 var sphereMesh;
 var cubeMesh;
 var cubeMesh2;
 var cubeMesh3;
 var cubeMesh4;
 var cubeMesh5;
 var cubeMesh6;
 function initObject(){
 cubeMesh = new THREE.Mesh(new THREE.BoxGeometry(80,80,80),new THREE.MeshLambertMaterial({color:0xff0000})/*
 设置球体的材质*/);
 cubeMesh2 = new THREE.Mesh(new THREE.BoxGeometry(80,80,80),new THREE.MeshLambertMaterial({color:0xff0000})/*
 设置球体的材质*/);
 cubeMesh3 = new THREE.Mesh(new THREE.BoxGeometry(80,80,80),new THREE.MeshLambertMaterial({color:0xff0000})/*
 设置球体的材质*/);
 sphereMesh = new THREE.Mesh(new THREE.SphereGeometry(200,200,200),new THREE.MeshLambertMaterial({color:0xff00FF})/*设置球体的材质*/); //材质设定 
 sphereMesh.position.set(0,0,0); /*设置物体位置*/ 
 cubeMesh2.position.set(400,0,0); 
 cubeMesh.position.set(390,150,0); 
 cubeMesh3.position.set(380,100,0); 
 /*
 * 旋转要点。。。
 */
 var pivotPoint = new THREE.Object3D();
 pivotPoint.add(cubeMesh);
 pivotPoint.add(cubeMesh2);
 pivotPoint.add(cubeMesh3);
 sphereMesh.add(pivotPoint);
 scene.add(sphereMesh); 
 sphereMesh.name = 'cube' 
 } 

 control = new function () {
  this.rotationSpeedX = 0.001;
  this.rotationSpeedY = 0.001;
  this.rotationSpeedZ = 0.001;
 };

 function addController(){
 var gui = new dat.GUI();
 gui.add(control, 'rotationSpeedX', -0.2, 0.2);
  gui.add(control, 'rotationSpeedY', -0.2, 0.2);
  gui.add(control, 'rotationSpeedZ', -0.2, 0.2);
 }

 function render(){
 renderer.render(scene, camera);
  scene.getObjectByName('cube').rotation.x += control.rotationSpeedX;
  scene.getObjectByName('cube').rotation.y += control.rotationSpeedY;
  scene.getObjectByName('cube').rotation.z += control.rotationSpeedZ;

  requestAnimationFrame(render);
 } 
 function threeExcute(){ 
  initThree(); 
  initCamera(); 
  initScene(); 
  initLight(); 
  initObject(); 
  renderer.clear();
  addController(); 
  render(); 
 } 
 </script>
 <style type="text/css">
 div#box{
  border: none;
  cursor: move;
  width: 100%;
  height: 100%;
  background-color: #EEEEEE;
  }
 </style>
</html>
</div>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Three.js的使用及绘制基础3D图形详解
  • Three.js获取鼠标点击的三维坐标示例代码
  • three.js绘制地球、飞机与轨迹的效果示例
  • three.js实现围绕某物体旋转
  • three.js快速入门【推荐】
  • Three.js基础部分学习

相关文章

  • 2017-05-11nodejs搭建本地服务器并访问文件的方法
  • 2017-05-11用 js 的 selection range 操作选择区域内容和图片
  • 2017-05-11JS实现根据密码长度显示安全条功能
  • 2017-05-11windows 下安装nodejs 环境变量设置
  • 2017-05-11bootstrap fileinput 插件使用项目总结(经验)
  • 2017-05-11Angular2自定义分页组件
  • 2017-05-11详解用webpack2.0构建vue2.0超详细精简版
  • 2017-05-11vue.js实现含搜索的多种复选框(附源码)
  • 2017-05-11jQuery层级选择器实例代码
  • 2017-08-26js闭包和面向对象设计

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • bootstrap配合Masonry插件实现瀑布式布局
    • JS简单获取日期相差天数的方法
    • 浅谈js中同名函数和同名变量的执行问题
    • js性能优化总结
    • jquery实现拖动效果(代码分享)
    • Javascript 使用ajax与C#获取文件大小实例详解
    • 无法获取隐藏元素宽度和高度的解决方案
    • 使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
    • jQuery插件Echarts实现的渐变色柱状图
    • js实现适合新闻类图片的轮播效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有