WebGl中文网学习three.js之纹理案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>纹理</title>
    <style>
        body {
            margin: 0px;
            background-color: #000;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <script src="../js/three.js"></script>
    <script>
        var camera, scene, renderer;
        var mesh;
        init();
        animate();
        function init() {
            renderer = new THREE.WebGLRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild(renderer.domElement);
            camera = new THREE.PerspectiveCamera(70, window.innerWidth /window.innerHeight, 1, 1000);
            camera.position.z = 400;
            scene = new THREE.Scene();

            var geometry = new THREE.PlaneGeometry(800, 500);
            var material;

            var loader = new THREE.TextureLoader();
            loader.load(
                '../textures/4.jpg',
                function (texture) {
                    var material = new THREE.MeshBasicMaterial({
                        map: texture
                    });
                    mesh = new THREE.Mesh(geometry, material);
                    scene.add(mesh);
                },
                function (xhr) {
                    console.log((xhr.loaded / xhr.total * 100) + '% loaded');
                },
                function (xhr) {

                }
            )

            window.addEventListener('resize', onWindowResize, false);
        }

        function onWindowResize(){
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
        }

        function animate() {
            requestAnimationFrame(animate);
            renderer.render(scene, camera);
        }
    </script>
</body>
</html>

在这里插入图片描述
纹理重复和环绕


<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <meta charset="utf-8">
    <style>
        body {
            margin: 0px;
            background-color: #FFFFFF;
            overflow: hidden;
        }
    </style>
</head>
<body>

<script src="../js/three.js"></script>
<script src="../js/dat.gui.js"></script>

<script>
    var camera, scene, renderer;
    var mesh;
    var texture;
    init();
    animate();
    function init() {
        renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(renderer.domElement);

        camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
        camera.position.z =400;
        scene = new THREE.Scene();

        var geometry = new THREE.PlaneGeometry(500, 300,1,1);

        texture = THREE.ImageUtils.loadTexture("../textures/2.jpg", null, function(t) {});

        var material = new THREE.MeshBasicMaterial({map: texture});
        var mesh = new THREE.Mesh(geometry, material);
        scene.add(mesh);

        window.addEventListener('resize', onWindowResize, false);
        createUI();

    }
    var para;
    function createUI() {
        var parameter = function() {
            this.repeat = 1;
            this.wrap = 1;
        };
        para = new parameter();
        var gui = new dat.GUI();
        gui.add(para, "repeat", 1,5).name("纹理重复");
        gui.add(para, "wrap", 1,3).name("纹理环绕").step(1);
    }
    function onWindowResize() {
        camera.aspect = window.innerWidth /window.innerHeight;
        camera.updateProjectionMatrix();
        renderer.setSize(window.innerWidth, window.innerHeight);
    }

    function animate() {
        change();
        requestAnimationFrame(animate);
        renderer.render(scene,camera);
    }
    function change() {
        texture.repeat.x = texture.repeat.y = para.repeat;
        if(para.wrap ==1) {
            texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
        }else if(para.wrap == 2) {
            texture.wrapS = texture.wrapT = THREE.ClampToEdgeWrapping;
        }else if(para.wrap ==  3) {
            texture.wrapS = texture.wrapT = THREE.MirroredRepeatWrapping;
        }
        texture.needsUpdate = true;
    }

</script>

</body>
</html>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值