javascript - 在 three.js 中计算 Wavefront Obj 文件的体积
问题描述
我有以下代码用于加载 Wavefront OBJ 文件:
var objLoader = new THREE.OBJLoader();
objLoader.load("../assets/Flywheel.obj", function (object) {
object.scale.set(30.5, 30.5, 30.5);
object.position.set(8, - 0.35, 1);
object.name = "obj";
scene.add(object);
});
如何计算这个 OBJ 的体积?我试图获取几何图形并使用以下代码进行计算:
function getVolume(geometry) {
let position = geometry.attributes.position;
let faces = position.count / 3;
let sum = 0;
let p1 = new THREE.Vector3(),
p2 = new THREE.Vector3(),
p3 = new THREE.Vector3();
for (let i = 0; i < faces; i++) {
p1.fromBufferAttribute(position, i * 3 + 0);
p2.fromBufferAttribute(position, i * 3 + 1);
p3.fromBufferAttribute(position, i * 3 + 2);
sum += signedVolumeOfTriangle(p1, p2, p3);
}
return sum;
}
function signedVolumeOfTriangle(p1, p2, p3) {
var p = p1.dot(p2.cross(p3)) / 6.0;
return p;
}
但这对我没有用。
解决方案
推荐阅读
- firebase - 有限数量的firestore数据查询
- c# - C#:列表排序与 leetCode 答案不同。如何得到他们想要的答案?
- javascript - Discord Embed 让我的代码停止工作?怎么了?
- python - 递归函数能够打印,但不返回正确的值
- flutter - 列表
不是类型转换中“字符串”类型的子类型 - flutter - 未处理的异常:使用不包含 Scaffold 的上下文调用 Scaffold.of()
- java - 我无法引用我活动中的内容,例如按钮和无线电组
- php - 多用户数据库结构
- json - 在 bash 中获取最后一个唯一的 JSON 输入
- javascript - 无法使用 useRef 挂钩使用先前的值。以前的值显示等于当前值