three.js - 与平面相交的任意网格(在 THREEJS 中)

标签 three.js webgl intersection mesh plane

目前是否可以在 THREEJS 中显示如下所示的网格和平面的交集:

以红色、绿色、黄色显示网格与带有纹理的背板的交集。

enter image description here

如果不是,最好的方法是:

  • 在 JavaScript 中计算网格和平面相交处的“线几何”,然后渲染它
  • 将自定义着色器 Material 应用于网格(将平面参数作为统一参数),仅在当前三角形与平面相交时才为像素着色

对于选项 #2,是否已经有一些此类着色器的在线演示?

谢谢,

尼古拉斯

最佳答案

=== 2022 年更新 ===

THREE-Mesh-BVH提供了创建轮廓的新的有效方法。这就是我目前的做法:

====

AMI 现在支持它 ( https://fnndsc.github.io/ami/#viewers_quadview )

步骤是:

  1. 显示网格与平面的交集

  2. 后处理交点以显示等高线。

显示网格/平面相交有不同的技术:

  1. 使用模板缓冲区 ( https://github.com/daign/clipping-with-caps )

  2. 播放网格不透明度 ( https://github.com/FNNDSC/ami/tree/dev/examples/viewers_quadview )

所有这些技术在计算上都是昂贵的,因为它需要 3 个渲染 channel 来显示 1 个网格的轮廓,可能有更好的方法但不确定什么是最好的选择。

HTH

关于three.js - 与平面相交的任意网格(在 THREEJS 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148437/

相关文章:

javascript - 纹理未加载到 webgl 中。从 2D Canvas 读取和操作,存储在数组中

javascript - WebGL:如何将值绑定(bind)到 mat4 属性?

canvas - KineticJS Container.getIntersections 非常慢

java - Java中两个字符串的交集

javascript - Three.js 根据坐标定位对象

javascript - Three.js - 获取镶嵌物体单个面的位置

javascript - Three.js WebGL 从着色器绘制圆形自定义填充和边框颜色

c# - 两个集合交集

javascript - Ashima Perlin 噪声着色器不适用于最新版本的 Three.JS

javascript - 三.JS给物体赋 Material Color