【原创】threejs实现一个全景地球

介绍

本demo实现一个旋转的全景地球,效果如下

技术分析

1.球体

2.球体表面贴图

实现

创建容器

<div id="container"></div>

引入js文件

<script src="js/three.min.js"></script>      
<script src="js/stats.min.js"></script>      
<script src="js/OrbitControls.js"></script>   

主体部分

            var container, stats;
            var camera, scene, renderer;
            var mesh;
            var controls;

            init();
            animate();

            function init() {
                container = document.getElementById( 'container' );
                //stats
                stats = new Stats();
                container.appendChild( stats.dom );
                //renderer
                renderer = new THREE.WebGLRenderer();
                renderer.setClearColor( 0xffffff );
                renderer.setSize( window.innerWidth, window.innerHeight );
                container.appendChild( renderer.domElement );
                //camera
                camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 2000 );
                camera.position.z = 500;
                //controller
                controls = new THREE.OrbitControls( camera, renderer.domElement );
                controls.addEventListener( 'change', render ); 
                //scene
                scene = new THREE.Scene();
                // earth
                
                var loader = new THREE.TextureLoader();
                loader.load( 'img/earth.jpg', function ( texture ) {
                    var geometry = new THREE.SphereGeometry( 200, 20, 20 );
                    var material = new THREE.MeshBasicMaterial( { map: texture, overdraw: 0.5 } );
                    mesh = new THREE.Mesh( geometry, material );
                    scene.add( mesh );
                } );
            }
            
            function animate() {
                requestAnimationFrame( animate );
                controls.update();
                render();
                stats.update();
            }

            function render() {
                camera.lookAt( scene.position );
                renderer.render( scene, camera );
            }

核心部分

                var loader = new THREE.TextureLoader();      //载入贴图
                loader.load( 'img/earth.jpg', function ( texture ) {
                    var geometry = new THREE.SphereGeometry( 200, 20, 20 );
                    var material = new THREE.MeshBasicMaterial( { map: texture, overdraw: 0.5 } );
                    mesh = new THREE.Mesh( geometry, material );
                    scene.add( mesh );
                } );

threejs api的链接:https://threejs.org/docs/index.html#Manual/Introduction/Creating_a_scene

线上效果:http://htmlpreview.github.io/?https://github.com/zimuqi/ThreeJSEarch/blob/master/earth.html

github上加载很慢 可以下载到底看看效果

 

转载于:https://www.cnblogs.com/zimuzimu/p/6256729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值