【ThreeJS基础教程-点线精灵篇】4.1 Sprite精灵

学习ThreeJS的捷径

本段内容会写在0篇以外所有的,本人所编写的Threejs教程中

对,学习ThreeJS有捷径
当你有哪个函数不懂的时候,第一时间去翻一翻文档
当你有哪个效果不会做的时候,第一时间去翻一翻所有的案例,也许就能找到你想要的效果
最重要的一点,就是,绝对不要怕问问题,越怕找找别人问题,你的问题就会被拖的越久

如果你确定要走WebGL/ThreeJS的开发者路线的话,以下行为可以让你更快的学习ThreeJS

  1. 没事就把所有的文档翻一遍,哪怕看不懂,也要留个印象,至少要知道Threejs有什么
  2. 没事多看看案例效果,当你记忆的案例效果足够多时,下次再遇到相似问题时,你就有可能第一时间来找对应的案例,能更快解决你自己的问题
  3. 上述案例不只是官网的案例,郭隆邦技术博客,跃焱邵隼,暮志未晚等站点均有不少优质案例,记得一并收藏
    http://www.yanhuangxueyuan.com/ 郭隆邦技术博客
    https://www.wellyyss.cn/ 跃焱邵隼
    http://www.wjceo.com/ 暮志未晚
    这三个站点是我最常逛的站点,推荐各位有事没事逛一下,看看他们的案例和写法思路,绝对没坏处

Sprite简介

sprite官方翻译为精灵,百度翻译也有雪碧小妖精之类的翻译,但是这些直接去理解是挺麻烦的,而且容易和隔壁的一些概念混淆

雪碧图,精灵图和sprite有点关系,但是千万别搞混了,图是图,元素是元素,sprite是一种元素而非一张图

在这里插入图片描述

在threejs中,sprite是指代这样的一类物体
在这里插入图片描述

sprite精灵官方文档地址

精灵的属性非常简单,一张图就可以截完
在这里插入图片描述

基本属性都继承自Object3D,它和mesh一样拥有material,而且必须是SpriteMaterial,同时它还具有一个2D的锚点,这个锚点决定精灵图的实际显示效果

SpriteMaterial 精灵材质简介

sprite有一个专属材质SpriteMaterial,但是这个材质非常的简单
在这里插入图片描述
简单到不用贴文档地址就能介绍完

大多数属性与前面的StandardMaterial相似,仅有几个独立属性可以拉出来讲讲

sizeAttenuation:由于精灵是2D的,所以我们可以对2d的这个元素,设置是否让它近大远小,这个就是允许它随着相机近大远小的配置,设置为false时,它将一直都是那么大
使用正交相机时不会产生任何近大远小的效果

rotation:精灵是一个2d元素,所以精灵具有一个rotation值,当你旋转了之后,精灵图就会随着旋转

创建精灵

本次案例使用的图片为 \three.js-master\examples\textures\sprite.png

    function addMesh(){

        let texture = new THREE.TextureLoader().load('./sprite.png'); //读取精灵图(其实就是一张png,jpg图片)

        //创建精灵材质
        let spriteMaterial = new THREE.SpriteMaterial({
            map:texture
        });

        //创建精灵
        let sprite = new THREE.Sprite(spriteMaterial);
        
        //将精灵添加到场景
        scene.add(sprite);
    }

在这里插入图片描述
可以看出,无论我们怎么旋转视角,它都是一个样子

在这里插入图片描述
用orbit的视角拉进拉远,我们会发现,这个精灵也会随着放大缩小

这个时候,我们就可以尝试一下上面提到的几个属性了

让精灵图始终保持指定大小

        //创建精灵材质
        let spriteMaterial = new THREE.SpriteMaterial({
            map:texture,
            sizeAttenuation:false
        });

        //创建精灵
        let sprite = new THREE.Sprite(spriteMaterial);

        sprite.scale.setScalar(0.1); // scale仅有x和y对sprite生效,scale.z对sprite无效

设置了sizeAttenuation我们发现,精灵不仅不会变大小了,而且还特别巨大,所以我们还要调整一下它的大小

在这里插入图片描述

移动精灵

超级简单,没啥说的

        sprite.position.z += 5;

在这里插入图片描述
值得注意的是
和mesh一样,position可以改变它的位置,但是,rotation对sprite是不生效的,这个就交给看文章的你去实验了

旋转精灵

        //创建精灵材质
        let spriteMaterial = new THREE.SpriteMaterial({
            map:texture,
            sizeAttenuation:false,
            rotation:Math.PI/2
        });

上面介绍了,想要旋转精灵,那么需要在sprite中旋转
在这里插入图片描述

我们还可以通过调整锚点来改变旋转效果

锚点为0,0
在这里插入图片描述
锚点为 0.5,0.5

在这里插入图片描述

结语

精灵是非常简单容易理解的一个元素,也是在threejs开发中用到的最多的元素之一,精灵的主要作用就是给场景添加一个2D元素,很适合用来做一些标签类型的物体
如数字孪生项目中,给大楼的上面加一个标志,然后贴一张带文字的贴图,告诉用户这栋大楼是什么这样的。。。

关于精灵,就介绍到这里了,下一篇我们会对同样始终面朝屏幕的 Points做介绍

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对整threeJS体系进行全面剖析。整理出全面的教学大纲,涵盖内容面非常广。此教学版本为threeJS107版本。关于版本不建议大家使用低于90的版本学习。以下是课程目录1-ThreeJS概览(基本图形简介,什么是点线面如何绘制点线面,什么是材质,什么是几何体,什么是相机,什么是渲染器,什么是场景)2-相机和渲染器(详解相机类型,渲染器如何使用,针对不同场景怎么用,怎么调效果,怎么渲染,怎么输出画布,如何解决透明问题等等)3-创建平面几何(常见的几何体如何使用,如何使用简单的几何体绘制出自定义自己想要的几何体,关于几何体的性能剖析,如何解决性能,几何体的渲染原理)4-高级图形算法常见库(求直线的斜率  计算线段与圆的交点 计算线段的长度 判断折线是否在多边形内 等等)5-sprite精灵(怎么让一个图标永远朝向屏幕,精灵的属性,精灵材质原理等,广告提示框必用)6-骨骼游戏动画(什么是模型动画,常见游戏案例,如何让人头进行各种攻击动作)7-3d模型加载(常见模型格式,如何渲染不同格式,不同格式的特点,什么格式性能优越,模型渲染异常,贴图不显示等问题详解)8-高阶动态纹理(你所不知道的纹理用法,我说你不知道,你肯定不知道)9-漫游轨迹以及其动画路径(怎么绘制贝塞尔曲线,如何使用曲线上的路径,跟随路径移动的原理,相机如何运动,物体如何运动)10-着色器(什么是着色器。初识着色器基础,着色器材质怎么用,怎么使用着色器库)11-常见渲染以及透明度问题12-对象拾取以及拖拽(3d世界里面如何拖拽物体,拖拽的原理,mousemove mouseon等的事件效果)13-世界坐标以及组的问题(什么是相对坐标,什么是世界坐标,什么是当前坐标,怎么转化父子坐标系,组的优化,为什么用组,组的优势)14-指定对象旋转中心(什么是物体的几何体中心,如何改变中心,如何绕轴转动)15-层级对象渲染(多个场景一键切换,切换的优势,针对大项目的用法)16-拓展了解系列(不定期不断更新案例,各种酷炫效果bloom,halo等,以及各种3d图表,粒子案例等,不断构建你的3d实践能力)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值