android camera 3d特效 详解与进阶

1 概述

本篇主要讲解camera,这里的camera并不是照相相关的类,而是android.graphics.Camera,这个类中封装了一个matrix,不熟悉的同学可以看前面的文章来了解。android matrix 最全方法详解与进阶(完整篇)

这里和前面的详解与进阶系列一致,我们依然是先挨个讲解camera提供的方法,然后再讲解他们的实际应用。在此之前,我们先讲一些背景知识。先来看一个坐标系:

这里写图片描述

在前面的matrix中我们讲到过,其实屏幕后方是一个三维坐标系,这个坐标系的y轴正方向是朝上的,z轴是朝里面的,屏幕像一个窗口,我们看到的是窗口外面的物体投射到窗口上的二维镜像。Camera实际上就像我们的眼睛,眼睛看到的是物体投射到窗口上的图形,其实这里就有3个要素,一是物体,二是窗子,三是眼睛,也就是物体,屏幕和camera。最终呈现在用户面前的是屏幕上的图形。影响物体投射到屏幕上的效果,可以移动物体(前面讲解的matrix),也可以移动眼睛(看下面的setLocation方法解析,会有详细讲解)。通过这些不同的操作,最终使得映射在屏幕上的图形不同,然后呈现给用户的也就不同了。

其实camera就是用一种我们很好理解的方式,来简化了图形的变换操作。

2 方法解析

(1) save与

相信在前面的canvas讲解中,大家对这两个方法的名称已经很熟悉了,其实这里的这两个方法跟canvas中基本相同,也是一个保存和恢复,也是成对使用。

(2) translate

public native void translate(float x, float y, float z);

看到translate就知道是平移,这里是沿着3个轴移动物体,经过概述中我们对坐标系的讲解,我们知道了有x,y,z三个坐标轴,所以,这里的参数也是有3个,分别对应了物体在x,y,z三个轴上移动。

但是如果指定了x,y同时也指定了z,那么最终的结果就是x,y移动的距离也会受z影响。

这里写图片描述

代码如下;

camera.translate(100, 0, 500);
camera.getMatrix(matrix);

canvas.translate(0,1000);
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值