javascript – 如何平滑地绘制线条的动画
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何平滑地绘制线条的动画,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2163字,纯文字阅读大概需要4分钟。
内容图文
我有大约40条曲线,它们都有30到200个点.我使用BufferGeometry和setDrawRange()同样绘制所有这些,但它仅对于> 200点的行是平滑的.我已经尝试过TWEEN.js,但在这种情况下它并不是一个好主意.有没有其他选择来实现它?
在虚幻引擎4中,可以通过在蒙版材质中设置不透明度并在每次刻度时更新它来解决此问题(我们有绘图效果).
如果您有任何想法,我想听听您是否可以尝试这样做.
最好的祝福.
解决方法:
通过使用LineDashedMaterial,您可以平滑地为线条绘制设置动画 – 即使该线条只包含几个点.
诀窍是只渲染一个破折号,并在动画循环中增加破折号的长度.
// geometry
var geometry = new THREE.BufferGeometry();
// attributes
numPoints = points.length;
var positions = new Float32Array( numPoints * 3 ); // 3 vertices per point
var colors = new Float32Array( numPoints * 3 ); // 3 channels per point
var lineDistances = new Float32Array( numPoints * 1 ); // 1 value per point
geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );
geometry.addAttribute( 'lineDistance', new THREE.BufferAttribute( lineDistances, 1 ) );
// populate
var color = new THREE.Color();
for ( var i = 0, index = 0, l = numPoints; i < l; i ++, index += 3 ) {
positions[ index ] = points[ i ].x;
positions[ index + 1 ] = points[ i ].y;
positions[ index + 2 ] = points[ i ].z;
color.setHSL( i / l, 1.0, 0.5 );
colors[ index ] = color.r;
colors[ index + 1 ] = color.g;
colors[ index + 2 ] = color.b;
if ( i > 0 ) {
lineDistances[ i ] = lineDistances[ i - 1 ] + points[ i - 1 ].distanceTo( points[ i ] );
}
}
lineLength = lineDistances[ numPoints - 1 ];
// material
var material = new THREE.LineDashedMaterial( {
vertexColors: THREE.VertexColors,
dashSize: 1, // to be updated in the render loop
gapSize: 1e10 // a big number, so only one dash is rendered
} );
// line
line = new THREE.Line( geometry, material );
scene.add( line );
然后,在动画循环中:
fraction = ( fraction + 0.001 ) % 1; // fraction in [ 0, 1 ]
line.material.dashSize = fraction * lineLength;
小提琴:http://jsfiddle.net/156yxd3L/
注意:您可以以任何方式计算线距.例如,您可以将距离标准化为总长度,因此到最后一个点的距离为1.然后,您可以将dashSize从0更改为1.
将此方法与this alternate method进行比较.
three.js r.84
内容总结
以上是互联网集市为您收集整理的javascript – 如何平滑地绘制线条的动画全部内容,希望文章能够帮你解决javascript – 如何平滑地绘制线条的动画所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。