114. 精灵模型标注场景(贴图)

前面课程5.5小节讲解过一个例子,就是通过矩形平面Mesh + 贴图标注三维场景。

不过有些时候,你也可以通过Sprite+贴图标注三维场景。

你可以对比案例源码中矩形平面Mesh和Sprite标注三维场景差异。

大家根据需要选择Sprite或矩形Mesh标注场景,如果希望矩形始终平行于canvas画布,就选择Sprite,如果希望矩形标注姿态角度能跟着场景旋转,就使用矩形Mesh标注场景。

精灵模型设置颜色贴图.map

精灵材质对象SpriteMaterial和普通的网格材质一样具有颜色贴图.map、开启透明.transparent、透明度.opacity等属性。

javascript 复制代码
const texture = new THREE.TextureLoader().load("./光点.png");
const spriteMaterial = new THREE.SpriteMaterial({
  map: texture, //设置精灵纹理贴图
});

.transparent属性

网格材质.transparent属性默认是false,如果贴图是背景透明的png贴图,需要把.transparent设置为true,对于SpriteMaterial而言,.transparent默认是true。

javascript 复制代码
const spriteMaterial = new THREE.SpriteMaterial({
  transparent:true,//SpriteMaterial默认是true
});

.color与.map混合

如果.map是纯白色贴图,你可以通过设置.color,把精灵模型设置为其他任意颜色。一般来说美术把颜色贴图设置为合适的颜色,你就不用再设置.color。

javascript 复制代码
const spriteMaterial = new THREE.SpriteMaterial({
  color:0x00ffff,//设置颜色
  map: texture, //设置精灵纹理贴图
});

Sprite标注三维场景

需要在长方体网格模型的顶部中间添加一个Sprite标注。

javascript 复制代码
const geometry = new THREE.BoxGeometry(25, 100, 50);
geometry.translate(0, 50, 0);
// mesh顶部中心添加标注,顶部中心坐标是(0,100,0)
const mesh = new THREE.Mesh(geometry, material);

标注大小,根据场景渲染范围尺寸或者说要标注的物体的尺寸数量级,设置sprite的大小。不用具体,先设置一个大概值,只要和要标注的物体尺寸数量级相差不大即可,再根据需要缩放尺寸。

javascript 复制代码
sprite.scale.set(10, 10, 1);

根据标注位置,设置精灵模型在三维空间中的位置坐标,注意考虑模型对象的大小

javascript 复制代码
sprite.position.set(0, 100 + 10/2, 0);//设置位置,要考虑sprite尺寸影响
相关推荐
风骏时光牛马25 分钟前
大模型综合能力多维评测:性能、逻辑与落地表现对比
前端
liuchangng33 分钟前
React 19 + Vite 6 实战:从教材 PDF 到 866 词间隔重复单词 App
前端·react.js·pdf·vite·开源项目
暴走约伯33 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
Dwzun1 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
小码哥_常7 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮9 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀10 小时前
Vue插槽
前端·javascript·vue.js
qq_4480111610 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan11 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_9583529011 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块