1,介绍

该示例使用的是 r95版本Three.js库。

主要实现功能:引用模型进行展示,使用精灵Sprite作为标签,鼠标悬浮精灵上时变小手。

效果图如下:

2,主要说明

使用精灵Sprite作为标签,SpriteMaterial作为材质,使用精灵作为标签,就需要把精灵对象插入到父对象中,作为子对会随着父对象的位置变化而跟着变化,代码如下:

// 创建精灵函数,传入父对象
function createLableSprite_jcy(group) {var spriteMaterial = new THREE.SpriteMaterial({map: new THREE.TextureLoader().load("jingling.png"), //设置精灵纹理贴图transparent: true, //开启透明(纹理图片png有透明信息)});// 创建精灵模型对象,不需要几何体geometry参数var sprite = new THREE.Sprite(spriteMaterial);sprite.scale.set(3, 3, 3); //精灵大小// 把精灵模型插入到模型对象的父对象下面group.add(sprite);// 父对象group位置变化,网格模型及其对象的标签同样发生变化group.position.set(group.position.x, group.position.y, group.position.z);// 表示标签信息的精灵模型对象相对父对象设置一定的偏移sprite.translateY(600);mesh.push(sprite);return group;
}

鼠标悬浮精灵上时,鼠标变小手,利用鼠标移动的位置对应的屏幕坐标转化得到的世界坐标和相机的世界坐标两个参数创建一个射线对象Raycaster,判断射线与场景中的对象是否相交,返回相交的场景对象。

document.addEventListener('mousemove', onDocumentMouseMove, false);function onDocumentMouseMove(event) {// 点击屏幕创建一个向量var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);vector = vector.unproject(camera); // 将屏幕的坐标转换成三维场景中的坐标var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());// 计算射线和参数[meth]中的模型对象是否相交,参数数组中可以设置多个模型模型对象var intersects = raycaster.intersectObjects([meth], true);if (intersects.length > 0) {// 判断参数[boxMesh]中模型对象是否与射线相交intersects.forEach(function(e) {var obj = e.object;// 判断相交的是否是精灵对象并且是对应标签的名称,如果是鼠标变小手if (obj instanceof THREE.Sprite && obj.name.indexOf("shexiangtou") > -1) {document.body.style.cursor = "pointer";}})}else {document.body.style.cursor = "default";}
}

3,源码和模型

需要完整代码、模型或者其他源码,请进入博客首页查看其他文章或者留言

联系我微信:1171053128

Threejs使用精灵Sprite作为标签,鼠标悬浮精灵上时鼠变小手相关推荐

  1. 【Html】鼠标移动上去变色移动上去变小手

    "hover"意味着移动上去的变化,可以运用到菜单栏,甚至一些图片特效上. .menu_text {                                         ...

  2. java 鼠标变成手型_当鼠标放在按钮上时让指针变为手型

    附:cursor属性收集 光标类型   CSS 十字准心 cursor: crosshair; 手 cursor: pointer; cursor: hand; 写两个是为了照顾IE5,它只认hand ...

  3. CSS 让鼠标呈现手型,鼠标悬浮变小手

    CSS 让鼠标呈现手型,鼠标悬浮变小手 添加样式 cursor:pointer 就行了

  4. 前端:a 鼠标悬浮变小手

    作为一个java编程的小白,java还没学太明白,应工作要求,也要开始学习前端知识了,在此记录学到的知识点. 为<a>加样式,是鼠标悬浮变小手: cursor:pointer;   变小手 ...

  5. CSS3——鼠标变小手

    鼠标移上去变小手样式 第一种方式:为该元素添加a标签 <a href="javascript:video(0);"> </a> 第二种方式: 为该元素添加c ...

  6. 用css 添加手状样式,鼠标移上去变小手,变小手

    用css 添加手状样式,鼠标移上去变小手,变小手 cursor:pointer; 用JS使鼠标变小手onmouseover(鼠标越过的时候) onmouseover="this.style. ...

  7. 1-Vue中鼠标悬停变小手

    1.页面 <el-col :span="16"><div class="information-title">这是文字,鼠标可以悬停的文 ...

  8. Web前端鼠标变小手两种实现

    CSS实现方式: cursor:pointer;//鼠标变小手 js实现方式: <button id="abc"class="botton_qr_download& ...

  9. 鼠标指向变小手css,用css 添加手状样式,鼠标移上去变小手,变小手

    简介这篇文章主要介绍了用css 添加手状样式,鼠标移上去变小手,变小手以及相关的经验技巧,文章约1426字,浏览量431,点赞数1,值得参考! 用css 添加手状样式,鼠标移上去变小手,变小手 cur ...

最新文章

  1. 前端抱怨 API 响应慢,怎么办?
  2. CoordinatorLayout、AppBarLayout、Toolbar使用详解
  3. Spring中使用RedisTemplate操作Redis(spring-data-redis)
  4. java并发中CountDownLatch的使用
  5. 【彩彩只能变身队】后端工作总结
  6. mysql applier_MySQL推出Applier,可实时复制数据到Hadoop-阿里云开发者社区
  7. php根据设备判断访问,PHP判断设备访问来源
  8. mysql导入dat文件_mysql dat 导入数据库
  9. 第二单元总结——多线程设计
  10. Mac 系统SourceTree 配置VSCode代码对比工具
  11. 环洋市场调研-2021年全球Camlock联轴器行业调研及趋势分析报告
  12. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩 纹理映射技术 一
  13. nios自学笔记四:将sof和elf合并为JIC文件
  14. PCL学习笔记(20)——remove_outliers
  15. 目前有哪些好用的测试管理工具?
  16. 中文名称:(尼姆亚,熊猫烧香)
  17. 控制算法简析1——PID和负反馈的数学原理
  18. U 需要知道的反射知识 -- 大白话
  19. jooq从入门到精通(一)
  20. 北京工业大学计算机考研录取名单,2018年硕士研究生招生考试复试一志愿考生名单(信息学部)...

热门文章

  1. HTML5 Canvas实现贪吃蛇(二)
  2. 假期Python成长笔记(1)
  3. [数据仓库复习] —— 数据仓库实施步骤
  4. 车载测试ADAS-常用场景仿真软件
  5. 计算机的发展英语作文80,初中英语作文80词带翻译:计算机发展
  6. 在模型训练前为什么要把数据打包为.npy文件,和普通文件格式有什么区别?
  7. Broker存储机制详解
  8. 【微信小程序】课程表案例--0基础版
  9. HTML-input标签
  10. ViewState 安全初探