Matrix3D 类使用一个 4x4 正方形矩阵,即一个由四行和四列数字构成的表,其中容纳了用于转换的数据。矩阵的前三行容纳每个 3D 轴 (x,y,z) 的数据。平移信息位于最后一列中。方向和缩放数据位于前三个列中。缩放因子是位于前三个列中的对角数字。以下是 Matrix3D 元素的表示形式:
空间中的某个点(x,y,z)的任何移动,旋转,缩放的变换,都是用这个点乘以某个一个矩阵而得到。那么模型是由一个个(x,y,z)的点组成,模型整个要变换,就是让每个点乘以某个矩阵。这个我们在《三维成像基本原理里》提到过。
这是三维引擎开发,和引擎代码阅读的必备的基础常识。
Flash3d的引擎里给我们提供了很丰富的运算类。(详细我们在《pv3d, sandy, away3d的三维数学运算类》介绍)
由于(x,y,z)乘以3*3矩阵可以达到旋转和缩放的目的,但是无法表示移动,所以为了统一,我们通常是采用乘以一个4行4列的矩阵。我们flash3d的引擎也都是为我们准备的4*4/4*3矩阵有关的算法。也就是说所有变换方法,都是用如下公式:
变换后点的(x’,y’,z’)=原来的(x,y,z) 乘以 4*4矩阵M
如果使用pv3d的数学类,写法如下:
var 点:number3D=new Number3D(x的值,y的值,z的值); //原来的点
var 数组:Array=[n11,n12,n13, 0,
n21,n22,n23, 0,
n31,n32,n33, 0,
nx , ny, nz, 1]; //构造矩阵内每个值,需要一个数组,我们通常都是以这种格式书写
var 矩阵: Matrix3D=new Matrix3D(数组); //构造矩阵
Matrix3D.multiplyVector4x4(矩阵,点); //点的x,y,z数据直接就更新为相乘后的数据了。
那么具体是用哪个矩阵M呢?下面我们就列出来:
(本教程的公式图,来自Skyman君的博客http://www.cnblogs.com/skyman/)
旋转
旋转在三维里应该是最麻烦的东西,因为人类对旋转的描述是很有限。光靠矩阵控制旋转很多情况是非常复杂和不形象的,所以我们还发明了优拉角和四元数这些对旋转的控制更优良的办法,这些我们以后会讲到。
角度θ表示的是延某轴旋转的角度。
下面三个矩阵分别表示了点绕x轴,y轴,z轴的旋转矩阵。
移动
从公式我们很容易能看出,第4行1,2,3列的数,分别控制着点在x,y,z方向上的移动。
缩放
从公式我们很容易能看出,对角线上的n11,n22,n33,分别控制着点在x,y,z方向上的缩放。
这些就是最简单的变换矩阵,熟悉了这些,我们就又向前迈进了一步。
图形学应该是一个很有趣的东西,并非像很多学校和学生教授的的那种痛苦不堪的东西。其实道理非常简单,如果自己再具备一点编程知识,很容易就能做出自己的成像程序。
分享到:
相关推荐
AS3中的Matrix类是ActionScript 3.0中的一个核心组件,主要用于图形的二维变换,如缩放、旋转、平移等。Matrix类通过六个属性a、b、c、d、tx、ty来控制这些变换。 1. **属性解析**: - **tx (Number)** 和 **ty ...
在AS3中,摄像机并不是一个实际的对象,而是通过Matrix3D类来模拟的。Matrix3D类是一个4x4的矩阵,用于处理3D变换,如旋转、缩放和平移。摄像机的移动和旋转可以通过改变Matrix3D的属性来实现,从而改变场景的视图。...
在这个3D菜单项目中,开发者可能使用了DisplayObject容器,如Sprite或MovieClip,以及Matrix3D类来创建3D旋转和平移效果。 1. **DisplayObject和Container**:在AS3中,所有的可视元素都是DisplayObject实例,它们...
"flash_as3_sk"标签暗示这是针对Adobe Flash平台的AS3代码。在Flash中,Skew操作可以应用于MovieClip、Sprite等显示对象,通过调整它们的transform属性,创建出各种复杂的动画效果。 压缩包中的"Skew.as"文件很可能...
1. **Matrix3D类**:这是AS3中处理3D变换的核心类,可以进行旋转、缩放、平移等操作。通过Matrix3D对象,开发者可以创建复杂的3D坐标变换。 2. **DisplayObject的transform属性**:每个显示对象都有一个transform...
适用于EaselJS的Matrix3D 用于EaselJS的Matrix3D向EaselJS中添加了类似Matrix3D类的AS3。 如果需要,可以将 。例1 var m1 = new createjs.Matrix3D();console.log(m1.toString()); // [Matrix3D [1,0,0,0,0,1,0,0,0,...
然后,开发者可以使用Matrix3D类来处理3D变换,包括平移、旋转和缩放。例如,通过改变Matrix3D的元素,可以实现立方体围绕任意轴旋转的效果。 在AS3中,3D渲染涉及的关键概念还包括: 1. **透视投影**:模拟真实...
2. **矩阵变换**:使用Matrix3D对象进行旋转、平移和缩放,将2D图像转换为3D空间中的位置。 3. **视图和投影**:确定用户在3D空间中看到的内容,这通常涉及到相机视角的设置和3D物体的投影到2D屏幕的过程。 4. **...
2. **Matrix3D类**:AS3中的Matrix3D类是处理3D变换的核心,它可以表示3D变换矩阵,包括旋转、平移和缩放。 3. **DisplayObject的transform属性**:DisplayObject类的transform属性允许我们应用3D变换。通过设置...
通过使用Matrix3D类,开发者可以实现物体的旋转、缩放和移动,构建出立体空间中的各种动态效果。此外,引擎还可能包含了纹理映射、光照模型、多边形建模等3D图形学关键元素,这些技术共同构建出逼真的3D场景。3D环绕...
开发者可能利用了Matrix3D类来实现旋转、平移和缩放等3D变换,创建出螺旋状的图片布局。 3. **显示对象和显示列表**:在AS3中,DisplayObject类是所有可视元素的基类,如MovieClip和Sprite。开发者可能通过创建多个...
在AS3中,开发者可能使用了Matrix3D类来处理3D变换,如旋转、缩放和平移。Matrix3D类提供了丰富的函数,如rotateX()、rotateY()和rotateZ(),用于实现围绕各个轴的旋转。为了实现齿轮的旋转效果,开发者需要精确计算...
AS3提供了强大的数学函数和类,如Matrix和Point,用于进行坐标变换、旋转、缩放和裁剪等操作。通过学习这些概念,开发者可以创建出更为复杂和精细的视觉效果。 过滤显示对象是Flash的一大亮点,它允许开发者对舞台...
- 当用户点击左右按钮时,计算出旋转角度,更新Matrix3D对象,并应用到3D对象的transform.matrix3D属性上,实现照片墙的动态旋转。 4. **事件监听与响应**: - 添加鼠标点击事件监听器,根据用户点击的方向(左或...
这个3D数组形状为(2, 2, 3),意味着它有2个“行”(或“层”),每个“行”内有2个“列”,每个“列”包含3个元素。 NumPy中的3D数学函数涵盖加法、减法、乘法、除法等基本操作,以及更复杂的数学运算,如矩阵乘法...
2. **Flash 3D API**:掌握Flash中的3D API,如`flash.geom.Matrix3D`用于3D矩阵变换,`flash.display.Sprite`作为3D容器,以及`flash.display.BitmapData`用于3D图像处理。 3. **3D渲染**:了解如何在Flash舞台上...
总的来说,AS3 3D翻转效果的实现需要对3D图形理论有深入理解,熟练掌握Matrix3D的使用,并熟悉动画控制。通过不断地实践和优化,我们可以创造出令人惊叹的3D视觉体验。如果你对AS3 3D编程感兴趣,那么“Flip-Planes-...
3. **Matrix3D类**:在AS3中,Matrix3D类是实现3D变换的核心,包括旋转、平移、缩放等。通过设置Matrix3D对象的各个元素,可以构建复杂的3D变换矩阵。 4. **旋转函数**:Matrix3D提供了rotateX(), rotateY()和...
此外,还可以利用矩阵(Matrix3D)进行变换操作。 通过以上步骤,你可以创建一个交互式的图片画廊,利用XML文件来管理和加载图片,同时展示出令人惊叹的3D效果。这个技术对于开发动态的、富媒体的Web应用非常有用,...
3. **3D缩放**:修改`matrix3D`的前三个元素(即尺度向量)可以实现沿X、Y、Z轴的缩放。 此外,3D效果还可以与其他Flash特性结合使用,如遮罩、滤镜和动作事件,以增加交互性和复杂性。例如,使用3D旋转和遮罩可以...