javascript - 如何获得两个不同非索引缓冲几何的两个不同面之间的交集?
问题描述
如何与非索引缓冲区几何相交?我想检测两个不同的非索引缓冲几何的两个不同面之间的交集。我从每个面的中间设置光线,但光线投射器不适用于非索引几何体。
非常感谢!
我的代码
var box = new THREE.Mesh(geometry.toNonIndexed(), material);
var raycaster = new THREE.Raycaster();
var intersects = [];
var pos = box.geometry.attributes.position;
var ori = new THREE.Vector3();
var dir = new THREE.Vector3();
var a = new THREE.Vector3(),
b = new THREE.Vector3(),
c = new THREE.Vector3(),
tri = new THREE.Triangle();
var faces = pos.count / 3;
for (let i = 0; i < faces; i++) {
a.fromBufferAttribute(pos, i * 3 + 0);
b.fromBufferAttribute(pos, i * 3 + 1);
c.fromBufferAttribute(pos, i * 3 + 2);
tri.set(a, b, c);
tri.getMidpoint(ori);
tri.getNormal(dir)
// scene.add(new THREE.ArrowHelper(raycaster.ray.direction, raycaster.ray.origin, 30, 0xff0000));
raycaster.set(ori, dir);
intersects = raycaster.intersectObject(box, true);
if (intersects.length > 0) {
console.log(intersects[0]);
}
}
解决方案
推荐阅读
- python - 根据规范列表 conda 安装软件包
- python - ModuleNotFoundError:没有名为“botorch.utils.multi_objective”的模块
- r - 我不知道如何解决这个错误
- java - 解析 LocalDate 但得到 DateTimeParseException;dd-MMM-uuuu
- php - 使用“sulu_snippet_load_by_area”时的空片段
- android - 如何使用 navGraphHost 在片段中创建不同的操作栏。安卓
- javascript - WebdriverIO - 选择器中的 OR 逻辑运算符
- python - 无法在 PyTube 中显示进度条
- python - 使用 django 自定义过滤器进行迭代
- python - 如何从 python 套接字中读取整数?