three.js入门

Posted 世人皆萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了three.js入门相关的知识,希望对你有一定的参考价值。

Renderer:渲染;Stats:监视器;Camera:相机;Scene:场景;Light:光源;Geometry:几何体;Tween:运动轨迹;Texture:纹理(皮肤)

基本的demo;学习地址http://www.hewebgl.com/article/articledir/1

var renderer;//渲染
            var stats;//监视器

            function initThree() {
                width = document.getElementById(\'canvas-frame\').clientWidth;
                height = document.getElementById(\'canvas-frame\').clientHeight;
                renderer = new THREE.WebGLRenderer({
                    antialias: true //抗锯齿
                });
                renderer.setSize(width, height);
                document.getElementById(\'canvas-frame\').appendChild(renderer.domElement);
                renderer.setClearColor(0xFFFFFF, 1.0);//设置白色,

                stats = new Stats();
                stats.domElement.style.position = \'absolute\';
                stats.domElement.style.left = \'0px\';
                stats.domElement.style.top = \'0px\';
                document.getElementById(\'canvas-frame\').appendChild(stats.domElement);
            }

            var camera;//相机
            function initCamera() {
                camera = new THREE.PerspectiveCamera(135, width / height, 1, 10000);//视野角度;视野宽高比例;**面;远*面
                camera.position.x = 0;
                camera.position.y = 0;
                camera.position.z = 600;
                camera.up.x = 0;
                camera.up.y = 1;
                camera.up.z = 0;
                camera.lookAt({
                    x: 0,
                    y: 0,
                    z: 0
                });
            }

            var scene;//场景
            function initScene() {
                scene = new THREE.Scene();
            }

            var light;//光源
            function initLight() {
                light = new THREE.AmbientLight(0xFFFFFF);
                light.position.set(100, 100, 200);
                scene.add(light);
                light = new THREE.PointLight(0x00FF00);
                light.position.set(0, 0, 300);
                scene.add(light);
            }

            var cube;//几何体
            function initObject() {
                var geometry = new THREE.CylinderGeometry(50, 75, 200);
                var material = new THREE.MeshLambertMaterial({
                    color: 0xDC143C
                });
                var mesh = new THREE.Mesh(geometry, material);
                mesh.position = new THREE.Vector3(100, 100, 100);
                scene.add(mesh);
            }
            //运动轨迹
            function initTween() {
                new TWEEN.Tween(camera.position)
                .to( { x: 400, y:200, z:-100 }, 3000 ).repeat( Infinity ).start();
            }
            function animation() {
                //renderer.clear();
                //camera.position.x = camera.position.x + 1;
                renderer.render(scene, camera);
                requestAnimationFrame(animation);
                stats.update();
                TWEEN.update();
            }
            
            function threeStart() {
                initThree();
                initCamera();
                initScene();
                initLight();
                initObject();
                initTween();
                animation();

            }

光源:Light( color, intensity, distance ),光源颜色;光源强度(默认1);光源距离

THREE.SpotLight( hex, intensity, distance, angle, exponent )

函数的参数如下所示:

Hex:聚光灯发出的颜色,如0xFFFFFF

Intensity:光源的强度,默认是1.0,如果为0.5,则强度是一半,意思是颜色会淡一些。和上面点光源一样。

Distance:光线的强度,从最大值衰减到0,需要的距离。 默认为0,表示光不衰减,如果非0,则表示从光源的位置到Distance的距离,光都在线性衰减。到离光源距离Distance时,光源强度为0.

Angle:聚光灯着色的角度,用弧度作为单位,这个角度是和光源的方向形成的角度。

exponent:光源模型中,衰减的一个参数,越大衰减约快。

 

 

 

以上是关于three.js入门的主要内容,如果未能解决你的问题,请参考以下文章

THREE.js - 大型int作为Uniform

three.js入门3

three.js 正交相机对象拾取

three.js入门——画一个3D正方体

three.js入门系列之材质

《Three.js 入门指南》3.1.1 - 基本几何形状 -圆形(CircleGeometry)