w我用画画来形容他们之间的关系

场景就是纸张

相机就是我们的眼睛

物体就是在我们脑海中构思的那个画面

渲染器就是绘画这个动作

场景(Scene):

  初始化:var scene = new THREE.Scene();

  添加物体:scene.add( 物体对象 );

  删除物体:scene.remove( 物体对象 );

  获取场景中所有子对象的列表:scene.children()

  利用name属性,获取场景中某个特定的物体:scene.getChildByName()

  简单雾化:scene.fog = new THREE.Fog(0xffffff,100,120);//颜色 雾化开始的时候距离相机的位置,完全雾化距离相机的位置

  直属雾化:scene.fog = new THREE.FogExp2(0xffffff,0.02);//颜色,雾的浓度

相机(只介绍透视投影):

  初始化:

    var camera = THREE.PerspectiveCamera(fov, aspect, near, far);

      //fov就是我们眼睛可以看多大范围的物体,苍蝇眼睛可以看到后面,对于苍蝇来说fov基本上就是360了,我们人类差不多是120

      //aspect 照相机水平方向和竖直方向长度

      //near far:我是近视,基本上50米开外我就什么也看不到了(就是看不到,不是看不清),我是远视,1米之内 我也看不到(不是看不清,是看不到 纯黑的那种),所以我的可视范围是1米到50米,把1和50设置为near far,就相当于这个功能

  设置相机位置:

    camera.position.z = 5;camera.position.x = 5;camera.position.y = 5;

      //我们可以把摄像机摆放在任何位置 理论上

  设置相机的拍摄方向:

    camera.lookAt(new THREE.Vector3(0, 0, 0));

      //我可以向左前方看,可以向右前方看,我们看的方向是一条直线,更确切的说是一个向量,所以lookAt的参数是一个向量

  设置相机的顶部朝向:

    camera.up.x = 0;
    camera.up.y = 0;
    camera.up.z = 1;

      //我们平常用手机拍照的时候,如果你把手机倒过来排,也就是让手机的头部向下来拍照,我们就说你设置了手机相机的顶部朝向为向下,理论上我们可以设置任意一个方向为手机相机的顶部所指向的方向

渲染器:

  three.js提供很多中渲染器:CanvasRenderer,DOMRenderer,SVGRenderer,WebGLRenderer,WebGLRenderTarget,WebGLRenderTargetCube,WebGLShaders

    //CanvasRenderer以canva方式渲染,

    //SVGRenderer以svg方式渲染,

    //WebGLRenderer则是以webGL方式渲染,(三种方式的区别相当于,我们可以用canvas实现绘图,也可以用svg实现绘图,您说 canvas绘图与svg绘图之间的区别是什么?)

    //WebGLRenderTarget是特有的表示渲染到其他物体上 而不是屏幕上

  WebGLRenderTarget的具体用途:

    renderer.render(bufferScene, camera, bufferTexture);//把bufferTexture以camera的视角渲染到bufferScene上,因为我们没有渲染到屏幕上,所以我们什么也看不到,那我们如何用他呢,

    var boxMaterial = new THREE.MeshBasicMaterial({map:bufferTexture});//我们可以把bufferTexture当作一个纹理然后覆盖在A物体上,当A物体被放到屏幕上,我们自然可以看到bufferTexture(可以看我写的例子:https://pan.baidu.com/s/1o7LiEbo)

    WebGLRenderTargetCube:???我目前也不清楚

    WebGLShaders:???我目前也不清楚

  WebGLRenderer初始化参数: 

    antialias:true, //是否开启反锯齿 --true/false
    precision:"highp", //着色精度选择 --highp/mediump/lowp
    alpha:true, //是否可以设置背景色透明 --true/false
    premultipliedAlpha:false, //http://blog.csdn.net/mydreamremindme/article/details/50817294
    stencil:false, //http://blog.csdn.net/a923164250/article/details/40393905
    preserveDrawingBuffer:true, //是否保存绘图缓冲 --若设为true,则可以提取canvas绘图的缓冲
    maxLights:1 //maxLights:最大灯光数--num

  设置渲染大小:renderer.setSize(width,height)

  追加生成的canvas元素到容器元素中:document.body.appendChild( renderer.domElement );

  设置canvas背景色(clearColor)和背景色透明度(clearAlpha):renderer.setClearColor(clearColor,clearAlpha);

  物体留到下节说

