大多数Flash程序员想要接触3D项目的时候,应该都和我一样,最关心的是怎么造一座山,怎么在场景里显示流动的河水,或是怎么让模型动起来(奔跑,攻击,或是跳舞),又或是怎么才能给人物换装,怎么让人物装备武器.

但是,请相信我,下面我们所说到的这些名词,在教程真正开始之前,你必须得了解一下,或许它们粗浅的让你觉得根本不值一看,但如果你是一个入门者,能了解一些基础知识,它们终将在未来的某一天帮到你

我会尽量避免使用那些太专业不容易让人理解的词汇,如果哪位朋友觉得下面的内容不对,又或是说的不够,请告诉我,我会在将来不断的修改并完善这些内容,谢谢^^

Origin(原心,或称之为起始点) :
3D世界与物体的中心点,3D世界中的任何对象都会有一个Origin,不管是场景,3D模型,灯光,还是摄像机,它的所在位置是物体或场景的(0,0,0)坐标,你可能并不能在所有的3D引擎或3D软件(如3dMax)中看到它,但它却是真实存在并起着相应的作用的

Geometry(几何形状) :
在Away3D中,Geometry类其实就是一个数据对象,它被用来保存3D物体的基础数据,如顶点(vertices),法线(normals),UV数据,我们从外部加载进来的模型文件会被解析成一个Geometry实例并被保存在内存中

当然,我们也可以通过实例化一些Geometry的子类来创建一些基础的几何形状数据
PlaneGeometry        //平面
CubeGeometry        //方块
SphereGeometry        //球形
CylinderGeometry    //圆柱
CapsuleGeometry        //胶囊

Material(材质) :
我们也可以将它称之为贴图,基本的贴图分三种,颜色贴图,照片贴图和线框贴图(线框贴图仅针对于线框类型对象使用),我们还能为贴图设置透明度和灯光反射强度,以此来达到一些特殊效果

Mesh(网格) :
Mesh是一个容器,如果我们为它设置形状数据和贴图后,我们就可以在场景中看到它,它可以是一个方块,一个圆球,也可以是一个如汽车或楼房这样的复杂模型,当然,它也可以仅仅只是一个点,一根线条,或是一个平面,一切取决于它所包含的Geometry数据内容

UV:
U,V是贴图坐标的简称(它和3D模型的X, Y, Z轴是类似的),水平方向是U,垂直方向是V,通过这个二维平面的UV坐标系定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图.

Normals(法线):
法线并不是一种实体线,它是一条垂直于曲线上节点和表面切线方向上的虚拟线,使用正负值来表示和区别多边形上面和点的法向参数,并且只有法线为正值的点和面在场景中才可见,一般来说,由内部指向外部表示当前位置的法线为正向,如果将表面翻转,也就改变了法线的方向,如果你的模型不是双面显示的话,那么负法向的那一面将会在视力窗口中不可见,并且不可被渲染

Light(灯光):
我们生存的这个世界必须有光,不然就是漆黑一片...
3D世界中也一样,但不同的是,我们需要在3D世界中使用有限的几种灯光类型来模拟真实现世界中的大多数可见光源(像红外线这种不可见光源不在我们的讨论之列)

目前Away3D 4.0中提供两种光源
PointLight(点光源):这是最常用到的,我们可以用它来模拟太阳,月亮,或是台灯的灯炮
DirectionalLight(投射光源):好吧,这货可以用来模拟探照灯,或是月光透过窗户的效果

View3D(视口):
这是整个3D世界的入口,犹如透过一个窗口看世界,Away3D中View3D类就是这个窗口,你可以在Flash中同时添加多个View3D实例,就好像在一面墙上砸出多个窗户一样,每个View3D实例可以指向同一个Scene3D,也可以指向不同的Scene3D,但请记住,即使所有的View3D都指向同一个Scene3D实例,也会造成性能的下降,所以通常情况下,我们只使用一个View3D实例

Scene3D(场景):
Scene3D就是窗户外的风景,它在Flash的作用类似于Stage,所有的3D对象都需通过它来addChild,才能被显示出来,你也同样可以同时实例化多个Scene3D实例,但每个View3D每次只能被分配一个Scene3D

Camera3D(镜头):
我们前面说了窗户和风景,好吧,我承认这比喻有点老套,但想要看到这些内容,还需要你的眼睛,Camera3D就相当于你的眼睛,睛,如果移动Camera3D的坐标就相当于你的眼睛在移动,但....如果移动Scene3D里的物体坐标呢?.....那就说明那个物体在移动......= =!

  1. //范例:
  2. var view:View3D = new View3D();
  3. //View3D实例必须被添加到舞台上才能正确生效
  4. stage.addChild(view);
  5. //创建一个长宽高都为500的立方体数据
  6. var cubeGeometry:CubeGeometry = new CubeGeometry(500, 500, 500);
  7. //创建一个单色的贴图(材质)
  8. var cubeMaterial:ColorMaterial = new ColorMaterial(0xFF0000);
  9. //创建一个可视的Mesh对象,并设置形状数据和贴图
  10. var cubeMesh:Mesh = new Mesh(cubeGeometry, cubeMaterial);
  11. //将mesh添加到舞台上
  12. view.scene.addChild(cubeMesh);
  13. //移动风景中的物体
  14. cubemesh.z += 100;
  15. //移动镜头,或是说移动你的眼睛....
  16. view.camera.z = 100;

