threejs加载3d模型 怎样控制鼠标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了threejs加载3d模型 怎样控制鼠标相关的知识,希望对你有一定的参考价值。

参考技术A

解决方案:

用raycaster这个类,例子:

Left to right: buffer geometry - geometry - indexed buffer geometry

参考技术B 可以通过绑定window的mousemove事件代理来执行

你所看见的模型点选都是通过canvas当中的坐标的判断算法来决定的

three.js 给模型添加标注

参考技术A 1. 需要有一个被选择的mesh,通过raycaster获取

2. 创建先和一个平面

3. 将线和标注的面放在获取的mesh上

var mouse =new THREE.Vector2();

var raycaster =new THREE.Raycaster();

mouse.x = (event.clientX / domElement.width) *2 -1;

mouse.y = -(event.clientY / domElement.height) *2 +1;

raycaster.setFromCamera(mouse, camera);

var intersects = raycaster.intersectObjects(scene.children, false); // 

selectedObject = intersects[0].object; // 被选中的标注对象

// 

var startP,endP;// 这里也是通过raycaster获取到的

var color = parameters.hasOwnProperty("color") ? parameters.color :0x0000ff;

 var lineMat =new THREE.LineBasicMaterial(

        "color": 0xff0000

);

var lineGeo =new THREE.Geometry();

lineGeo.vertices.push(startPos);

lineGeo.vertices.push(endPos);

var line =new THREE.Line(lineGeo, lineMat);

// 初始化一个sprite,这是一个始终面向相机的平面,

var sprite = new textSprite(这并不是一个构造函数,不想写那么多,自行去官网查看)

.......

sprite.scale.set(_spriteScale, _spriteScale, _spriteScale); // 设置的是sprite的大小

selectedObject.add(line); // 添加

line.worldToLocal(_endPos); // 设置点

sprite.position.copy(_endPos); // 设置sprite的位置

line.add(sprite); 添加并进行关联

注: sprite可以用于进行标注热点等操作,具体实现较为简单,同时因为也算是mesh,所以sprite可以设置texture,使用图片作为背景等,也可以把一个canvas,把需要的文字图片等都加入进来.

以上是关于threejs加载3d模型 怎样控制鼠标的主要内容,如果未能解决你的问题,请参考以下文章

threejs加载3d模型 怎样控制鼠标点击选中某个模型

在web端,three.js如何操作3d模型obj对象的子构件

threejs加载3d模型踩坑之路--入坑篇

three.js如何加载带材质的obj外部模型

three.js 给模型添加标注

three.js加载stl模型文件,怎么能让模型大小一致并居中