android倒影实现抖动的镜面效果

本例子在写的时候参照了网上的一个demo,在其基础上改的,具体出处找不到了,所以现在也没法附链接了
本文中可以参考注意积累的知识点如下:
1.将Drawable转换成BitMap
/**
* 将Drawable转化为Bitmap
* @param drawable
* @return
*/
public static Bitmap drawableToBitmap(Drawable drawable) {
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);
return bitmap;
}

2.将BitMap转换成Drawable
Drawable drawable = new BitmapDrawable(bitmap);

3.图片抖动时镜面效果的实现原理:
首先将原始图片的倒影绘画出来,注意不要与原始图片绘制到一张画布上;其次将两张图片布局在一起(上下布置);最后将原图与倒影都加上Animation,两个Animation效果相反。
demo参见附件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在three.js中实现水面倒影效果,可以使用three.js的渲染目标(RenderTarget)和镜面反射(Mirror)材质。 首先,需要创建一个渲染目标对象,用于渲染水面的倒影。这个渲染目标对象需要和场景中的相机和水面的位置对应。可以使用Three.js的WebGLRenderTarget类来创建一个渲染目标对象。 接下来,将水面的材质设置为镜面反射材质(MirrorMaterial)。这个材质需要一个反射贴图,可以使用上一步创建的渲染目标对象作为反射贴图。 最后,在渲染场景时,需要先渲染到渲染目标对象,再将渲染目标对象作为反射贴图应用到水面的材质上。 代码示例: ``` // 创建渲染目标对象 var mirrorRenderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight ); // 创建水面对象 var waterGeometry = new THREE.PlaneGeometry(1000, 1000); var waterMaterial = new THREE.MirrorMaterial({ color: 0x777777, envMap: mirrorRenderTarget.texture }); var water = new THREE.Mesh(waterGeometry, waterMaterial); water.rotation.x = -Math.PI / 2; scene.add(water); // 渲染场景到渲染目标对象 renderer.render(scene, mirrorCamera, mirrorRenderTarget); // 将渲染目标对象作为反射贴图应用到水面的材质上 waterMaterial.envMap = mirrorRenderTarget.texture; ``` 需要注意的是,这个方法只能实现静态的倒影效果,如果场景中有动态的物体,需要在每一帧重新渲染倒影

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值