复制代码

ObjectContainer3D:
顺便提一下这个类,ObjectContainer3D类是Away3d中大多数3D可视对象的基类,
如果你想自己创建一个比较复杂的3D物体对象(如包含好几个Mesh的对象),可以通过继承它来实现自己的需要

------------------------------------------------
导读:

Away3D4.0入门教程--基础技巧
解答一些Away3D编程时常会遇见的疑问

Away3D4.0入门教程(1)--这个世界的基础
用尽量简单的方法讲解一些3D与Away3D方面的词汇含义

Away3D4.0入门教程(2)--那些贴图的Method
讲解一些常用的为贴图附加效果的Method类

Away3D4.0入门--高清汽车(1)
入门版本,适合刚Away3D的新手使用

Away3D4.0入门--高清汽车(2)
进阶版本,包括物理引擎与粒子效果的应用

[Away 3D] Away3D4.0入门教程(1)--这个世界的基础相关推荐

  1. Away3D4.0入门教程

    好吧,我知道有很多人不会有兴趣一点点把教程全看完,所以,我先在这帖子里集中发布一些基础的,但大家又非常关心的问题, 至于具体细节怎么实现,我会在以后的教程中慢慢完善,这里仅是为了提供给那些有一定动手能 ...

  2. 3D脚本 maxscript入门教程(6)

    3D脚本 maxscript入门教程(6) (2013-05-23 19:59:32) 转载▼ 标签: 建模 maxscript 3dmax it 分类: 脚本 * 这是伏羲先天八卦,乾1兑2离3震4 ...

  3. 3D脚本 maxscript入门教程(7)

    3D脚本 maxscript入门教程(7) (2013-05-23 19:59:40) 转载▼ 标签: it 分类: 脚本 --创建地面-- ground=plane length:300 width ...

  4. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

  5. pip更新失败_最全Tensorflow2.0 入门教程持续更新

    最全Tensorflow 2.0 入门教程持续更新: Doit:最全Tensorflow 2.0 入门教程持续更新​zhuanlan.zhihu.com 完整tensorflow2.0教程代码请看ht ...

  6. creo如何更改打开时显示方式_Creo4.0入门教程(3):设置工作目录和打开以及保存文件...

    原标题:Creo4.0入门教程(3):设置工作目录和打开以及保存文件 目标: 1.设置工作目录 2.文件的打开和保存 1.设置工作目录 工作目录是打开和保存文件的指定位置.通常默认工作目录为启动 Cr ...

  7. RxJava 2.0 入门教程

    RxJava 2.0 入门教程 RxJava 2.0 是来自NetFlix的开源java异步编程框架.和java 8 lambda表达式很接近,响应式编程的基本构建快是被观察对象(Observable ...

  8. c语言编程:vc++6.0入门教程及习题_百度文库,C语言编程:vc++6.0入门教程及习题.doc...

    C语言编程:vc++6.0入门教程及习题.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址 ...

  9. matlab 7.1教程pdf,MATLAB7[1].0入门教程.ppt

    <MATLAB7[1].0入门教程.ppt>由会员分享,可在线阅读,更多相关<MATLAB7[1].0入门教程.ppt(34页珍藏版)>请在人人文库网上搜索. 1.1/33,2 ...

最新文章

  1. 【视频】显示器固定参数struct fb_fix_screeninfo中char id[16]说明
  2. Linux平台下的内存泄漏检测
  3. 【例3.5】位数问题
  4. 锦州财经学校计算机系,锦州一职高与财经学校哪个好
  5. linux centos7 安装redis
  6. 理解什么是真正的架构,架构需要的几种思维?
  7. 2017蓝桥杯省赛---java---C---2(兴趣小组)
  8. Ajax post HTML 405,Web API Ajax POST向返回 405方法不允许_jquery_开发99编程知识库
  9. 如何安装python3.8.1_python3.8.1 安装
  10. 微信小程序-测试游戏生成六边多边形
  11. 190418每日一句
  12. php lamp架构,lamp架构搭建
  13. [Java,IDEA]连接oracle的关于oracle.jdbc.driver.OracleDriver一直驱动加载失败的原因
  14. 怎样的100位区块链开发者,入选这份严苛至极的特训名单?
  15. HCL_路由器_ISIS配置
  16. gitbook 插件 文章 TOC 目录
  17. DHCP服务器配置windows2016
  18. Textstudio 应用程序无法正常启动0xc000007b
  19. c语言动画让运动的小球停止,Flash怎么制作小球遇到障碍物后停止运动的动画?...
  20. 中国传统艺术服饰:云肩nbsp;服装设计

热门文章

  1. 【奥深智慧】华为云与本地IDC双活解决方案
  2. tracer王_跨界明星,从王天天到Tracer85车手,兴趣玩成专业的酷盖
  3. python 中的 turtle库 函数总结
  4. CYQ.Data V5 批量插入与批量更新示例
  5. 从CAN到CANOpen——准入门大全(一)
  6. Python爬虫攻略(1)使用Requests获取LOL游戏攻略
  7. 今年圣诞节给您的Memoji戴圣诞老人帽子
  8. 最新有收益的自媒体平台-优信新车伯乐号正式上线了!
  9. CATIA 2016开发环境的建立
  10. StyleGAN-NADA:CLIP引导的非对抗域自适应(Domain Adaptation)图像生成器