three.js-地球贴图-TextureLoader

纹理贴图

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>three.js webgl - cameras</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
        <!-- <link type="text/css" rel="stylesheet" href="main.css"> -->
        <style>
            body{
                padding: 0px;
                margin: 0px;
                font-size: 0px;
            }
            a {
                color: #08f;
            }
            b {
                color: lightgreen;
            }
        </style>
    </head>
    <body>
        <div id="info"></div>
    </body>
    <script type="module">

        import * as THREE from './js/three.module.js';

        import Stats from './js/stats.module.js';

        var SCREEN_WIDTH = window.innerWidth;
        var SCREEN_HEIGHT = window.innerHeight;
        var aspect = SCREEN_WIDTH / SCREEN_HEIGHT;

        var camera, scene, renderer;
        var container = document.getElementById('info');
        var pointLight,particles,mesh;

        init();
        function init() {
            sceneInit();
            cameraInit();
            initCube();
            renderInit();
            animate();
        }

        function sceneInit(){
            scene = new THREE.Scene();
        }

        function initCube(){var texturePainting = new THREE.TextureLoader().load( './image/earth.jpg' );
            var materialPainting = new THREE.MeshBasicMaterial( { color: 0xffffff, map: texturePainting } );

            mesh = new THREE.Mesh(
                new THREE.SphereBufferGeometry( 100, 42, 42 ),
                materialPainting
                // new THREE.MeshNormalMaterial( { flatShading: true } )
            );
            mesh.position.z = 1600;
           
            scene.add( mesh );
        }
        
       
        function cameraInit(){
            camera = new THREE.PerspectiveCamera( 50, aspect, 1, 10000 );
            camera.position.z = 2500;
            scene.add( camera );
        }
       

        function renderInit(){
            renderer = new THREE.WebGLRenderer( { antialias: true } );
            renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
            renderer.render( scene, camera );
            renderer.setClearColor(0xffffff);
            // renderer.clear();
            container.appendChild( renderer.domElement );
        }

        function animate() {
            requestAnimationFrame( animate );
            render();
        }
        
        function render(){
            mesh.rotation.x += 0.001;
            mesh.rotation.y -= 0.005;
            renderer.clear();
            renderer.render( scene, camera );
        }

    </script>
</html>
'./js/three.module.js'

直接从官网的example里面下载下来就行了。

文档: https://threejs.org/docs/index.html#api/en/loaders/TextureLoader

var texturePainting = new THREE.TextureLoader().load( './image/earth.jpg' );
var materialPainting = new THREE.MeshBasicMaterial( { color: 0xffffff, map: texturePainting } ); //基础材质

//上面两行是贴图材质的写法 mesh
= new THREE.Mesh( new THREE.SphereBufferGeometry( 100, 42, 42 ), materialPainting );

官方文档的demo还有一个异步的加载

var texture = new THREE.TextureLoader().load( 'textures/land_ocean_ice_cloud_2048.jpg' );

// immediately use the texture for material creation
var material = new THREE.MeshBasicMaterial( { map: texture } );

网上找的图片

猜你喜欢

转载自www.cnblogs.com/chenyi4/p/12420102.html