Flash Alternativa 3D引擎-基础理论

Flash Alternativa 3D引擎-基础理论

自由行走的花

网站设计,flash网站设计与动画制作,web,as3

2010-12-31 14:29

【转】Flash Alternativa 3D引擎-基础理论

《本文转载自:http://www.zcool.com.cn/article/ZMTEwMzY=.html》敬请阅读,不懂的地方可以在此交流!

 

一. Alternativa 三维坐标系

        在任何一个三维引擎中,都有自己的系统坐标系,对于Alternativa 3D也不例外。Alternativa 3D采用的是右手坐标系,绕轴旋转准侧也是采用 右手定则。(以后将Alternativa 3D 简写为A3D)

        坐标系:

A3D——>Flash Alternativa 3D引擎-基础理论          Flash 3D——>Flash Alternativa 3D引擎-基础理论

 

        与Flash中的坐标系的对比:

                两者X轴的方向一致,为水平向右;

                Y轴与Z轴截然不同;

                两者都采用右手坐标系。

        对于绕轴的旋转正方向:   Flash Alternativa 3D引擎-基础理论

分开来讲:

绕X轴旋转–>Flash Alternativa 3D引擎-基础理论,绕Y轴旋转–>Flash Alternativa 3D引擎-基础理论,绕Z轴旋转–>Flash Alternativa 3D引擎-基础理论

也就是说:用右手大拇指指向轴的方向,四指握拳的方向就只该轴旋转正方向。这也就是右手定则。

二. A3D 三维结构基础(重点)

Flash Alternativa 3D引擎-基础理论

        A3D 的三维结构如上图。在A3D中几个基础的要素为 Scene3D,View,Camera3D,Object3D与Material。

Scene3D:即 三维场景。在A3D中,Scene3D是一个基础的3D要素,也是一个三维模型存储的空间,用来储存三维模型,完成BSP树的建立,渲染机制等工作。但要 注意的是,Scene3D并不是一个Object3D显示对象,也就是说它并不继承自Object3D,只是Scene3D最重要的一个公共属性root 才是用来存放其他显示元素的Object3D对象。换句话说,Scene3D.root 才是通常意义上的三维场景。Scene3D不但拥有这个三维场景显示对象,同时还完成一些BSP树搭建,渲染,计算等工作。若想要你的三维模型 (Object3D对象)显示在场景中,就必需首先将这个模型放在场景中,即调用方 法:Scene3D.root.addChild(Object3D);另外还要讲Camera3D对象也放在同一个场景 中:Scene3D.root.addChild(Camera3D)。这里只给大家一个基本的原理与印象,后面我们将会实际的操作。

想要了解Scene3D的渲染机制与BSP树的建立,估计又要花很长时间,但是之一部分对于工程师而言,没有很大的了解意义。如果感兴趣的朋友可以去Alternativa3D的官方网站查找相关解释性的说明。

Camera3D:三 维摄像机。对于利用Camera来完成三维动画的想法,我一直觉得很是高明。想象一下,我们的眼睛就是摄像机。如果我们想观察一个物体的各个侧面,我么会 拿起手转动这个物体,然后观察。我们为何不换一种思路,把物体放在那,而眼镜(自己的头)绕着物体转呢?这也就是Camera3D的作用。不但我们可以控 制场景中物体的任意动画,我们也可以控制摄像机的不同位置与角度。想想CS,不就像是自己拿着摄像机在看一个三维世界吗?这样的设计更合理,也更具与人性 的特点。那如何来控制摄像机呢?在A3D中也为我们设计了一下特定的类,后面的教程中将会给大家介绍。同时,在3D中,摄像机必须与View(视窗),相 结合使用。那什么又是视窗呢?

View:视窗。我们来想想一下,你面前有个扇门,门上有一个正方形小 孔,你想通过小孔看看门后房子里是什么东西,而你和们之间有一段距离,就如上面的那张图。为了看得更全,你可以移动自己的眼镜(Camera3D),但 是,你能看见的范围却只有那个控那么大。这就是视窗View与摄像机Camera3D之间的关系。视窗是用来观察场景(Scene3D.root)空间的 一个窗口,所以视窗不用放在场景之中。

