Android Camera 3D效果
一、概念
1、camera位于坐标点(0,0),也就是视图的左上角;
2、camera.translate(10,20,30)的意思是把观察物体右移10,上移20,向前移30(即让物体远离camera,这样物体将会变小);
3、camera.rotateX(45)的意思是绕X轴顺时针旋转45度。举例来说,如果物体中间线和X轴重合的话,绕X轴顺时针旋转45度就是指物体上半部分向里翻转,下半部分向外翻转;
4、camera.rotateY(45)的意思是绕Y轴顺时针旋转45度。举例来说,如果物体中间线和Y轴重合的话,绕Y轴顺时针旋转45度就是指物体左半部分向外翻转,右半部分向里翻转;
5、camera.rotateZ(45)的意思是绕Z轴逆时针旋转45度。举例来说,如果物体中间线和Z轴重合的话,绕Z轴顺时针旋转45度就是物体上半部分向左翻转,下半部分向右翻转。
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;public class Rotate3DAnimation extends Animation {// 3d rotateprivate float mFromDegrees;private float mToDegrees;private float mCenterX;private float mCenterY;private Camera mCamera;public Rotate3DAnimation(float fromDegrees, float toDegrees){mFromDegrees = fromDegrees;mToDegrees = toDegrees;}@Overridepublic void initialize(int width, int height, int parentWidth,int parentHeight){super.initialize(width, height, parentWidth, parentHeight);mCenterX = width / 2;mCenterY = height / 2;mCamera = new Camera();}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t){final float fromDegrees = mFromDegrees;float degrees = fromDegrees + (mToDegrees - mFromDegrees) * interpolatedTime;final Matrix matrix = t.getMatrix();mCamera.save();mCamera.rotateY(degrees);mCamera.getMatrix(matrix);mCamera.restore();//matrix.preTranslate(-mCenterX, -mCenterY);matrix.postTranslate(mCenterX, mCenterY);}
}
看代码,首先重载了initialize()方法,在里面初始化中间坐标mCenterX、mCenterY以及实例化Camera对象,initialize()是一个回调函数告诉Animation目标View的大小参数,在这里可以初始化一些相关的参数,例如设置动画持续时间、设置Interpolator、设置动画的参考点等。applyTransformation (float interpolatedTime, Transformation t)函数来实现自定义动画效果,在绘制动画的过程中会反复的调用applyTransformation 函数。通过参数Transformation 来获取变换的矩阵(matrix),final Matrix matrix = t.getMatrix(),通过改变矩阵就可以实现各种复杂的效果。Camera类是用来实现绕Y轴旋转后透视投影的,首先通过t.getMatrix()取得当前的矩阵,然后camera.rotateY对矩阵进行旋转。preTranslate函数是在旋转前移动而postTranslate是在旋转完成后移动,主要作用是让对象围绕自己的中心二旋转。
Android Camera 3D效果相关推荐
- android立体3D效果_Android实现八大行星绕太阳3D旋转效果
code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:史蒂芬诺夫斯基链接:https://www.jianshu.com/p/2954f2ef8ea5声明:本文已获史 ...
- android camera 3d特效 详解与进阶
1 概述 本篇主要讲解camera,这里的camera并不是照相相关的类,而是android.graphics.Camera,这个类中封装了一个matrix,不熟悉的同学可以看前面的文章来了解.and ...
- android立体3D效果_怀化400T吨龙门剪图纸3d模型_临沂1500T吨剪图纸原理图-皇宏液压...
皇宏液压为您详细解读yddYIm怀化400T龙门剪图纸3d模型的相关知识与详情, 接触过超影3D印刷的伴侣们,想必必然对陈某们有所理解,超影3D印刷服务商拥有强大的3D印刷经历的团队,不单正在3D ...
- android立体3D效果_谷歌裸眼3D动物意外蹿红,掀起一股AR体验小高潮
疫情在国外来势汹汹,越来越多人不得不长期待在家中.这个时候如果手指闲不住,不如试试在谷歌搜索中检索动物,就会有栩栩如生的 3D"动物"空降你家,而且其违和感已相较之前大大降低. 在 ...
- android 卡片3d效果_小米发布伸缩镜头技术:卡片机失业,多摄下岗?
11月5日消息,小米在今天的MIDC 2020小米开发者大会上,发布了自研的"伸缩式大光圈镜头技术".顾名思义,就是在手机上加入类似卡片相机的可伸缩镜头,从而达到多焦段的拍照效果, ...
- android立体3D效果_3D立体画手绘墙体彩绘
由于绘画表现形式的丰富多样,因此,墙体彩绘也不再仅仅局限于单调的平面图案效果,逼真的3D立体画作为墙体彩绘的一种表现形式,它呈现出来的逼真立体效果被广大时尚有个性的客户所追捧.它能给予人们强大的视觉冲 ...
- android立体3D效果_3D立体画,让你身临其境
墙绘的出现,让墙面看起来更加美观,也提升了整面墙的美感度.从最开始的宗教墙绘,到现在的社区文化墙,家装彩绘,工装墙绘等等,其中有个具有独立风格的墙绘,以其逼真的效果被大众所熟知,那就是3D立体画. ...
- android立体3D效果_PS教程:铝膜气球字制作的完整教程,3D立体效果字体的制作...
这一篇主要是用PS做一种3D立体字体效果,铝膜气球字体,当然学会之后,举一反三,可以做成其他图案的铝膜气球效果. 铝膜气球在目前的各种庆典,婚庆,庆贺宴席上,用的比较普遍:这个字体效果,后期可以用于室 ...
- android立体3D效果_3D全息投影和平面投影有什么区别_广州全息投影
随着时代的发展.科技的进步,3D全息投影已经融入到人们的日常生活当中,给人们带来全新的视觉体验,呈现亦真亦幻的虚拟影像世界,越来越多的行业肯定及选择全息投影技术.那么与传统的平面投影相比,3D全息投影 ...
最新文章
- 《预训练周刊》第7期:傅立叶图像变换器解析、阿里达摩院发布最大中文预训练语言模型PLUG
- numix Docky
- C++下关于XML开源库的使用
- cuda编程_CUDA编程入门(四)并行归约算法
- Log4j框架配置文件
- 基于哈夫曼编码完成的文件压缩及解压
- php域名墙检测,php 网站域名被墙判断请求方法
- KubeEdge 1.1 部署
- mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
- Python中字符串的连接
- 是逻辑运算符 java_跟我学java编程—Java逻辑运算符
- TTS Service Extended (进程:com.google.tts)意外停止 恢复被阉割的TTS文字转语音功能
- linux系统,清理缓冲池内存
- MFC windows程序设计(第三版)课后习题第二章
- LeetCode 661. Image Smoother
- 【软件技巧】Transmission跳过检验(跳检)方法,适用于全平台
- 谷歌浏览器Chrome 100即将发布,但可能无法正常使用?
- matlab矩阵转入tecplot,[转载]tecplot编辑自己想要的变量
- W3C标准英文文献翻译方案
- WordPress丨关于国内的个人头像无法获取问题以及解决方案