zoukankan      html  css  js  c++  java
  • 第一课 定义一个可复用的面向对象的Three.js三维绘图框架

    在参考为他人的Three.js的学习笔记,现在摘录如下(javascript部分):

     1 var three3DObject={
     2     scene:null,        // 场景
     3     camera:null,       // 相机
     4     renderer:null,     // 渲染器
     5     controls: null,    // 控制器
     6     container:null,    // 场景容器
     7     stats:null,        // 统计控件
     8     init:function(){
     9         // 初始化
    10         var SCREEN_WIDTH=window.innerWidth,SCREEN_HEIGHT=window.innerHeight;
    11         // 创建一个场景
    12         this.scene = new THREE.Scene();
    13 
    14         // 创建一个投影相机
    15         this.camera = new THREE.PerspectiveCamera(75, SCREEN_WIDTH/SCREEN_HEIGHT, 0.1, 1000);
    16         this.camera.position.set(0,0,5);
    17 
    18         // 创建一个渲染器
    19         this.renderer = new THREE.WebGLRenderer();
    20         this.renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
    21 
    22         // 准备容器
    23         this.container=document.getElementById('display');
    24         this.container.appendChild(this.renderer.domElement);
    25         document.body.appendChild(this.container);
    26 
    27         // 创建一个控制器
    28         this.controls=new THREE.OrbitControls(this.camera);
    29 
    30         // 准备统计
    31         this.stats = new Stats();
    32         this.stats.domElement.style.position = 'absolute';
    33         this.stats.domElement.style.bottom = '10px';
    34         this.stats.domElement.style.zIndex = 10;
    35         this.container.appendChild( this.stats.domElement );
    36 
    37         // 创建需要绘制的3D几何模型和像素模型
    38         var geometry = new THREE.CubeGeometry(1,1,1);
    39         var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
    40         var cube = new THREE.Mesh(geometry, material);
    41         this.scene.add(cube);
    42     }
    43 };
    44 // 渲染
    45 function render(){
    46     if(three3DObject.renderer){
    47         three3DObject.renderer.render(three3DObject.scene,three3DObject.camera);
    48     }
    49 }
    50 // 使模型动画化
    51 function animate(){
    52     requestAnimationFrame(animate);
    53     render();
    54     update();
    55 }
    56 // 状态更新
    57 function update(){
    58     three3DObject.controls.addEventListener('change',render());
    59     three3DObject.stats.update();
    60 }
    61 // 载入Three3D数据
    62 function initialize3DObject(){
    63     three3DObject.init();
    64     animate();
    65 }
    66 
    67 // 多浏览器兼容处理
    68 if (window.addEventListener){
    69     window.addEventListener('load', initialize3DObject, false);
    70 }
    71 else if (window.attachEvent){
    72     window.attachEvent('onload', initialize3DObject);
    73 }
    74 else{
    75     window.onload = initialize3DObject();
    76 }

    这是一个可复用的面向对象的一个Three.js三维绘图框架,模型数据处理和像素数据处理均在three3DObject.init()方法里面处理。

    参考文章:http://www.tuicool.com/articles/uAVNV3

  • 相关阅读:
    SQL 语言入门
    [转载]Sql Server 中的Login,Schema,User,Role之间的关系
    稀疏矩阵运算
    特征缩放的几种方法
    dp解出栈序列数
    神经网络解决多分类问题例:数字识别
    多分类例题
    fminunc 函数的用法
    二分类
    特征归一化、特征映射、正则化
  • 原文地址:https://www.cnblogs.com/hot-destiny/p/6236812.html
Copyright © 2011-2022 走看看