WebGL 基础

webgl 场景创建

  • 渲染
    • render (scene, camera)
    • setViewport()
   var renderer = new THREE.WebGLRenderer({
          antialias : true });
  //  WebGLRenderer ( parameters )
  /**
      parameters :
        1. empty
        2. canvas 画板  eg. document.getElementById("divCanvas");
        3. context
        4. antialias 反锯齿
        5. stencil 
         ... ... 
  **/
  // 两种创建方式
  //  1. 
    var render = new THREE.WebGLRenderer({
       canvas: document.getElementById("mainCanvas")
    })
  // 2.
    var render = new THREE.WebGLRenderer();
    render.setSize(width, height);
    render.setClearColor(0x000000);
    document.body.appendChild(renderer.domElement);

  • 场景
var scene = new THREE.Scene();
  • 相机
    camera.position
    camera.rotaion
    • 正视投影
var camera = new THREE.OrthographicCamera(left, right, top, bottom, near, far)
来源ituring网站
  • fov :角度
  • width/height : 视窗比
  • near 离相机最近的距离
  • far 最远距离
   var camera = new THREE.PerspectiveCamera( fov, width/height, near , far);
  camera.position.z = 10;

  • 物体
    物体定义分为材质和几何特征
    • 立方体
var  geometry = new THREE.BoxGeometry(width, height, depth);
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00});
var cube = new THREE.Mesh(geometry, material);

WebGL 基本数据结构

  • Vector
  • Matrix3
  • Matrix4
  • ....

技巧

个人在学习的过程中发现对相机的投影情况不能准确找到,因此绘制了坐标

 function drawAxes(scene){
                // x-axis
                var xGeo = new THREE.Geometry();
                xGeo.vertices.push(new THREE.Vector3(0, 0, 0));
                xGeo.vertices.push(new THREE.Vector3(13, 0, 0));
                var xMat = new THREE.LineBasicMaterial({color: 0xff0000});
                var xAxis = new THREE.Line(xGeo, xMat);
                scene.add(xAxis);

                // y-axis

                var yGeo = new THREE.Geometry();
                yGeo.vertices.push(new THREE.Vector3(0, 0, 0));
                yGeo.vertices.push(new THREE.Vector3(0, 13, 0));
                var yMat = new THREE.LineBasicMaterial({color: 0x00ff00});
                var yAxis = new THREE.Line(yGeo, yMat);
                scene.add(yAxis);

                // z-axis

                var zGeo = new THREE.Geometry();
                zGeo.vertices.push(new THREE.Vector3(0, 0, 0));
                zGeo.vertices.push(new THREE.Vector3(0, 0, 13));
                var zMat = new THREE.LineBasicMaterial({
                    color: 0x0000ff
                });
                var zAxis = new THREE.Line(zGeo, zMat);
                scene.add(zAxis);
            }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本节主要讲解一下颜色的设置。1、WebGL可以使用多个多个缓冲器对象向顶点着色器传输数据。 看一个示例程序 程序中...
    我是嘻哈大哥阅读 469评论 0 0
  • 今天的主题是three.js中用于观察三维空间的摄像机。 1.认识camera 图形学中的摄像机定义了三维空间到二...
    sakatayui酱阅读 5,934评论 0 1
  • 本文主要是讲解 Three.js 的相关概念,帮助大家对 Three.js 以及相关知识形成比较完整的理解。今年来...
    Simon王小白阅读 8,505评论 2 9
  • public classCamera.Parametersextends Objectjava.lang.Obje...
    冉冉升起的小太阳阅读 11,009评论 0 7
  • 闺蜜在诉说着,结婚后老公一年比一年冷漠,夫妻间的话题除了孩子还是孩子,就别提过七夕了,我还是带女儿出去玩玩实在。而...
    田田教练阅读 181评论 0 2