<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>three.js从入门到精通系列教程040 - 绘制星空背景和运动星体</title>
    <script src="ThreeJS/three.js"></script>
    <script src="ThreeJS/jquery.js"></script>
</head>

<body>
    <center id="myContainer"></center>
    <script type="text/javascript">
        var myAspect = window.innerWidth / window.innerHeight;
        var myCamera, myScene, myRenderer, mySphereMesh;
        //创建渲染器
        myRenderer = new THREE.WebGLRenderer({ antialias: true });
        myRenderer.setSize(window.innerWidth, window.innerHeight);
        myRenderer.setClearColor('black', 1.0);
        $("#myContainer").append(myRenderer.domElement);
        myScene = new THREE.Scene();
        myCamera = new THREE.PerspectiveCamera(45, myAspect, 1, 5000);
        myCamera.position.z = 2500;
        //绘制绿色圆球
        mySphereMesh = new THREE.Mesh(new THREE.SphereBufferGeometry(300, 16, 8),
            new THREE.MeshBasicMaterial({ color: 'green', wireframe: true }));
        myScene.add(mySphereMesh);
        //绘制星空背景
        var myGeometry = new THREE.Geometry();
        for (var i = 0; i < 5000; i++) {
            var myVector3 = new THREE.Vector3();
            myVector3.x = THREE.Math.randFloatSpread(2000);
            myVector3.y = THREE.Math.randFloatSpread(2000);
            myVector3.z = THREE.Math.randFloatSpread(2000);
            myGeometry.vertices.push(myVector3);
        }
        var myPoints = new THREE.Points(myGeometry,
            new THREE.PointsMaterial({ color: 0xffffff }));
        myScene.add(myPoints);
        //渲染(旋转)绿色圆球
        animate();
        function animate() {
            requestAnimationFrame(animate);
            var r = Date.now() * 0.001;
            mySphereMesh.position.x = 900 * Math.cos(r);
            mySphereMesh.position.z = 900 * Math.sin(r);
            mySphereMesh.position.y = 900 * Math.sin(r);
            myRenderer.render(myScene, myCamera);
        }
    </script>
</body>

</html>

更多推荐