three.js 第二篇:场景 相机 渲染器 物体之间的关系的更多相关文章

  1. three.js引擎基础知识—摄像机、场景及渲染器

    一.three.js采用右手坐标系: x轴正方向向右,y轴正方向向上,z轴由屏幕从里向外,如下图右: 二.3D编程三要素:场景.渲染器.摄像机 1.场景:创建的物品和模型都需放入场景中 threejs ...

  2. C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本篇..基 ...

  3. js 第二篇 (DOM 操作)

    DOM 节点含有:元素节点,属性节点,文本节点. document.getElementById("id") //通过页面元素ID 值 捕获元素对象,得到的值为一个object 1 ...

  4. redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二

    变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...

  5. Python学习笔记【第二篇】:运算符、比较、关系运算符

    运算符 python支持以下几种运算符 算术运算符 运算符 描述 实例 + 加 两个对象相加 a + b 输出结果 30 - 减 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 ...

  6. 使用WebGL + Three.js制作动画场景

    使用WebGL + Three.js制作动画场景 3D图像,技术,打造产品,还有互联网:这些只是我爱好的一小部分. 现在,感谢WebGL的出现-一个新的JavaScriptAPI,它可以在不依赖任何插 ...

  7. Django之模型层第二篇:多表操作

    Django之模型层第二篇:多表操作 一 表关系回顾 ​ 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ​ 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息 ...

  8. 【three.js详解之二】渲染器篇

    [three.js详解之二]渲染器篇   本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...

  9. jquery jtemplates.js模板渲染引擎的详细用法第二篇

    jquery jtemplates.js模板渲染引擎的详细用法第二篇 关于jtemplates.js的用法在第一篇中已经讲过了,这里就直接上代码,不同之处是绑定模板的方式,这里讲模板的数据专门写一个t ...

随机推荐

  1. 使用Sublime Text 3进行Node.js开发

    总体思路: 环境: Win7 64bit Sp1 1.官网下载node.js(我的是8.9.4LTS).注意:偶数开头的是稳定版,奇数开头的是测试版.目前我下的版本,已带npm 下载后直接下一步... ...

  2. [qemu] 差分盘使用

    我要装好多台同样配置的虚拟机.比如10台CentOS7, 各自有不同的配置. 这样的话装10台kvm虚拟机,特别的浪费空间,image文件相互迁移的话也不方便. 这个时候可以选择差分盘:就是先装一个标 ...

  3. Win7 搭建Linux开发环境

    Vargant Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境.它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用 Chef 创建自动化虚拟环境. 功能特 ...

  4. WordCount扩展与优化

    合作者:201631062327,201631062128码云地址:https://gitee.com/LIUJIA6/WordCount3 一:项目说明 本次项目是在上次作业WorldCount的基 ...

  5. ES6 对象

    对象字面量 属性的简洁表示法 ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值. const age = 12; const name = "Amy"; con ...

  6. C++(+类型加强 +加入面向对象)

    1.c++中所有变量可以在使用前定义. ; i< ; i++) { ; j< ; j++) { do_sth; } } 2. c++ 中可以获得 register 变量的地址. regis ...

  7. 3.1.1 Spring 简介

    1. 概念 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. IoC : Inversion of Control AOP : Aspect Oriented Program ...

  8. python 构造一个可以返回多个值的函数

    为了能返回多个值,函数直接return 一个元组就行了 看上去返回了多个值,实际上是先创建了一个元组然后返回的.这个语法看上去比较奇怪,实际上我们使用的是逗号来生成一个元组,而不是用括号 >&g ...

  9. swagger 自动生成接口测试用例

    ---整体更新一波--- 1.实际工作中,因为要动手输入的地方比较多,自动生成的异常接口用例感觉用处不大,就先去掉了,只保留了正常的: 2.接口有改动的,如果开发人员没有及时告知或没有详细告知,会增加 ...

  10. Hdu2039 三角形

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2039 三角形 Time Limit: 2000/1000 MS (Java/Others)    Me ...