three.js实现圆柱体


Posted in Javascript onDecember 30, 2018

本文实例为大家分享了three.js绘制圆柱体的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>圆柱体</title>
  <style>
    #canvas{
      width:1100px;
      height:600px;
      border:1px solid;
    }
  </style>
  <script type="text/javascript" src="js/three.js"></script>
  <script>
//    渲染器
    var renderer;
    function init_renderer(){
      width = document.getElementById("canvas").clientWidth;
      height = document.getElementById("canvas").clientHeight;
      renderer = new THREE.WebGLRenderer({  //生成渲染对象
        antialias : true  //去锯齿
      });
      renderer.setSize(width,height);//设置渲染的宽度和高度;
      document.getElementById("canvas").appendChild(renderer.domElement);
      renderer.setClearColor(0xEEEEEE,1);//设置渲染的颜色;
    }
//    场景
    var scene;
    function init_scene(){
      scene = new THREE.Scene();
    }
//   圆柱体
var cylinder;
function init_cylinder(){
var cylinder = new THREE.CylinderGeometry(80,50,300,50,50);
var texture = THREE.ImageUtils.loadTexture("textures/2.jpg",null,function(t)//图片地址可使用本地,同根目录下文件夹即可
    {
    });
var material = new THREE.MeshLambertMaterial({map:texture});  //材料
cube = new THREE.Mesh(cylinder,material);
cube.position.set(0,0,5);   //设置几何体的位置(x,y,z)
      scene.add(cube);
}

//    相机
    var camera;
    function init_camera(){
//     camera = new THREE.PerspectiveCamera(100,width/height,1,10000);  //透视相机
camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000) //正投影相机
      // (可视角度,可视范围的长宽比,相对于深度剪切面的近的距离 必须为正数,相对于深度剪切面的远的距离 必须为正数)
      camera.position.x =600
      camera.position.y = 100;
      camera.position.z = 100;


      camera.up.x = -2;//设置相机的上为「x」轴方向
      camera.up.y = 2;//设置相机的上为「y」轴方向
      camera.up.z = 0;//设置相机的上为「z」轴方向
      camera.lookAt({x:0,y:0,z:0}); //设置视野的中心坐标
    }
//    光源
    var light;
    function init_light(){
      light = new THREE.DirectionalLight(0xffffff,1);//设置平行光源 (光颜色,光强度)
      light.position.set(200,100,50);//设置光源向量 (x,y,z)
      scene.add(light);
    }


    function ThreeJs_Main(){
      init_renderer();//渲染
      init_scene();//场景
      init_cylinder();//圆柱体
      init_camera();//相机
      init_light();//光源
      renderer.clear();
      animation()
      renderer.render(scene,camera);
    }
    function animation(){

 //x,y,z为旋转的轴 后边数字为速度

//      cube.rotation.x += 0.01;

 cube.rotation.y += 0.01;

//     cube.rotation.z += 0.01;
     renderer.render(scene,camera);
        requestAnimationFrame(animation);
      }
  </script>
</head>
<body onload="ThreeJs_Main()">
  <div id="canvas"></div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
JavaScript+CSS控制打印格式示例介绍
Jan 07 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
jquery超简单实现手风琴效果的方法
Jun 05 Javascript
javascript实现表单验证
Jan 29 Javascript
JS DOMReady事件的六种实现方法总结
Nov 23 Javascript
jquery实现图片平滑滚动详解
Mar 22 jQuery
jQuery实现视频展示效果
May 30 jQuery
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 #Javascript
Three.js实现3D机房效果
Dec 30 #Javascript
JavaScript对象的特性与实践应用深入详解
Dec 30 #Javascript
three.js搭建室内场景教程
Dec 30 #Javascript
Three.JS实现三维场景
Dec 30 #Javascript
Three.js实现简单3D房间布局
Dec 30 #Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 #Javascript
You might like
PHP 类相关函数的使用详解
2013/05/10 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
Python学习笔记之常用函数及说明
2014/05/23 Python
Python显示进度条的方法
2014/09/20 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python实现微信小程序自动回复
2018/09/10 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
python如何基于redis实现ip代理池
2020/01/17 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python3开发环境搭建详细教程
2020/06/18 Python
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
季度思想汇报
2014/01/01 职场文书
元旦联欢会主持词
2014/03/26 职场文书
应届大专生求职信
2014/06/26 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
茶花女读书笔记
2015/06/29 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
python超详细实现完整学生成绩管理系统
2022/03/17 Python
拙作再改《我的收音机情缘》
2022/04/05 无线电