three.js TextureLoader(纹理加载附带demo) - 04

一、什么是纹理加载

纹理一般是指我们常见的在一些第三方程序中创建的图像,如Photoshop或GIMP。我们把这张图片放在立方体上。(我通常称为贴图)。我们需要做的就是创建一个TextureLoader。调用它的load方法,同时传入图像的URL,并将材质的 map 属性设置为该方法的返回值

1.属性介绍

属性描述
map我们需要做的就是创建一个TextureLoader。调用它的load方法,同时传入图像的URL,返回值就是map的属性
alphaMapalpha地图是一种灰度纹理,它控制着表面的不透明度(黑色:完全透明;白:完全不透明)。默认为null
color材料的颜色值,默认为白色
combine将材质表面颜色与环境贴图相结合,默认为THREE.Multiply,如果选择混合模式,则反射率是用来混合两种颜色的
envMap环境贴图,默认为null
lightMap灯光贴图,默认为null
lightMapIntensity灯光贴图的强度,默认为1
lights材料是否受到光线影响,默认为false
reflectivity反射率,表面对环境的影响程度,有效范围在0 - 1之间,默认为1
wireframe是否以线框模式呈现,默认为false

2.代码示例

//纹理加载 (注意load方法的参数为需要加载的素材路径)
 var texture = new THREE.TextureLoader().load('textures/crate.gif')
 //创建材质
 var material = new THREE.MeshBasicMaterial({
            map:texture
        })

二、纹理加载demo (注意素材位置)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    body{
        margin: 0;
        overflow: hidden;
    }
</style>
<script src="../../../../lib/three.js"></script>
<body>
<script>
    var camera ,scene, renderer; //声明相机、场景、渲染器
    var mesh; //声明网格对象
    init();
    animate();
    function init(){
        //生成透视投影相机并加入场景
        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight,0.1,1000);
        camera.position.z = 400;
        scene = new THREE.Scene();

        //纹理加载 (注意load方法的参数为需要加载的素材路径)
        var texture = new THREE.TextureLoader().load('textures/crate.gif')
        //创建立方缓冲几何体
        var geometry = new THREE.BoxBufferGeometry(150,150,150);
        //创建材质

            /*
        alphaMap	alpha地图是一种灰度纹理,它控制着表面的不透明度(黑色:完全透明;白:完全不透明)。默认为null。
        color	材料的颜色值,默认为白色
        combine	将材质表面颜色与环境贴图相结合,默认为THREE.Multiply,如果选择混合模式,则反射率是用来混合两种颜色的
        envMap	环境贴图,默认为null
        lightMap	灯光贴图,默认为null
        lightMapIntensity	灯光贴图的强度,默认为1
        lights	材料是否受到光线影响,默认为false
        map	贴图,默认为null
        reflectivity	反射率,表面对环境的影响程度,有效范围在0 - 1之间,默认为1
        wireframe	是否以线框模式呈现,默认为false
            * */
        var material = new THREE.MeshBasicMaterial({
            map:texture
        })

        //创建立方体对象
        mesh = new THREE.Mesh(geometry,material);
        scene.add(mesh);

        renderer = new THREE.WebGLRenderer({
            alpha:true,
            antialias:true
        })
        //设置渲染器背景颜色
        renderer.setClearColor("skyblue");
        //设置渲染器像素分辨值
        renderer.setPixelRatio(window.devicePixelRatio);
        //设置渲染器区域
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);
    }
    function animate(){
        requestAnimationFrame(animate);
        //做旋转
        mesh.rotation.x += 0.005;
        mesh.rotation.y += 0.01;
        renderer.render(scene,camera)
    }
</script>
</body>
</html>

三、demo效果

1.素材

在这里插入图片描述

2.代码效果

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与诸君共勉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值