Object3D:三维对象。A3D中显示对象不再是Flash 中的DisplayObject,而是Object3D。不过Object3D与DisplayObject的属性差不多。可想而知,A3D中的所有显示 对象都继承自Object3D这个类。A3D同时也很周到的为我们建立了一些基础的三维模型,我们可以直接用,例如立方体Box,球体Sphere,圆柱 体Cone,平面Plan等。这些类都是继承自Object3D的。

Material:材质。用 Object3D建立的显示对象往往是看不见的,应为我们还要给每个三维对象贴一层皮,这层皮就是Materal,即材质。在A3D中为大家建立了一些基 本的材质类,例如纯色,线框等,另外还有一些高级的材质,如电影剪辑,外载贴图等,用户也可以建立自己的材质。在A3D中同时支持带有UV机制的外载贴 图。这使得我们对三维模型的建立变得更加简单,那为什么更加简单呢?这就必须要了解什么是UV。

*UV坐标

详细解释,请参见维基百科(英文):http://en.wikipedia.org/wiki/UV_mapping

Flash Alternativa 3D引擎-基础理论

        简单地说,UV展开就是讲一个三维模型的表面(三维坐标)展开成一个二维坐标(U坐标与V坐标)下的平面图。例如上面的例子,我们可以从三维;模型得到他 的UV图,并把它放在一个矩形中贴图(Texture贴图)。反过来,我们如果知道一个三维模型,还知道他的带有UV属性的贴图(Texture),我们 就可以重建这个三维模型。

三. 小结

        在这里写小结,说明这一章相当的关键。这是理解A3D与应用A3D的基础,对于没有接触过三维引擎的同学而言,这也是一个从整体上认识三维引擎结构的基 础。希望大家认真的理解,特别是我那个小孔观物的例子。现在只要记住这个例子中观察事物的原理与方法就可以了,后面我们将会以实例来说明,那是大家会更深 的理解的。

转载于:https://www.cnblogs.com/tanbq/p/3208866.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110072.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstrom2021激活码(JetBrains全家桶)

    (phpstrom2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    72
  • 设计模式-单例模式(Singleton)

    设计模式-单例模式(Singleton)

    2021年8月22日
    53
  • 手机app抓包

    手机app抓包总是收到公司部分客户特定机型,情况下才出现的bug此类问题较为难以复现需要客户协助进行抓包处理,写一个简单教程方便与客户沟通!app下载地址链接:https://pan.baidu.com/s/1M8x8DsTy0pcgnGyKEsJ_Ow提取码:cd4i1.安装抓包软件2.进入错误页面的上一个页面如果B页面是出错的页面,点击A(页面或者按钮)进入到B页面那么我们就打开A页面就可以了3.选择需要抓包的应用4.抓取操作信息5.如果错误信息比较多点击.

    2022年5月29日
    34
  • 小米刷原生android系统下载地址,小米6刷原生安卓8.0下载|小米6刷原生安卓p 免费版_附教程_最火软件站…

    小米刷原生android系统下载地址,小米6刷原生安卓8.0下载|小米6刷原生安卓p 免费版_附教程_最火软件站…小米6刷原生安卓系统是一款专门为小米6手机整理的刷机包,利用这款工具可以帮助小米6手机用户将自己的手机系统升级为原生安卓8.0、9.0等,让手机使用更加的方便,需要的用户快来最火网站下载吧!小米6刷原生安卓8.0简介小米6刷安卓9.0文件是为小米6用户提供的刷最新的安卓系统所需的文件,18年上线的安卓系统对于很多安卓粉丝来说还是很有吸引力的,如果你手上正好有一台小米6手机,可来下载这款文件来将自己…

    2022年6月19日
    32
  • Java中高级工程师面试题及答案,Java面试题及答案汇总(二

    Java中高级工程师面试题及答案,Java面试题及答案汇总(二需要注意Jdk1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)24.说一下HashSet的实现原理?HashSet底层由HashMap实现HashSet的值存放于HashMap的key上HashMap的value统一为PRESENT25.ArrayList和LinkedList的区别是什么?最明显的区别是ArrrayList底层的数据结构是数组,支持随机访问,而Linke

    2022年5月11日
    39
  • 美化包软件_美化桌面的软件

    美化包软件_美化桌面的软件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月31日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号