【发布时间】:2021-10-02 15:18:09
【问题描述】:
注意:本题NOTHING与 Three.js 无关,只是 Tensorflow.js 和 Trigonometry。
我正在尝试通过旋转我的脸来旋转 Three.js 中的 3D 对象。我用这个code by akhirai560 在 X 和 Y 轴上旋转。:
function normal(vec) {
let norm = 0;
for (const v of vec) {
norm += v * v;
}
return Math.sqrt(norm);
}
function getHeadAnglesCos(keypoints) {
// Vertical (Y-Axis) Rotation
const faceVerticalCentralPoint = [
0,
(keypoints[10][1] + keypoints[152][1]) * 0.5,
(keypoints[10][2] + keypoints[152][2]) * 0.5,
];
const verticalAdjacent = keypoints[10][2] - faceVerticalCentralPoint[2];
const verticalOpposite = keypoints[10][1] - faceVerticalCentralPoint[1];
const verticalHypotenuse = normal([verticalAdjacent, verticalOpposite]);
const verticalCos = verticalAdjacent / verticalHypotenuse;
// Horizontal (X-Axis) Rotation
const faceHorizontalCentralPoint = [
(keypoints[226][0] + keypoints[446][0]) * 0.5,
0,
(keypoints[226][2] + keypoints[446][2]) * 0.5,
];
const horizontalAdjacent = keypoints[226][2] - faceHorizontalCentralPoint[2];
const horizontalOpposite = keypoints[226][0] - faceHorizontalCentralPoint[0];
const horizontalHypotenuse = normal([horizontalAdjacent, horizontalOpposite]);
const horizontalCos = horizontalAdjacent / horizontalHypotenuse;
return [horizontalCos, verticalCos];
}
它通过找到这些点的 cos (original image source) 来计算旋转:
我还想计算 Z 轴旋转的 cos。谢谢!
【问题讨论】:
-
如果你使用 ThreeJS 来建模人脸,为什么不直接使用 ThreeJS 来旋转网格呢?
-
@Trentium 这个问题与three.js无关,我不是在创建面部克隆。我只是用三角法计算面部的旋转。
标签: javascript trigonometry tensorflow.js