码迷,mamicode.com
首页 > Web开发 > 详细

three.js - (入门四)

时间:2018-01-08 13:33:16      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:cto   tle   images   geometry   hba   tcl   mes   jquery   入门   

好久没更新three.js 了,前三章了解了部分基础知识。这一章我们来搞点事情,做点有意思的东西。

效果如下图:

技术分享图片

因为截图是静止的,实际效果是地球在自转。

废话不多说,上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>erath - three.js</title>
    <script src="js/three.js"></script>
    <script src="js/jquery.min.js"></script>
</head>
<style>
    * {
        padding: 0px;
        margin: 0px;
    }
        html,body,.main {
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
</style>
<body>
    <div class="main"></div>
</body>
</html>
<script>
    function Three(className) {
        this.width = $(className).width();
        this.height = $(className).height();
        this.renderer =  new THREE.WebGLRenderer({
            antialias : true   //开启锯齿,默认是false
        });
        this.renderer.setSize(this.width, this.height); // 给渲染区域设置宽高
        this.renderer.setClearColor("white"); // 设置背景色
        $(className).append(this.renderer.domElement); 
    }
    Three.prototype = {
        init:function() {
            this.scence = new THREE.Scene();  // 创建舞台
            
            // 设置视角及参数
            this.camera = new THREE.PerspectiveCamera(45, this.width / this.height, 1, 10000);
            this.camera.position.set(0,0,10);
            this.camera.lookAt(new THREE.Vector3(0, 0, 0));

        // 设置灯光及参数
            this.light = new THREE.AmbientLight(0xDDDDDD);
            this.light.position.set(100, 100, 200);
            this.scence.add(this.light);

            // 创建角色
            var circle =  new THREE.SphereGeometry(755,50,50);
            var texture = new THREE.TextureLoader();
            
            var material = new THREE.MeshBasicMaterial();
            // 给circle添加背景图片
            material.map = texture.load("images/earth_atmos_4096.jpg",function(){
                three.renderer.render(three.scence, three.camera);
            });
            three.mesh = new THREE.Mesh(circle,material);
            three.mesh.position.set(0,0,-5000);
            three.scence.add(three.mesh);
        },
        animate:function() {
            requestAnimationFrame(three.animate);
            three.mesh.rotation.y += 0.01;
            three.renderer.render(three.scence, three.camera);
        },
        start:function() {
            this.init();
            this.animate();
        }
    }
    var three = new Three(".main");
    three.start();
</script>

这里我把地球图片上传上来,不然没有图片也无法加载。

技术分享图片

最后提醒大家一点,当有图片加载到three.js 时,需要在服务器端运行。不然也会报错。

今天的three.js 就讲到这里了,下次再会。

three.js - (入门四)

标签:cto   tle   images   geometry   hba   tcl   mes   jquery   入门   

原文地址:https://www.cnblogs.com/lafitewu/p/8241987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!