我有一些变形目标正在工作:
https://jsfiddle.net/3wtwzuh3/2/(使用滑块控件查看变形)
但是,我希望能够访问变形后顶点的新位置。如果您在链接的示例中注意到,我正在显示立方体第一个顶点的 y 坐标,但它没有更新!
// This Y vertex doesn't seem to update!
elInfo.innerHTML = geometry.vertices[0].y;
是否有可能获得新职位?我尝试过设置各种标志,但没有成功。
Thanks!
请注意,此示例仅用于解决问题的目的,在我的实际项目中(我需要顶点数据!),它有点复杂。
变形在 GPU 上更新,而不是在 CPU 上更新。因此,如果你想知道新的顶点位置,你必须在 CPU 上进行与 GPU 相同的计算。
方法Mesh.raycast()
必须在 CPU 上进行光线投射计算,因此您可以参考该代码作为示例。
这里有一个simple您可以遵循的模式。您必须针对您的完整应用程序进行调整,因为此模式是硬连线的以匹配您的简单小提琴。
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
fiddle: https://jsfiddle.net/3wtwzuh3/3/
三.js r.75
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)