Ste*_*eph 5 javascript webgl three.js
第一次使用three.js,我正在做一个非常简单的粒子动画,其中我正在映射4种不同的纹理.到目前为止,一切都按预期工作,除了我无法弄清楚如何旋转粒子,使它们以随机方向呈现(颠倒,侧身等).任何帮助将不胜感激!
到目前为止,您可以在此处查看我的进展:http://development.shapes.divshot.io/particles.html
以下是相关代码:
sprite1 = THREE.ImageUtils.loadTexture( "sprite1.png" );
sprite2 = THREE.ImageUtils.loadTexture( "sprite2.png" );
sprite3 = THREE.ImageUtils.loadTexture( "sprite3.png" );
sprite4 = THREE.ImageUtils.loadTexture( "sprite4.png" );
parameters = [ sprite1, sprite2, sprite3, sprite4];
for ( i = 0; i < parameters.length; i ++ ) {
sprite = parameters[i];
materials[i] = new THREE.PointCloudMaterial( { size: 45, map: sprite, depthTest: false, transparent : true} );
particles = new THREE.PointCloud( geometry, materials[i] );
particles.rotation.x = Math.random() * 60;
particles.rotation.y = Math.random() * 60;
particles.rotation.z = Math.random() * 60;
scene.add( particles );
}
Run Code Online (Sandbox Code Playgroud)
使用three.js r71
AFAIK Three.js PointCloud/PointCloudMaterial 粒子系统用于gl.POINTS
绘制点。这意味着它有几个限制。
您无法旋转这些点。
如果您编写自定义着色器,则可以在片段着色器中旋转 UV 坐标,但如果您的图像填充了该点,则这将无济于事,因为在正方形内旋转正方形纹理会在旋转时剪切角。
您不能使点大于您所在的 GPU/驱动程序的最大点侧。
WebGL 仅要求最大大小 = 1.0,这意味着 GPU/驱动程序仅支持 1 像素大点。
查看webglstats.com,发现仅支持 1 像素大点的 GPU/驱动程序的数量已经变少。仍然有大约 5% 的机器仅支持 63 像素或更小的点,这只有在您飞过点场时才会成为问题。
你只能有平方点。
如果你想要像火花这样又长又细的东西,你就不能用矩形点。
一种解决方案是创建您自己的粒子系统,该系统使用四边形并可以旋转其顶点以及在多个方向上缩放它们。该示例完全在 GPU 上运行。不幸的是它不是基于 Three.js 的。
归档时间: |
|
查看次数: |
566 次 |
最近记录: |