一路繁花似锦绣前程
失败的越多,成功才越有价值

导航

 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style>
        body{
            margin: 0;
            overflow: hidden;
        }
    </style>
    <script src="http://www.yanhuangxueyuan.com/threejs/build/three.js"></script>
    <script src="http://www.yanhuangxueyuan.com/threejs/examples/js/controls/OrbitControls.js"></script>
</head>
<body>
<script>
    /**
     * 创建场景对象Scene
     */
    var scene=new THREE.Scene();
    /**
     * 创建网格模型
     */
    // var geometry=new THREE.SphereGeometry(60,40,40);//创建一个球体几何对象
    var geometry=new THREE.BoxGeometry(100,100,100);//创建一个立方体几何对象Geometry
    var material=new THREE.MeshLambertMaterial({
        color:0x0000ff
    });//材质对象Material
    var mesh=new THREE.Mesh(geometry,material);//网格模型对象Mesh
    scene.add(mesh);//网格模型添加到场景中

    var geometry1=new THREE.SphereGeometry(60,40,40);//创建一个立方体几何对象Geometry
    var material1=new THREE.MeshLambertMaterial({
        color:0x00ff00
    });//材质对象Material
    var mesh1=new THREE.Mesh(geometry1,material1);//网格模型对象Mesh
    mesh1.translateY(120);
    scene.add(mesh1);//网格模型添加到场景中

    var geometry2=new THREE.CylinderGeometry( 50, 50, 100, 25 );//创建一个立方体几何对象Geometry
    var material2=new THREE.MeshLambertMaterial({
        color:0xff0000
    });//材质对象Material
    var mesh2=new THREE.Mesh(geometry2,material2);//网格模型对象Mesh
    // mesh2.translateX(120);
    mesh2.position.set(120,0,0);
    scene.add(mesh2);//网格模型添加到场景中

    //红色代表 X 轴. 绿色代表 Y 轴. 蓝色代表 Z 轴
    var axesHelper = new THREE.AxesHelper( 250 );
    scene.add( axesHelper );

    /**
     * 光源设置
     */
    //点光源
    var point=new THREE.PointLight(0xffffff);
    point.position.set(400,200,300);//电光源位置
    scene.add(point);//点光源添加到场景中
    //环境光
    var ambient=new THREE.AmbientLight(0x444444);
    scene.add(ambient);
    // console.log(scene);
    // console.log(scene.children);
    /**
     * 相机设置
     */
    var width=window.innerWidth;//窗口宽度
    var height=window.innerHeight;//窗口高度
    var k=width/height;//窗口宽高比
    var s=200;//三维场景显示范围控制系数,系数越大,显示的范围越大
    //创建相机对象
    var camera=new THREE.OrthographicCamera(-s*k,s*k,s,-s,1,1000);
    camera.position.set(200,300,200);//设置相机位置
    camera.lookAt(scene.position);//设置相机方向(指向的场景对象)
    /**
     * 创建渲染器对象
     */
    var renderer=new THREE.WebGLRenderer({
        antialias : true
    });
    renderer.setSize(width,height);//设置渲染区域尺寸
    renderer.setClearColor(0xb9d3ff,1);//设置背景颜色
    document.body.appendChild(renderer.domElement);//body元素中插入canvas对象
    //执行渲染操作     指定场景、相机作为参数
    // renderer.render(scene,camera);

    //渲染函数
    function render(){
        renderer.render(scene,camera);//执行渲染操作
        // mesh.rotateY(0.01);//每次绕Y轴旋转0.01弧度
        requestAnimationFrame(render);//请求再次执行渲染函数render,渲染下一帧
    }
    render();

    //创建空间对象 相机对象camera作为参数 控件可以监听鼠标的变化,改变相机对象的属性
    var controls=new THREE.OrbitControls(camera);
    //监听鼠标事件,触发渲染函数,更新canvas画布渲染效果
    // controls.addEventListener("change",render);
</script>
</body>
</html>

 

posted on 2020-08-05 15:27  一路繁花似锦绣前程  阅读(1508)  评论(0编辑  收藏  举报