在three.js中概述一个3d对象

弯曲的

在许多视频游戏中,我看到一种模式,当您将鼠标悬停在对象上时,它将在对象的2D形式周围显示漂亮的渐变高光。我建立了一个相当基本的Three.js场景,其中包含一个球体

首先,我设置我的raycaster变量:

var projector = new THREE.Projector();
var mouse2D = new THREE.Vector2(0, 0);
var mouse3D = new THREE.Vector3(0, 0, 0);

然后我做一个raycaster函数

document.body.onmousemove = function highlightObject(event) {
    mouse3D.x = mouse2D.x = mouse2D.x = (event.clientX / window.innerWidth) * 2 - 1;
    mouse3D.y = mouse2D.y = mouse2D.y = -(event.clientY / window.innerHeight) * 2 + 1;
    mouse3D.z = 0.5;

    projector.unprojectVector(mouse3D, camera);
    var raycaster = new THREE.Raycaster(camera.position, mouse3D.sub(camera.position).normalize());
    var intersects = raycaster.intersectObject(mesh);
     if (intersects.length > 0) {
         var obj = intersects[0].object; //the object that was intersected
         rotate = false;
     } else {
         rotate = true;
     }
}

这将使我获得他们当前正在悬停的对象。现在,人们将如何实际上围绕对象绘制轮廓?

selvarajmas

您需要OutlinePass在编码中使用

init()函数内部创建OutlinePass

outlinePass = new THREE.OutlinePass(new THREE.Vector2(window.innerWidth, window.innerHeight), scene, camera);
composer.addPass( outlinePass );

然后设置选定对象的轮廓。

if (intersects.length > 0) {
    var obj = intersects[0].object; // the object that was intersected
    rotate = false;
    outlinePass.selectedObjects = obj;
} else {
    rotate = true;
}

看一下这个例子:https : //threejs.org/examples/?q=out#webgl_postprocessing_outline

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Three.js-如何计算两个3D位置之间的距离?

来自分类Dev

three.js 3d模型作为超链接

来自分类Dev

Three js 3D rotation

来自分类Dev

Three.js中的多种3D声音

来自分类Dev

使用THREE.js通过坐标自定义3D对象

来自分类Dev

Three.js 3D文字弯曲

来自分类Dev

Three.js从子对象中获取父对象(一个组)

来自分类Dev

初始加载时,在Three.JS Canvas中适合3D对象(Collada文件)

来自分类Dev

如何在three.js中确定相机视场的3D边界

来自分类Dev

如何在Three.JS中的一个BufferGeometry中合并两个BufferGeometries?

来自分类Dev

three.min.js:2 THREE.Object3D.add:对象不是THREE.Object3D的实例

来自分类Dev

THREE.js-仅在另一个对象前面时才渲染对象

来自分类Dev

如何在three.js中的3D对象上放置透明的颜色蒙版?

来自分类Dev

在THREE.js中绘制3d边界框

来自分类Dev

逐步“显示” Three.js中的3d对象-我这样做对吗?

来自分类Dev

three.js以相同的视角显示3d对象

来自分类Dev

在Three.js中链接3d对象

来自分类Dev

Three.js CSS3D渲染器-未捕获的TypeError:undefined不是一个函数

来自分类Dev

如何在WebGL和Three.js和Tween.js中创建一个不断增长的对象

来自分类Dev

如何使用three.js从随机点制作3D对象?

来自分类Dev

从子对象克隆旋转并将其分配给THREE.JS中另一父对象的另一个子对象

来自分类Dev

如何将图像转换为3D对象-three.js

来自分类Dev

拖动以更改Three.js场景中3D模型对象的位置

来自分类Dev

如何使用three.js将3d框放置在另一个3d框内?

来自分类Dev

从jsartoolkit和three.js创建3D环境

来自分类Dev

Three.js禁止向一个对象写入zbuffer

来自分类Dev

在按钮上旋转 3D 对象单击 Three.js

来自分类Dev

如何在three.js中从BufferGeometry绘制2D/3D网格

来自分类Dev

使用 Three.js 投射一个对象以启用鼠标单击事件

Related 相关文章

  1. 1

    Three.js-如何计算两个3D位置之间的距离?

  2. 2

    three.js 3d模型作为超链接

  3. 3

    Three js 3D rotation

  4. 4

    Three.js中的多种3D声音

  5. 5

    使用THREE.js通过坐标自定义3D对象

  6. 6

    Three.js 3D文字弯曲

  7. 7

    Three.js从子对象中获取父对象(一个组)

  8. 8

    初始加载时,在Three.JS Canvas中适合3D对象(Collada文件)

  9. 9

    如何在three.js中确定相机视场的3D边界

  10. 10

    如何在Three.JS中的一个BufferGeometry中合并两个BufferGeometries?

  11. 11

    three.min.js:2 THREE.Object3D.add:对象不是THREE.Object3D的实例

  12. 12

    THREE.js-仅在另一个对象前面时才渲染对象

  13. 13

    如何在three.js中的3D对象上放置透明的颜色蒙版?

  14. 14

    在THREE.js中绘制3d边界框

  15. 15

    逐步“显示” Three.js中的3d对象-我这样做对吗?

  16. 16

    three.js以相同的视角显示3d对象

  17. 17

    在Three.js中链接3d对象

  18. 18

    Three.js CSS3D渲染器-未捕获的TypeError:undefined不是一个函数

  19. 19

    如何在WebGL和Three.js和Tween.js中创建一个不断增长的对象

  20. 20

    如何使用three.js从随机点制作3D对象?

  21. 21

    从子对象克隆旋转并将其分配给THREE.JS中另一父对象的另一个子对象

  22. 22

    如何将图像转换为3D对象-three.js

  23. 23

    拖动以更改Three.js场景中3D模型对象的位置

  24. 24

    如何使用three.js将3d框放置在另一个3d框内?

  25. 25

    从jsartoolkit和three.js创建3D环境

  26. 26

    Three.js禁止向一个对象写入zbuffer

  27. 27

    在按钮上旋转 3D 对象单击 Three.js

  28. 28

    如何在three.js中从BufferGeometry绘制2D/3D网格

  29. 29

    使用 Three.js 投射一个对象以启用鼠标单击事件

热门标签

归档