javascript-Three.js:获取具有顶点变形目标的更新顶点

我有一些变形目标工作:

https://jsfiddle.net/3wtwzuh3/2/
(使用滑块控件查看变形)

但是,我希望能够在变形之后访问顶点的新位置.如果您在链接的示例中注意到,我正在显示多维数据集的第一个顶点的y坐标,并且它没有更新!

// This Y vertex doesn't seem to update!
   elInfo.innerHTML = geometry.vertices[0].y;

是否有可能获得新职位?我尝试设置各种标志,但没有运气.

谢谢!

请注意,此示例仅是出于问题的目的,在我的实际项目中(我需要顶点数据!),它有点复杂.

解决方法:

变形是在GPU而非CPU上更新的.因此,如果您想知道新的顶点位置,则必须在CPU上进行与GPU相同的计算.

Mesh.raycast()方法必须进行该计算才能在CPU上进行光线投射,因此您可以参考该代码作为示例.

这是您可以遵循的简单模式.您将不得不针对整个应用程序对此进行调整,因为此模式必须严格匹配您的简单提琴.

var morphTargets = mesh.geometry.morphTargets;
var morphInfluences = mesh.morphTargetInfluences;

var vA = new THREE.Vector3();
var tempA = new THREE.Vector3();

var fvA = geometry.vertices[ 0 ]; // the vertex to transform

for ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {

    var influence = morphInfluences[ t ];

    if ( influence === 0 ) continue;

    var targets = morphTargets[ t ].vertices;

    vA.addScaledVector( tempA.subVectors( targets[ 0 ], fvA ), influence ); // targets index must match vertex index

}

vA.add( fvA ); // the transformed value

小提琴:https://jsfiddle.net/3wtwzuh3/3/

three.js r.75

上一篇:java – 列出Vertx中所有已注册的路线


下一篇:python函数的传参引用