black-hole.js是一款效果非常炫酷的模拟宇宙黑洞引力特效的js插件。该插件基于HTML5 canvas,使用WebGL、 glfx.js和 numeric.js 共同制作完成。其效果是在鼠标滑过图片时,鼠标附近区域形成黑洞空间效果,使它周围的空间坍缩,效果非常逼真。
该黑洞引力特效插件使用numeric.js来计算所需要的数值的微分方程解。numeric.js是一个包含有许多有用的数学公式的js库,关于该js库的信息可以参考Numeric官方文档,你还可以尝试在线使用numeric.js。插件中使用了numeric.dopri()
函数,该函数使用Dormand-Prince RK方法执行一个ODE(常微分方程)数值积分,这个函数将使用一个ODE并输出大量合适的ODE约束点序列,然后就可以绘制相应的点。
另外,该宇宙黑洞特效插件使用glfx.js来应用WebGL渲染黑洞引力的效果。glfx.js可以使我们非常容易的在2D图像上创建非常有意思的特效,如漩涡效果和胀形透镜效果等。这个黑洞效果使用GLSL着色器来创建。
使用方法
HTML结构
该插件使用一个<div>
作为canvas的占位容器即可。
<div id="canvas_placeholder"></div>
创建调用
调用该插件之前首先要引入必要的依赖文件。
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/numeric/1.2.6/numeric.js"></script> <script src="./black-hole.min.js"></script>
然后可以通过下面的方法来调用该黑洞特效插件。
<script> var corsOkImageUrl = 'https://s3-us-west-2.amazonaws.com/ccrosland-share-bucket/black-hole/milkyway.jpg'; BlackHole.blackHoleifyImage('canvas_placeholder', corsOkImageUrl) </script>
你也可以指定一些参数来改变黑洞引力效果。
<script> BlackHole.blackHoleifyImage(placeholderId, corsOkImageUrl, { distanceFromBlackHole: 70, // 80 is default polynomialDegree: 3, // 2 is default numAngleTableEntries: 2000, // 1000 is default. More might improve quality but impact performance fovAngleInDegrees: 60, // 73 is default. Yeah, it's an unusual choice, but it just looked cool, ok? }); </script>
更多关于该黑洞引力特效的制作方法请参考:http://cliffcrosland.tumblr.com/post/115981256393/black-hole-js