我试图使用动画标签在a-frame
中为三角形的单个顶点动画,并且有一些奇怪的结果
在一种情况下,如果我尝试按照我的期望进行动画,请更改x,y,z
值这样的值...
<a-triangle
vertex-a="-1 1 -5"
vertex-b="-1 1 -10"
vertex-c="4 1 -10"
color="blue"
material="side: double">
<a-animation
attribute="vertex-b"
from="-1 1 -10"
to="-1 5 -10"
dur="4000"
>
</a-animation>
</a-triangle>
小提琴https://jsfiddle.net/k7fbmo9k/
...我收到以下错误
'trix.buffergeometry.computeboundingsphere():计算半径是 南。"位置"属性可能具有NAN值。'
但是,如果我只提供这样的值。
<a-triangle
vertex-a="-1 1 -5"
vertex-b="-1 1 -10"
vertex-c="4 1 -10"
color="blue"
material="side: double">
<a-animation
attribute="vertex-b"
from="1"
to="5"
dur="4000"
>
</a-animation>
</a-triangle>
小提琴https://jsfiddle.net/k7fbmo9k/1/
..似乎'work'没有任何错误,但我无法控制它。
我做错了吗?
感谢您的任何建议
我有解决方案。使用动画组件https://www.npmjs.com/package/aframe-animation-compongent顶点将如预期的那样动画。请参阅下面的示例
<a-triangle
vertex-a="-1 1 -5"
vertex-b="-1 1 -10"
vertex-c="4 1 -10"
color="blue"
material="side: double"
animation="property: vertex-b; to: -1 5 -10; dur: 1000">
</a-triangle>
尝试attribute="geometry.vertexB"
。它可能不起作用以使原始属性动画,因此我们直接对几何组件进行动画。
否则,如果您足够舒适,最好以更高级的级别为顶点进行动画效果。您可以使用顶点着色器。
,也可以手动操纵顶点:
var geometry = triangleEl.getObject3D('mesh').geometry;
geometry.attributes.position[0] += 0.1;
geometry.attributes.position[1] += 0.1;
geometry.attributes.position[2] += 0.1;
geometry.attributes.position.needsUpdate = true;
和动画,在tick处理程序中进行:
AFRAME.registerComponent('animate-vertex', {
tick: function (t) {
// Animate vertex position until desired position using `t` to interpolate time.
}
});