zoukankan      html  css  js  c++  java
  • Three.js 学习之路(一)

    1.一个友好的编辑器可以提高工作效率,webstrom,vscode是开发three.js的不错选择。

    2.快速学习Three.js,可以从官网https://threejs.org/ 下载源码,查阅常用API,关注threejs分享案例。中文手册http://techbrood.com/threejs/docs/

    3.快速构建一个通用的Three.js框架:

      首先引入下载的three.js源文件到我们的项目中,接着创建必须的三个对象

    (1).scence :存放所有3d场景中的对象,可通过scence.children快速拿到所有场景对象的信息(基于对象命名的索引,So命名规范极其重要);

    (2).camera:摄像机包括透视摄像机(正交摄像机,立方体摄像机);

        屏幕中心为世界三维坐标系原点,屏幕向外为Z,屏幕右方为X,屏幕上方为Y
    (3).renderer:渲染器包括webgl和canvas,canvas是2d渲染的回退。通过渲染器把摄像机视口渲染到我们的网页中;

      现在我们需要添加一个简单的3d模型,光源和一个render()实时渲染函数,一个3D Web Demo就可以完美运行了。

    示例:

    <!DOCTYPE html>
    <html>
    <head>
    <title>My first three.js 框架</title>
    <script src="./lib/three.js"></script>
    <style type="text/css">
    body {
    margin: 0px;
    border: none;
    cursor: pointer;
    100%;
    height: 100vh;/* //800px */
    overflow: hidden;
    }
    </style>
    <script>
    var renderer,scene,camera,cube;
    function Init(){
    scene= new THREE.Scene();

    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);//可自定义画布大小
    renderer.setClearColor(0x000000, 1.0);//设置画布背景色
    document.body.appendChild(renderer.domElement);//画布
     
    camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);//透视相机
    camera.position.set(0,4,10);
    camera.up = { x: 0, y: 1, z: 0 };//自身up向量的朝向
    camera.lookAt({ x: 0, y: 0, z: 0 });//聚焦
     
    var pointlight = new THREE.PointLight(0xffffff);
    pointlight.position.set(0, 0, 0);
    scene.add(pointlight);

    var cubegeometry = new THREE.BoxGeometry(1, 1, 1);//保存顶点数据
    var cubematerial = new THREE.MeshBasicMaterial({color:0x00ff00});//材质对象
    cube = new THREE.Mesh(cubegeometry, cubematerial);//网格对象
    cube.rotation.x = 1.57;
    scene.add(cube);
    }
    function update() {
    cube.rotation.y += 0.05;//弧度 自身旋转 但自身轴向不变
    renderer.render(scene, camera);//每一帧的渲染
    requestAnimationFrame(update);//下一帧执行一次参数中的函数
    }
    function start(){
    Init();
    update();
    }
     
    </script>
    </head>
    <body onload="start()">
    </body>
    </html>
  • 相关阅读:
    WIN7远程桌面连接--“发生身份验证错误。要求的函数不受支持”
    django-xadmin使用之更改菜单url
    django-xadmin使用之配置页眉页脚
    django-xadmin定制之列表页searchbar placeholder
    django-xadmin定制之分页显示数量
    Chrome无界面浏览模式与自定义插件加载问题
    Chrome开启无界面浏览模式Python+Windows环境
    django-xadmin中APScheduler的启动初始化
    处理nginx访问日志,筛选时间大于1秒的请求
    将Excel文件转为csv文件的python脚本
  • 原文地址:https://www.cnblogs.com/JiSight/p/7729236.html
Copyright © 2011-2022 走看看